|
<?php |
|
|
|
namespace Kanboard\Model; |
|
|
|
use Kanboard\Core\Security\Token; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ConfigModel extends SettingModel |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function get($name, $default_value = '') |
|
{ |
|
$options = $this->memoryCache->proxy($this, 'getAll'); |
|
return isset($options[$name]) && $options[$name] !== '' ? $options[$name] : $default_value; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function optimizeDatabase() |
|
{ |
|
return $this->db->getConnection()->exec('VACUUM'); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function downloadDatabase() |
|
{ |
|
return gzencode(file_get_contents(DB_FILENAME)); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function uploadDatabase($file) |
|
{ |
|
$this->db->closeConnection(); |
|
return file_put_contents(DB_FILENAME, gzdecode(file_get_contents($file))) !== false; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getDatabaseSize() |
|
{ |
|
return DB_DRIVER === 'sqlite' ? filesize(DB_FILENAME) : 0; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getDatabaseOptions() |
|
{ |
|
if (DB_DRIVER === 'sqlite') { |
|
return [ |
|
'journal_mode' => $this->db->getConnection()->query('PRAGMA journal_mode')->fetchColumn(), |
|
'wal_autocheckpoint' => $this->db->getConnection()->query('PRAGMA wal_autocheckpoint')->fetchColumn(), |
|
'synchronous' => $this->db->getConnection()->query('PRAGMA synchronous')->fetchColumn(), |
|
'busy_timeout' => $this->db->getConnection()->query('PRAGMA busy_timeout')->fetchColumn(), |
|
]; |
|
} |
|
|
|
return []; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function regenerateToken($option) |
|
{ |
|
return $this->save(array($option => Token::getToken())); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function prepare(array $values) |
|
{ |
|
if (! empty($values['application_url']) && substr($values['application_url'], -1) !== '/') { |
|
$values['application_url'] = $values['application_url'].'/'; |
|
} |
|
|
|
return $values; |
|
} |
|
} |
|
|