private function _install_module(CmsModule &$module_obj) { debug_buffer('install_module ' . $module_obj->GetName()); $gCms = cmsms(); // preserve the global. $db = $gCms->GetDb(); // todo, check to make sure the module isn't already installed. $result = $module_obj->Install(); if (!isset($result) || $result === FALSE) { // install returned nothing, or FALSE $query = 'DELETE FROM ' . cms_db_prefix() . 'modules WHERE module_name = ?'; $dbr = $db->Execute($query, array($module_obj->GetName())); $lazyload_fe = method_exists($module_obj, 'LazyLoadFrontend') && $module_obj->LazyLoadFrontend() ? 1 : 0; $lazyload_admin = method_exists($module_obj, 'LazyLoadAdmin') && $module_obj->LazyLoadAdmin() ? 1 : 0; $query = 'INSERT INTO ' . cms_db_prefix() . 'modules (module_name,version,status,admin_only,active,allow_fe_lazyload,allow_admin_lazyload) VALUES (?,?,?,?,?,?,?)'; $dbr = $db->Execute($query, array($module_obj->GetName(), $module_obj->GetVersion(), 'installed', $module_obj->IsAdminOnly() == true ? 1 : 0, 1, $lazyload_fe, $lazyload_admin)); $deps = $module_obj->GetDependencies(); if (is_array($deps)) { $query = 'INSERT INTO ' . cms_db_prefix() . 'module_deps (parent_module,child_module,minimum_version,create_date,modified_date) VALUES (?,?,?,NOW(),NOW())'; foreach ($deps as $depname => $depversion) { if (!$depname || !$depversion) { continue; } $dbr = $db->Execute($query, array($depname, $module_obj->GetName(), $depversion)); } } $this->_moduleinfo[$module_obj->GetName()] = array('module_name' => $module_obj->GetName(), 'version' => $module_obj->GetVersion(), 'status' => 'installed', 'active' => 1, 'admn_only' => $module_obj->IsAdminOnly() == true ? 1 : 0, 'allow_fe_lazyload' => $module_obj->LazyLoadFrontend() == TRUE ? 1 : 0, 'allow_admin_lazyload' => $module_obj->LazyLoadAdmin() == TRUE ? 1 : 0); Events::SendEvent('Core', 'ModuleInstalled', array('name' => $module_obj->GetName(), 'version' => $module_obj->GetVersion())); audit('', $module_obj->GetName(), 'Installed version ' . $module_obj->GetVersion()); $gCms->clear_cached_files(); return array(TRUE, $module_obj->InstallPostMessage()); } return array(FALSE, $result); }
public function beforeControllerAction($controller, $action) { if (parent::beforeControllerAction($controller, $action)) { // this method is called before any module controller action is performed // you may place customized code here return true; } else { return false; } }