Index: branches/5.2.x/core/units/admin/admin_events_handler.php =================================================================== diff -u -N -r14572 -r14585 --- branches/5.2.x/core/units/admin/admin_events_handler.php (.../admin_events_handler.php) (revision 14572) +++ branches/5.2.x/core/units/admin/admin_events_handler.php (.../admin_events_handler.php) (revision 14585) @@ -1,6 +1,6 @@ array('self' => true), 'OnClosePopup' => array('self' => true), @@ -44,8 +45,8 @@ $system_events = Array ( 'OnResetModRwCache', 'OnResetSections', 'OnResetConfigsCache', 'OnResetParsedData', 'OnResetMemcache', - 'OnDeleteCompiledTemplates', 'OnCompileTemplates', 'OnGenerateTableStructure', - 'OnRebuildThemes', 'OnCheckPrefixConfig', 'OnMemoryCacheGet', 'OnMemoryCacheSet' + 'OnDeleteCompiledTemplates', 'OnCompileTemplates', 'OnGenerateTableStructure', 'OnSynchronizeDBRevisions', + 'OnDeploy', 'OnRebuildThemes', 'OnCheckPrefixConfig', 'OnMemoryCacheGet', 'OnMemoryCacheSet' ); if (in_array($event->Name, $system_events)) { @@ -451,7 +452,17 @@ */ function OnStartup(&$event) { + if ( $this->Application->isAdmin ) { + return ; + } + $base_url = preg_quote($this->Application->BaseURL(), '/'); + $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; + + if ( $referrer && !preg_match('/^' . $base_url . '/', $referrer) ) { + $this->Application->Session->SetCookie('original_referrer', $referrer); + $this->Application->SetVar('original_referrer', $referrer); + } } /** @@ -487,7 +498,7 @@ if(!$prefix_special) { $prefix_special = $export_helper->ExportData('prefix'); } - $prefix_elems = split('\.|_', $prefix_special, 2); + $prefix_elems = preg_split('/\.|_/', $prefix_special, 2); $perm_sections = $this->Application->getUnitOption($prefix_elems[0], 'PermSection'); if(!$this->Application->CheckPermission($perm_sections['main'].'.view')) { @@ -512,7 +523,7 @@ /* @var $export_helper kCSVHelper */ $prefix_special = $export_helper->ExportData('prefix'); - $prefix_elems = split('\.|_', $prefix_special, 2); + $prefix_elems = preg_split('/\.|_/', $prefix_special, 2); $perm_sections = $this->Application->getUnitOption($prefix_elems[0], 'PermSection'); if(!$this->Application->CheckPermission($perm_sections['main'].'.view')) { @@ -531,7 +542,7 @@ function OnCSVImportBegin(&$event) { $prefix_special = $this->Application->GetVar('PrefixSpecial'); - $prefix_elems = split('\.|_', $prefix_special, 2); + $prefix_elems = preg_split('/\.|_/', $prefix_special, 2); $perm_sections = $this->Application->getUnitOption($prefix_elems[0], 'PermSection'); if(!$this->Application->CheckPermission($perm_sections['main'].'.add') && !$this->Application->CheckPermission($perm_sections['main'].'.edit')) { @@ -577,7 +588,7 @@ /* @var $export_helper kCSVHelper */ $prefix_special = $import_helper->ImportData('prefix'); - $prefix_elems = split('\.|_', $prefix_special, 2); + $prefix_elems = preg_split('/\.|_/', $prefix_special, 2); $perm_sections = $this->Application->getUnitOption($prefix_elems[0], 'PermSection'); if(!$this->Application->CheckPermission($perm_sections['main'].'.add') && !$this->Application->CheckPermission($perm_sections['main'].'.edit')) { $event->status = kEvent::erPERM_FAIL; @@ -1322,6 +1333,41 @@ echo $json_helper->encode($ret); } + + /** + * Deploy changes + * + * Usage: "php tools/run_event.php adm:OnDeploy b674006f3edb1d9cd4d838c150b0567d" + * + * @param kEvent $event + */ + function OnDeploy(&$event) + { + if ( isset($GLOBALS['argv']) ) { + // command line invocation -> don't perform redirect + $event->status = erSTOP; + } + + $deployment_helper =& $this->Application->recallObject('DeploymentHelper'); + /* @var $deployment_helper DeploymentHelper */ + + $deployment_helper->deployAll(); + } + + /** + * Synchronizes database revisions from "project_upgrades.sql" file + * + * @param kEvent $event + */ + function OnSynchronizeDBRevisions(&$event) + { + $deployment_helper =& $this->Application->recallObject('DeploymentHelper'); + /* @var $deployment_helper DeploymentHelper */ + + if ( !$deployment_helper->deployAll(true) ) { + $event->status = erFAIL; + } + } }