Changeset 895 for trunk/Packages/Common
- Timestamp:
- Jan 12, 2021, 10:29:50 PM (4 years ago)
- Location:
- trunk/Packages/Common
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Packages/Common/AppModule.php
r894 r895 32 32 const Running = 5; 33 33 const NotRunning = 6; 34 const System = 7; 35 const User = 8; 34 36 } 35 37 … … 55 57 public $OnChange; 56 58 public array $Models; 59 public bool $SystemModule; 57 60 58 61 function __construct(Application $System) … … 71 74 $this->Type = ModuleType::Normal; 72 75 $this->Models = array(); 76 $this->SystemModule = false; 73 77 } 74 78 … … 84 88 $this->Manager->EnumDependenciesCascade($this, $List, array(ModuleCondition::NotInstalled)); 85 89 $this->Manager->Perform($List, array(ModuleAction::Install), array(ModuleCondition::NotInstalled)); 90 $this->DoBeforeInstall(); 86 91 $this->InstallModels(); 87 92 $this->DoInstall(); 88 93 $this->Installed = true; 94 $this->Enabled = true; // Automatically enable installed module 89 95 $this->InstalledVersion = $this->Version; 90 96 $this->Manager->Modules[$this->Name] = $this; … … 101 107 $this->DoUninstall(); 102 108 $this->UninstallModels(); 109 $this->DoAfterUninstall(); 103 110 } 104 111 … … 175 182 } 176 183 184 protected function DoBeforeInstall(): void 185 { 186 } 187 177 188 protected function DoInstall(): void 178 189 { … … 183 194 } 184 195 185 protected function DoUpgrade(): void 186 { 196 protected function DoAfterUninstall(): void 197 { 198 } 199 200 protected function DoUpgrade(): string 201 { 202 return ''; 187 203 } 188 204 … … 194 210 function InstallModels(): void 195 211 { 196 foreach ($this->GetModels() as $Model) 197 { 198 $this->InstallModel($Model::GetDesc()); 212 if ($this->Manager->OnInstallModel != null) 213 { 214 foreach ($this->GetModels() as $Model) 215 { 216 call_user_func($this->Manager->OnInstallModel, $Model::GetDesc()); 217 } 199 218 } 200 219 } … … 202 221 function UninstallModels(): void 203 222 { 204 foreach (array_reverse($this->GetModels()) as $Model) 205 { 206 $this->UninstallModel($Model::GetDesc()); 207 } 208 } 209 210 function InstallModel(ModelDesc $ModelDesc) 211 { 212 $Query = "CREATE TABLE IF NOT EXISTS `".$ModelDesc->Name."` (\n"; 213 $Query .= ' `'.$ModelDesc->PrimaryKey.'` int(11) NOT NULL AUTO_INCREMENT,'."\n"; 214 foreach ($ModelDesc->Columns as $Column) 215 { 216 $Query .= " `".$Column->Name."` "; 217 if ($Column->Type == ModelColumnType::Integer) $Query .= 'int(11)'; 218 else if ($Column->Type == ModelColumnType::String) $Query .= 'varchar(255)'; 219 else if ($Column->Type == ModelColumnType::Float) $Query .= 'varchar(255)'; 220 else if ($Column->Type == ModelColumnType::Text) $Query .= 'text'; 221 else if ($Column->Type == ModelColumnType::DateTime) $Query .= 'datetime'; 222 else if ($Column->Type == ModelColumnType::Reference) $Query .= 'int(11)'; 223 else if ($Column->Type == ModelColumnType::Boolean) $Query .= 'tinyint(1)'; 224 else if ($Column->Type == ModelColumnType::Date) $Query .= 'date'; 225 else if ($Column->Type == ModelColumnType::BigInt) $Query .= 'bigint(20)'; 226 else if ($Column->Type == ModelColumnType::Enum) 227 { 228 $Query .= 'enum("'.implode('", "', $Column->States).'")'; 229 } 230 231 if ($Column->Nullable) $Query .= ''; 232 else $Query .= ' NOT NULL'; 233 234 $Query .= ' COLLATE utf8_general_ci'; 235 236 if ($Column->HasDefault) 237 { 238 if ($Column->Default == null) 239 $Query .= ' DEFAULT NULL'; 240 $Query .= ' DEFAULT '.$Column->GetDefault(); 241 } 242 $Query .= ",\n"; 243 } 244 $Query .= ' PRIMARY KEY (`'.$ModelDesc->PrimaryKey.'`)'; 245 foreach ($ModelDesc->Columns as $Column) 246 { 247 if ($Column->Type == ModelColumnType::Reference) 248 $Query .= ','."\n".' KEY `'.$Column->Name.'` (`'.$Column->Name.'`)'; 249 else if ($Column->Unique) 250 $Query .= ','."\n".' UNIQUE KEY `'.$Column->Name.'` (`'.$Column->Name.'`)'; 251 } 252 $Query .= "\n"; 253 254 if ($ModelDesc->Memory) $Engine = 'MEMORY'; 255 else $Engine = 'InnoDB'; 256 $Query .= ') ENGINE='.$Engine.' DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'; 257 $I = 1; 258 foreach ($ModelDesc->Columns as $Column) 259 { 260 if ($Column->Type == ModelColumnType::Reference) 261 $Query .= "ALTER TABLE `".$ModelDesc->Name."` ". 262 "ADD CONSTRAINT `".$ModelDesc->Name."_ibfk_".$I."` FOREIGN KEY (`".$Column->Name."`) REFERENCES `".$Column->RefTable."` (`Id`);"; 263 $I++; 264 } 265 $this->Database->query($Query); 266 } 267 268 function UninstallModel(ModelDesc $ModelDesc) 269 { 270 $this->Database->query('DROP TABLE IF EXISTS `'.$ModelDesc->Name.'`'); 223 if ($this->Manager->OnUninstallModel != null) 224 { 225 foreach (array_reverse($this->GetModels()) as $Model) 226 { 227 call_user_func($this->Manager->OnUninstallModel, $Model::GetDesc()); 228 } 229 } 271 230 } 272 231 } … … 280 239 public string $ModulesDir; 281 240 public $OnLoadModules; 241 public $OnInstallModel; 242 public $OnUninstsallModel; 282 243 283 244 function __construct(System $System) … … 287 248 $this->FileName = dirname(__FILE__).'/../../Config/ModulesConfig.php'; 288 249 $this->ModulesDir = dirname(__FILE__).'/../../Modules'; 250 $this->OnInstallModel = null; 251 $this->OnUninstallModel = null; 289 252 } 290 253 291 254 function Perform(array $List, array $Actions, array $Conditions = array(ModuleCondition::All)): void 292 255 { 293 foreach ($List as $ Index => $Module)256 foreach ($List as $Module) 294 257 { 295 258 if (in_array(ModuleCondition::All, $Conditions) or … … 299 262 (!$Module->Installed and in_array(ModuleCondition::NotInstalled, $Conditions)) or 300 263 ($Module->Enabled and in_array(ModuleCondition::Enabled, $Conditions)) or 301 (!$Module->Enabled and in_array(ModuleCondition::NotEnabled, $Conditions))) 264 (!$Module->Enabled and in_array(ModuleCondition::NotEnabled, $Conditions)) or 265 ($Module->SystemModule and in_array(ModuleCondition::System, $Conditions)) or 266 (!$Module->SystemModule and in_array(ModuleCondition::User, $Conditions))) 302 267 { 303 268 foreach ($Actions as $Action) … … 328 293 (!$DepModule->Enabled and in_array(ModuleCondition::NotEnabled, $Conditions)) or 329 294 ($DepModule->Installed and in_array(ModuleCondition::Installed, $Conditions)) or 330 (!$DepModule->Installed and in_array(ModuleCondition::NotInstalled, $Conditions))) 295 (!$DepModule->Installed and in_array(ModuleCondition::NotInstalled, $Conditions)) or 296 ($DepModule->SystemModule and in_array(ModuleCondition::System, $Conditions)) or 297 (!$DepModule->SystemModule and in_array(ModuleCondition::User, $Conditions))) 331 298 { 332 299 array_push($List, $DepModule); … … 347 314 (!$RefModule->Enabled and in_array(ModuleCondition::NotEnabled, $Conditions)) or 348 315 ($RefModule->Installed and in_array(ModuleCondition::Installed, $Conditions)) or 349 (!$RefModule->Installed and in_array(ModuleCondition::NotInstalled, $Conditions)))) 350 { 316 (!$RefModule->Installed and in_array(ModuleCondition::NotInstalled, $Conditions)) or 317 ($RefModule->SystemModule and in_array(ModuleCondition::System, $Conditions)) or 318 (!$RefModule->SystemModule and in_array(ModuleCondition::User, $Conditions)))) 319 { 351 320 array_push($List, $RefModule); 352 321 $this->EnumSuperiorDependenciesCascade($RefModule, $List, $Conditions); … … 357 326 function Start(): void 358 327 { 359 $this->LoadModules(); 360 if (file_exists($this->FileName)) $this->LoadState(); 361 $this->StartEnabled(); 328 $ModuleSetup = $this->LoadModule(dirname(__FILE__).'/Setup.php'); 329 $this->LoadState(); 330 if (!$ModuleSetup->Installed) 331 { 332 $ModuleSetup->Install(); 333 $this->SaveState(); 334 } 335 $ModuleSetup->Start(); 336 if (ModuleSetup::Cast($ModuleSetup)->CheckState()) 337 { 338 $this->LoadModules(); 339 if (file_exists($this->FileName)) $this->LoadState(); 340 $this->InstallSystem(); 341 $this->StartSystem(); 342 $this->StartEnabled(); 343 } 362 344 } 363 345 … … 370 352 { 371 353 $this->Perform($this->Modules, array(ModuleAction::Start), array(ModuleCondition::Enabled)); 354 } 355 356 function StartSystem(): void 357 { 358 $this->Perform($this->Modules, array(ModuleAction::Start), array(ModuleCondition::System)); 372 359 } 373 360 … … 383 370 } 384 371 372 function InstallSystem(): void 373 { 374 $this->Perform($this->Modules, array(ModuleAction::Install), array(ModuleCondition::System)); 375 $this->SaveState(); 376 } 377 385 378 function UninstallAll(): void 386 379 { … … 425 418 foreach ($this->Modules as $Module) 426 419 { 427 //DebugLog($Module->Name.' '.$Module->Id);428 420 if ($Module->Id == $Id) return $Module->Name; 429 421 } … … 452 444 foreach ($this->Modules as $Module) 453 445 { 454 $Data[] = array('Name' => $Module->Name, 'Enabled' => $Module->Enabled, 455 'Version' => $Module->Version, 'Installed' => $Module->Installed); 446 $Data[] = array( 447 'Name' => $Module->Name, 448 'Enabled' => $Module->Enabled, 449 'Version' => $Module->Version, 450 'Installed' => $Module->Installed 451 ); 456 452 } 457 453 if (file_put_contents($this->FileName, "<?php \n\n\$ConfigModules = ".var_export($Data, true).";\n") === FALSE) … … 473 469 } 474 470 471 function LoadModule(string $FileName): AppModule 472 { 473 include_once($FileName); 474 $ModuleName = 'Module'.pathinfo($FileName, PATHINFO_FILENAME); 475 $Module = new $ModuleName($this->System); 476 $this->RegisterModule($Module); 477 return $Module; 478 } 479 475 480 function LoadModulesFromDir(string $Directory): void 476 481 { … … 480 485 if (is_dir($Directory.'/'.$Item) and ($Item != '.') and ($Item != '..') and ($Item != '.svn')) 481 486 { 482 include_once($Directory.'/'.$Item.'/'.$Item.'.php'); 483 $ModuleName = 'Module'.$Item; 484 $this->RegisterModule(new $ModuleName($this->System)); 487 $this->LoadModule($Directory.'/'.$Item.'/'.$Item.'.php'); 485 488 } 486 489 } -
trunk/Packages/Common/Application.php
r887 r895 65 65 function GetModule(string $Name): AppModule 66 66 { 67 return $this->ModuleManager->Modules[$Name]; 67 if (array_key_exists($Name, $this->ModuleManager->Modules)) 68 return $this->ModuleManager->Modules[$Name]; 69 else return null; 68 70 } 69 71 -
trunk/Packages/Common/Setup.php
r891 r895 1 1 <?php 2 2 3 class PageSetup extends Page3 class PageSetupModules extends Page 4 4 { 5 public UpdateManager $UpdateManager;6 public array $ConfigDefinition;7 public array $Config;8 public int $DatabaseRevision;9 public int $Revision;10 public string $ConfigDir;11 5 public array $YesNo; 12 6 … … 14 8 { 15 9 parent::__construct($System); 16 $this->FullTitle = T('Application setup'); 17 $this->ShortTitle = T('Application setup'); 18 //$this->ParentClass = 'PagePortal'; 19 $this->ConfigDir = dirname(dirname(dirname(__FILE__))).'/Config'; 10 $this->FullTitle = T('Modules'); 11 $this->ShortTitle = T('Modules'); 12 $this->ParentClass = 'PageSetup'; 20 13 $this->YesNo = array(false => T('No'), true => T('Yes')); 21 14 } 22 15 23 function LoginPanel(): string24 {25 $Output = '<h3>Přihlášení k instalaci</h3>'.26 '<form action="?" method="post">'.27 '<table>'.28 '<tr><td>Systémové heslo:</td><td> <input type="password" name="SystemPassword" value=""/></td></tr>'.29 '</table>'.30 '<input type="submit" name="login" value="'.T('Login').'"/>'.31 '</form>';32 return $Output;33 }34 35 function ControlPanel(): string36 {37 $Output = '<h3>'.T('Instance management').'</h3>';38 39 $Output .= 'Je připojení k databázi: '.$this->YesNo[$this->UpdateManager->Database->Connected()].'<br/>';40 if ($this->UpdateManager->Database->Connected())41 {42 $Output .= 'Je instalováno: '.$this->YesNo[$this->UpdateManager->IsInstalled()].'<br/>';43 if ($this->UpdateManager->IsInstalled())44 $Output .= 'Je aktuální: '.$this->YesNo[$this->UpdateManager->IsUpToDate()].'<br/>'.45 'Verze databáze: '.$this->UpdateManager->GetDbVersion().'<br/>';46 $Output .= 'Verze databáze kódu: '.$this->UpdateManager->Revision.'<br/>';47 if ($this->UpdateManager->IsInstalled())48 {49 if (!$this->UpdateManager->IsUpToDate())50 $Output .= '<a href="?action=upgrade">'.T('Upgrade').'</a> ';51 $Output .= '<a href="?action=insert_sample_data">Vložit vzorová data</a> ';52 $Output .= '<a href="?action=reload_modules">Obnovit seznam modulů</a> ';53 $Output .= '<a href="?action=uninstall">Odinstalovat</a> ';54 $Output .= '<a href="?action=modules">Správa modulů</a> ';55 $Output .= '<a href="?action=models">Přegenerovat modely</a> ';56 } else $Output .= '<a href="?action=install">Instalovat</a> ';57 }58 $Output .= '<a href="?action=configure">Nastavit</a> ';59 $Output .= '<a href="?action=logout">Odhlásit</a> ';60 $Output .= '<a href="'.$this->System->Link('/').'">'.T('Go to main page').'</a> ';61 $Output .= '';62 return $Output;63 }64 65 16 function Show(): string 66 {67 global $ConfigDefinition, $DatabaseRevision, $Config, $Updates;68 69 $this->UpdateManager = $this->System->Setup->UpdateManager;70 $DefaultConfig = new DefaultConfig();71 $this->ConfigDefinition = $DefaultConfig->Get();72 $this->DatabaseRevision = $DatabaseRevision;73 $this->Config = &$Config;74 75 $Output = '';76 if (isset($this->Config))77 {78 if (!array_key_exists('SystemPassword', $_SESSION)) $_SESSION['SystemPassword'] = '';79 if (array_key_exists('login', $_POST)) $_SESSION['SystemPassword'] = $_POST['SystemPassword'];80 if (sha1($_SESSION['SystemPassword']) != $this->Config['SystemPassword'])81 {82 $Output .= $this->LoginPanel();83 } else84 {85 if (array_key_exists('action', $_GET)) $Action = $_GET['action'];86 else $Action = '';87 if ($Action == 'logout')88 {89 $_SESSION['SystemPassword'] = '';90 $Output .= 'Odhlášen';91 $Output .= $this->LoginPanel();92 } else93 if ($Action == 'models')94 {95 $this->System->FormManager->UpdateSQLMeta();96 } else97 if ($Action == 'upgrade')98 {99 $Output .= '<h3>Povýšení</h3>';100 try {101 $Output .= $this->System->Setup->Upgrade();102 } catch (Exception $E) {103 $Output .= $this->SystemMessage('Chyba aktualizace',104 'Došlo k chybě v SQL dotazu při aktualizaci: <br/>'.$E->getMessage());105 }106 $Output .= $this->ControlPanel();107 } else108 if ($Action == 'install')109 {110 $Output .= '<h3>Instalace</h3>';111 $this->System->Setup->Install();112 $this->System->ModuleManager->LoadModules();113 $this->System->ModuleManager->SaveState();114 //$Output .= $this->System->Setup->Upgrade();115 $Output .= $this->ControlPanel();116 } else117 if ($Action == 'uninstall')118 {119 $Output .= '<h3>Odinstalace</h3>';120 $this->System->Setup->Uninstall();121 $Output .= $this->ControlPanel();122 } else123 if ($Action == 'reload_modules')124 {125 $Output .= '<h3>Znovunačtení seznamu modulů</h3>';126 $this->System->ModuleManager->LoadModules();127 $this->System->ModuleManager->SaveState();128 $Output .= $this->ControlPanel();129 } else130 if ($Action == 'insert_sample_data')131 {132 $Output .= '<h3>Vložení vzorových dat</h3>';133 $this->System->Setup->InsertSampleData();134 $Output .= $this->ControlPanel();135 } else136 if ($Action == 'modules')137 {138 $Output .= $this->ShowModules();139 } else140 if ($Action == 'configure_save')141 {142 $Output .= $this->ConfigSave($this->Config);143 $Output .= $this->ControlPanel();144 } else145 if ($Action == 'configure')146 {147 $Output .= $this->PrepareConfig($this->Config);148 } else149 {150 $Output .= $this->ControlPanel();151 }152 }153 } else154 {155 if (array_key_exists('configure_save', $_POST))156 {157 $Output .= $this->ConfigSave(array());158 $Output .= 'Pokračujte k přihlášení <a href="">zde</a>';159 } else {160 $Output .= $this->PrepareConfig(array());161 }162 }163 return $Output;164 }165 166 function ShowModules(): string167 17 { 168 18 $Output = ''; … … 237 87 $Table->Table->Cells[] = array($Module->Name, 238 88 $Module->Creator, $Module->Version, 239 $Module->License, $this->YesNo[$Module->Installed],89 $Module->License, $this->YesNo[$Module->Installed], 240 90 $this->YesNo[$Module->Enabled], $Module->Description, 241 91 $Dependencies, $Actions); … … 245 95 $Output .= $Pageing->Show(); 246 96 //$Output .= '<p><a href="?A=SaveToDb">Uložit do databáze</a></p>'; 97 return $Output; 98 } 99 } 100 101 class PageSetup extends Page 102 { 103 public UpdateManager $UpdateManager; 104 public array $ConfigDefinition; 105 public array $Config; 106 public int $DatabaseRevision; 107 public int $Revision; 108 public string $ConfigDir; 109 public array $YesNo; 110 111 function __construct(System $System) 112 { 113 parent::__construct($System); 114 $this->FullTitle = T('Application setup'); 115 $this->ShortTitle = T('Application setup'); 116 //$this->ParentClass = 'PagePortal'; 117 $this->ConfigDir = dirname(dirname(dirname(__FILE__))).'/Config'; 118 $this->YesNo = array(false => T('No'), true => T('Yes')); 119 } 120 121 function LoginPanel(): string 122 { 123 $Output = '<h3>Přihlášení k instalaci</h3>'. 124 '<form action="?" method="post">'. 125 '<table>'. 126 '<tr><td>Systémové heslo:</td><td> <input type="password" name="SystemPassword" value=""/></td></tr>'. 127 '</table>'. 128 '<input type="submit" name="login" value="'.T('Login').'"/>'. 129 '</form>'; 130 return $Output; 131 } 132 133 function ControlPanel(): string 134 { 135 $Output = '<h3>'.T('Instance management').'</h3>'; 136 137 $Output .= 'Je připojení k databázi: '.$this->YesNo[$this->UpdateManager->Database->Connected()].'<br/>'; 138 if ($this->UpdateManager->Database->Connected()) 139 { 140 $Output .= 'Je instalováno: '.$this->YesNo[$this->UpdateManager->IsInstalled()].'<br/>'; 141 if ($this->UpdateManager->IsInstalled()) 142 $Output .= 'Je aktuální: '.$this->YesNo[$this->UpdateManager->IsUpToDate()].'<br/>'. 143 'Verze databáze: '.$this->UpdateManager->GetDbVersion().'<br/>'; 144 $Output .= 'Verze databáze kódu: '.$this->UpdateManager->Revision.'<br/>'; 145 if ($this->UpdateManager->IsInstalled()) 146 { 147 if (!$this->UpdateManager->IsUpToDate()) 148 $Output .= '<a href="?action=upgrade">'.T('Upgrade').'</a> '; 149 $Output .= '<a href="?action=insert_sample_data">Vložit vzorová data</a> '; 150 $Output .= '<a href="?action=reload_modules">Obnovit seznam modulů</a> '; 151 $Output .= '<a href="?action=uninstall">Odinstalovat</a> '; 152 $Output .= '<a href="'.$this->System->Link('/setup/modules/').'">Správa modulů</a> '; 153 $Output .= '<a href="?action=models">Přegenerovat modely</a> '; 154 } else $Output .= '<a href="?action=install">Instalovat</a> '; 155 } 156 $Output .= '<a href="?action=configure">Nastavit</a> '; 157 $Output .= '<a href="?action=logout">Odhlásit</a> '; 158 $Output .= '<a href="'.$this->System->Link('/').'">'.T('Go to main page').'</a> '; 159 $Output .= ''; 160 return $Output; 161 } 162 163 function Show(): string 164 { 165 global $ConfigDefinition, $DatabaseRevision, $Config, $Updates; 166 167 $this->UpdateManager = ModuleSetup::Cast($this->System->GetModule('Setup'))->UpdateManager; 168 $DefaultConfig = new DefaultConfig(); 169 $this->ConfigDefinition = $DefaultConfig->Get(); 170 $this->DatabaseRevision = $DatabaseRevision; 171 $this->Config = &$Config; 172 173 $Output = ''; 174 if (isset($this->Config)) 175 { 176 if (!array_key_exists('SystemPassword', $_SESSION)) $_SESSION['SystemPassword'] = ''; 177 if (array_key_exists('login', $_POST)) $_SESSION['SystemPassword'] = $_POST['SystemPassword']; 178 if (sha1($_SESSION['SystemPassword']) != $this->Config['SystemPassword']) 179 { 180 $Output .= $this->LoginPanel(); 181 } else 182 { 183 if (array_key_exists('action', $_GET)) $Action = $_GET['action']; 184 else $Action = ''; 185 if ($Action == 'logout') 186 { 187 $_SESSION['SystemPassword'] = ''; 188 $Output .= 'Odhlášen'; 189 $Output .= $this->LoginPanel(); 190 } 191 else if ($Action == 'models') 192 { 193 $this->System->FormManager->UpdateSQLMeta(); 194 } 195 else if ($Action == 'upgrade') 196 { 197 $Output .= '<h3>Povýšení</h3>'; 198 try 199 { 200 $Output .= ModuleSetup::Cast($this->System->GetModule('Setup'))->Upgrade(); 201 } catch (Exception $E) 202 { 203 $Output .= $this->SystemMessage('Chyba aktualizace', 204 'Došlo k chybě v SQL dotazu při aktualizaci: <br/>'.$E->getMessage()); 205 } 206 $Output .= $this->ControlPanel(); 207 } 208 else if ($Action == 'install') 209 { 210 $Output .= '<h3>Instalace</h3>'; 211 ModuleSetup::Cast($this->System->GetModule('Setup'))->Install(); 212 $this->System->ModuleManager->LoadModules(); 213 $this->System->ModuleManager->SaveState(); 214 //$Output .= ModuleSetup::Cast($this->System->GetModule('Setup'))->Upgrade(); 215 $Output .= $this->ControlPanel(); 216 } 217 else if ($Action == 'uninstall') 218 { 219 $Output .= '<h3>Odinstalace</h3>'; 220 ModuleSetup::Cast($this->System->GetModule('Setup'))->Uninstall(); 221 $Output .= $this->ControlPanel(); 222 } 223 else if ($Action == 'reload_modules') 224 { 225 $Output .= '<h3>Znovunačtení seznamu modulů</h3>'; 226 $this->System->ModuleManager->LoadModules(); 227 $this->System->ModuleManager->SaveState(); 228 $Output .= $this->ControlPanel(); 229 } 230 else if ($Action == 'insert_sample_data') 231 { 232 $Output .= '<h3>Vložení vzorových dat</h3>'; 233 ModuleSetup::Cast($this->System->GetModule('Setup'))->InsertSampleData(); 234 $Output .= $this->ControlPanel(); 235 } 236 else if ($Action == 'configure_save') 237 { 238 $Output .= $this->ConfigSave($this->Config); 239 $Output .= $this->ControlPanel(); 240 } 241 else if ($Action == 'configure') 242 { 243 $Output .= $this->PrepareConfig($this->Config); 244 } 245 else 246 { 247 $Output .= $this->ControlPanel(); 248 } 249 } 250 } else 251 { 252 if (array_key_exists('configure_save', $_POST)) 253 { 254 $Output .= $this->ConfigSave(array()); 255 $Output .= 'Pokračujte k přihlášení <a href="">zde</a>'; 256 } else { 257 $Output .= $this->PrepareConfig(array()); 258 } 259 } 247 260 return $Output; 248 261 } … … 256 269 $Output .= 'Varování: Konfigurační soubor nebude možné zapsat, protože soubor "'.$this->ConfigDir.'/Config.php" není povolen pro zápis!'; 257 270 $Output .= '<h3>Nastavení systému</h3>'. 258 259 271 '<form action="?action=configure_save" method="post">'. 272 '<table>'; 260 273 foreach ($this->ConfigDefinition as $Def) 261 274 { … … 279 292 } 280 293 $Output .= '</td></tr>'. 281 282 283 294 '<tr><td colspan="2"><input type="submit" name="configure_save" value="'.T('Save').'"/></td></tr>'. 295 '</table>'. 296 '</form>'; 284 297 return $Output; 285 298 } … … 365 378 if (!$this->Database->Connected()) $Output .= T('Can\'t connect to database').'<br>'; 366 379 else { 367 if (! $this->System->Setup->UpdateManager->IsInstalled())380 if (!ModuleSetup::Cast($this->System->GetModule('Setup'))->UpdateManager->IsInstalled()) 368 381 $Output .= T('System requires database initialization').'<br>'; 369 382 else 370 if (! $this->System->Setup->UpdateManager->IsUpToDate())383 if (!ModuleSetup::Cast($this->System->GetModule('Setup'))->UpdateManager->IsUpToDate()) 371 384 $Output .= T('System requires database upgrade').'<br>'; 372 385 } … … 376 389 } 377 390 378 class Setup extends Model391 class ModuleSetup extends AppModule 379 392 { 380 393 public UpdateManager $UpdateManager; 381 394 382 function Start()395 function __construct(System $System) 383 396 { 384 397 global $DatabaseRevision; 385 398 386 $this->System->RegisterPage([''], 'PageSetupRedirect'); 387 $this->System->RegisterPage(['setup'], 'PageSetup'); 399 parent::__construct($System); 400 $this->Name = 'Setup'; 401 $this->Version = '1.0'; 402 $this->Creator = 'Chronos'; 403 $this->License = 'GNU/GPLv3'; 404 $this->Description = 'Base setup module'; 405 $this->Dependencies = array(); 406 $this->Revision = 1; 407 $this->SystemModule = true; 388 408 389 409 // Check database persistence structure … … 394 414 } 395 415 396 function Stop() 416 static function Cast(AppModule $AppModule): ModuleSetup 417 { 418 if ($AppModule instanceof ModuleSetup) 419 { 420 return $AppModule; 421 } 422 throw new Exception('Expected ModuleSetup type but '.gettype($AppModule)); 423 } 424 425 function DoStart(): void 426 { 427 $this->System->RegisterPage([''], 'PageSetupRedirect'); 428 $this->System->RegisterPage(['setup'], 'PageSetup'); 429 $this->System->RegisterPage(['setup', 'modules'], 'PageSetupModules'); 430 } 431 432 function DoStop(): void 397 433 { 398 434 unset($this->UpdateManager); 399 435 $this->System->UnregisterPage(['']); 400 436 $this->System->UnregisterPage(['setup']); 437 $this->System->UnregisterPage(['setup', 'modules']); 401 438 } 402 439 … … 407 444 } 408 445 409 function Install()446 function DoInstall(): void 410 447 { 411 448 global $DatabaseRevision; … … 444 481 } 445 482 446 function Uninstall()483 function DoUninstall(): void 447 484 { 448 485 $this->System->ModuleManager->UninstallAll(); … … 459 496 } 460 497 461 function Upgrade(): string498 function DoUpgrade(): string 462 499 { 463 500 $Updates = new Updates(); … … 466 503 return $Output; 467 504 } 505 506 function InsertSampleData(): void 507 { 508 } 468 509 }
Note:
See TracChangeset
for help on using the changeset viewer.