78 lines
2.3 KiB
PHP
78 lines
2.3 KiB
PHP
|
<?php
|
||
|
|
||
|
use PicoFarad\Router;
|
||
|
use PicoFarad\Response;
|
||
|
use PicoFarad\Request;
|
||
|
use PicoFarad\Session;
|
||
|
use PicoTools\Template;
|
||
|
|
||
|
// Re-generate tokens
|
||
|
Router\get_action('generate-tokens', function() {
|
||
|
|
||
|
Model\Config\new_tokens();
|
||
|
Response\redirect('?action=config#api');
|
||
|
});
|
||
|
|
||
|
// Optimize the database manually
|
||
|
Router\get_action('optimize-db', function() {
|
||
|
|
||
|
\PicoTools\singleton('db')->getConnection()->exec('VACUUM');
|
||
|
Response\redirect('?action=config');
|
||
|
});
|
||
|
|
||
|
// Download the compressed database
|
||
|
Router\get_action('download-db', function() {
|
||
|
|
||
|
Response\force_download('db.sqlite.gz');
|
||
|
Response\binary(gzencode(file_get_contents(DB_FILENAME)));
|
||
|
});
|
||
|
|
||
|
// Display preferences page
|
||
|
Router\get_action('config', function() {
|
||
|
|
||
|
Response\html(Template\layout('config', array(
|
||
|
'errors' => array(),
|
||
|
'values' => Model\Config\get_all(),
|
||
|
'db_size' => filesize(DB_FILENAME),
|
||
|
'languages' => Model\Config\get_languages(),
|
||
|
'autoflush_options' => Model\Config\get_autoflush_options(),
|
||
|
'paging_options' => Model\Config\get_paging_options(),
|
||
|
'theme_options' => Model\Config\get_themes(),
|
||
|
'sorting_options' => Model\Config\get_sorting_directions(),
|
||
|
'menu' => 'config',
|
||
|
'title' => t('Preferences')
|
||
|
)));
|
||
|
});
|
||
|
|
||
|
// Update preferences
|
||
|
Router\post_action('config', function() {
|
||
|
|
||
|
$values = Request\values() + array('nocontent' => 0);
|
||
|
list($valid, $errors) = Model\Config\validate_modification($values);
|
||
|
|
||
|
if ($valid) {
|
||
|
|
||
|
if (Model\Config\save($values)) {
|
||
|
Session\flash(t('Your preferences are updated.'));
|
||
|
}
|
||
|
else {
|
||
|
Session\flash_error(t('Unable to update your preferences.'));
|
||
|
}
|
||
|
|
||
|
Response\redirect('?action=config');
|
||
|
}
|
||
|
|
||
|
Response\html(Template\layout('config', array(
|
||
|
'errors' => $errors,
|
||
|
'values' => $values,
|
||
|
'db_size' => filesize(DB_FILENAME),
|
||
|
'languages' => Model\Config\get_languages(),
|
||
|
'autoflush_options' => Model\Config\get_autoflush_options(),
|
||
|
'paging_options' => Model\Config\get_paging_options(),
|
||
|
'theme_options' => Model\Config\get_themes(),
|
||
|
'sorting_options' => Model\Config\get_sorting_directions(),
|
||
|
'menu' => 'config',
|
||
|
'title' => t('Preferences')
|
||
|
)));
|
||
|
});
|