1: | <?php |
2: | |
3: | |
4: | |
5: | |
6: | |
7: | |
8: | namespace Aurora\System; |
9: | |
10: | |
11: | |
12: | |
13: | |
14: | |
15: | |
16: | |
17: | class Settings extends AbstractSettings |
18: | { |
19: | protected function initDefaults() |
20: | { |
21: | $this->aContainer = array( |
22: | 'LicenseKey' => new SettingsProperty('LicenseKey', '', 'string'), |
23: | |
24: | 'AdminLogin' => new SettingsProperty('AdminLogin', 'superadmin', 'string'), |
25: | 'AdminPassword' => new SettingsProperty('AdminPassword', '', 'string'), |
26: | 'AdminLanguage' => new SettingsProperty('AdminLanguage', 'English', 'string'), |
27: | |
28: | 'DBType' => new SettingsProperty('DBType', Enums\DbType::MySQL, 'spec', '\Aurora\System\Enums\DbType'), |
29: | 'DBPrefix' => new SettingsProperty('DBPrefix', 'au_', 'string'), |
30: | 'DBHost' => new SettingsProperty('DBHost', '127.0.0.1', 'string'), |
31: | 'DBName' => new SettingsProperty('DBName', '', 'string'), |
32: | 'DBLogin' => new SettingsProperty('DBLogin', 'root', 'string'), |
33: | 'DBPassword' => new SettingsProperty('DBPassword', '', 'string'), |
34: | |
35: | 'UseSlaveConnection' => new SettingsProperty('UseSlaveConnection', false, 'bool'), |
36: | 'DBSlaveHost' => new SettingsProperty('DBSlaveHost', '127.0.0.1', 'string'), |
37: | 'DBSlaveName' => new SettingsProperty('DBSlaveName', '', 'string'), |
38: | 'DBSlaveLogin' => new SettingsProperty('DBSlaveLogin', 'root', 'string'), |
39: | 'DBSlavePassword' => new SettingsProperty('DBSlavePassword', '', 'string'), |
40: | 'DBUseExplain' => new SettingsProperty('DBUseExplain', false, 'bool'), |
41: | 'DBUseExplainExtended' => new SettingsProperty('DBUseExplainExtended', false, 'bool'), |
42: | 'DBLogQueryParams' => new SettingsProperty('DBLogQueryParams', false, 'bool'), |
43: | 'DBDebugBacktraceLimit' => new SettingsProperty('DBDebugBacktraceLimit', false, 'bool'), |
44: | |
45: | 'EnableLogging' => new SettingsProperty('EnableLogging', false, 'bool'), |
46: | 'EnableEventLogging' => new SettingsProperty('EnableEventLogging', false, 'bool'), |
47: | 'LoggingLevel' => new SettingsProperty('LoggingLevel', Enums\LogLevel::Full, 'spec', '\Aurora\System\Enums\LogLevel'), |
48: | 'LogFileName' => new SettingsProperty('LogFileName', 'log-{Y-m-d}.txt', 'string'), |
49: | 'LogCustomFullPath' => new SettingsProperty('LogCustomFullPath', '', 'string'), |
50: | 'LogPostView' => new SettingsProperty('LogPostView', false, 'bool'), |
51: | |
52: | 'EnableMultiChannel' => new SettingsProperty('EnableMultiChannel', false, 'bool'), |
53: | 'EnableMultiTenant' => new SettingsProperty('EnableMultiTenant', false, 'bool'), |
54: | 'TenantGlobalCapa' => new SettingsProperty('TenantGlobalCapa', '', 'string'), |
55: | |
56: | 'AllowThumbnail' => new SettingsProperty('AllowThumbnail', true, 'bool'), |
57: | 'ThumbnailMaxFileSizeMb' => new SettingsProperty('ThumbnailMaxFileSizeMb', 5, 'int'), |
58: | 'CacheCtrl' => new SettingsProperty('CacheCtrl', true, 'bool'), |
59: | 'CacheLangs' => new SettingsProperty('CacheLangs', true, 'bool'), |
60: | 'CacheTemplates' => new SettingsProperty('CacheTemplates', true, 'bool'), |
61: | 'DisplayServerErrorInformation' => new SettingsProperty('DisplayServerErrorInformation', true, 'bool'), |
62: | 'EnableImap4PlainAuth' => new SettingsProperty('EnableImap4PlainAuth', false, 'bool'), |
63: | 'RedirectToHttps' => new SettingsProperty('RedirectToHttps', false, 'bool'), |
64: | 'SocketConnectTimeoutSeconds' => new SettingsProperty('SocketConnectTimeoutSeconds', 20, 'int'), |
65: | 'SocketGetTimeoutSeconds' => new SettingsProperty('SocketGetTimeoutSeconds', 20, 'int'), |
66: | 'SocketVerifySsl' => new SettingsProperty('SocketVerifySsl', false, 'bool'), |
67: | 'UseAppMinJs' => new SettingsProperty('UseAppMinJs', true, 'bool'), |
68: | 'XFrameOptions' => new SettingsProperty('XFrameOptions', '', 'string'), |
69: | 'RemoveOldLogs' => new SettingsProperty('RemoveOldLogs', true, 'bool'), |
70: | 'LogStackTrace' => new SettingsProperty('LogStackTrace', false, 'bool'), |
71: | 'ExpireUserSessionsBeforeTimestamp' => new SettingsProperty('ExpireUserSessionsBeforeTimestamp', 0, 'int'), |
72: | |
73: | 'PasswordMinLength' => new SettingsProperty('PasswordMinLength', 0, 'int'), |
74: | 'PasswordMustBeComplex' => new SettingsProperty('PasswordMustBeComplex', false, 'bool'), |
75: | |
76: | 'StoreAuthTokenInDB' => new SettingsProperty('StoreAuthTokenInDB', false, 'bool'), |
77: | 'AuthTokenExpirationLifetimeDays' => new SettingsProperty('AuthTokenExpirationLifetimeDays', 0, 'int'), |
78: | ); |
79: | } |
80: | |
81: | |
82: | |
83: | |
84: | public function Load($bForceLoad = false) |
85: | { |
86: | $this->initDefaults(); |
87: | if (!\file_exists($this->sPath)) { |
88: | $this->Save(); |
89: | } |
90: | |
91: | return parent::Load($bForceLoad); |
92: | } |
93: | |
94: | public function SyncConfigs() |
95: | { |
96: | $this->initDefaults(); |
97: | $aContainer = $this->aContainer; |
98: | if (!\file_exists($this->sPath)) { |
99: | $this->Save(); |
100: | } |
101: | parent::Load(true); |
102: | $this->aContainer = \array_merge($aContainer, $this->aContainer); |
103: | $this->Save(); |
104: | } |
105: | } |
106: | |