public function displayAccessWarning() { if (Yii::app()->isCommonSSL) { return; } $access_warning_cookie = Yii::app()->request->cookies['access_warning']; if ($access_warning_cookie === null || $access_warning_cookie->value !== 'false') { $objModule = Modules::model()->LoadByName('wsaccesswarning'); if (!$objModule) { Yii::import('ext.wsaccesswarning.models.*'); $arrDefaultConfig = $this->getAdminModel()->getDefaultConfiguration(); $objModule = new Modules(); $objModule->module = 'wsaccesswarning'; $objModule->category = 'extension'; $objModule->name = 'Site Access Warning'; $objModule->version = 1; $objModule->active = 0; $objModule->configuration = serialize($arrDefaultConfig); $objModule->save(); } if ($objModule->active) { $arrConfig = $objModule->GetConfigValues(); $globalScript = sprintf("var accessWarningMessage = %s;", json_encode($this->_transformMessageForDisplay($arrConfig['message']))); // No HTML tags are allowed in the button caption so we encode to HTML entities. $globalScript .= sprintf("var accessWarningButtonCaption = %s;", json_encode(CHtml::encode($arrConfig['button_caption']))); $assets = Yii::app()->getAssetManager()->publish(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets'); $cs = Yii::app()->getClientScript(); $cs->registerScript('_', $globalScript, CClientScript::POS_HEAD); $cs->registerCssFile($assets . '/css/wsaccesswarning.css'); $cs->registerScriptFile($assets . '/thirdparty/carhartl-jquery-cookie/jquery.cookie.js'); $cs->registerScriptFile($assets . '/js/wsaccesswarning.js'); } } }
/** * Chuc nang: cai dat cac module vao he thong * @param type $mod_name * @return boolean */ public function actionInstallModule($mod_name) { $ok = @(include_once Yii::app()->getBasePath() . '/modules/' . $mod_name . '/setup.php'); // Kiem tra ton tai file setup trong module if (!$ok) { $this->render('_view_error', array('msg' => 'Module setup file could not be found.')); return false; } // Kiem tra da dat ten module chua if (!$config['mod_name']) { $this->render('_view_error', array('msg' => 'Module does not have a valid setup module name defined.')); return false; } $modelMol = Modules::model()->findAll(); $module = new Modules(); $module->module_directory = $mod_name; $module->module_name = $config['mod_name']; $module->module_text = isset($config['mod_ui_name']) ? $config['mod_ui_name'] : $config['mod_name']; $module->modules_description = $config['mod_description']; $module->module_hidden = 0; $module->module_order = count($modelMol) + 1; if ($module->save()) { if (isset($config['mod_permission_define']) && count($config['mod_permission_define']) > 0) { foreach ($config['mod_permission_define'] as $defineItem) { $definepermission = new DefinePermission(); $definepermission->module_id = $module->lb_record_primary_key; $definepermission->define_permission_name = $defineItem; $definepermission->save(); } } $this->redirect($this->createUrl('viewModules')); } }
function addsubmitAction() { if ($this->request->isPost()) { $name = $this->request->getPost('name'); $description = $this->request->getPost('description'); $system_id = $this->request->getPost('system_id'); $modules = new Modules(); $modules->name = $name; $modules->description = $description; $modules->system_id = $system_id; if ($modules->save() == false) { foreach ($modules->getMessages() as $message) { $this->flash->error((string) $message); } } else { $this->flash->success('Add New Modules Success'); $this->response->redirect('modules/system/' . $system_id); } } }
/** * @deprecated * DO NOT USE * * Like {@link actionRegisterModules} this method is not yet ready for use. * Please refrain from attempting to use this module or it will likely create * issues in your installation. * * @param string $module The name of the module being toggled. */ public function actionToggleModule($module) { $config = (include "protected/modules/{$module}/register.php"); $exists = Modules::model()->findByAttributes(array('name' => $module)); if (!isset($exists)) { $moduleRecord = new Modules(); $moduleRecord->editable = $config['editable'] ? 1 : 0; $moduleRecord->searchable = $config['searchable'] ? 1 : 0; $moduleRecord->adminOnly = $config['adminOnly'] ? 1 : 0; $moduleRecord->custom = $config['custom'] ? 1 : 0; $moduleRecord->toggleable = $config['toggleable'] ? 1 : 0; $moduleRecord->name = $module; $moduleRecord->title = $config['name']; $moduleRecord->visible = 1; $moduleRecord->menuPosition = Modules::model()->count(); if ($moduleRecord->save()) { $install = $config['install']; } } else { $exists->visible = $exists->visible ? 0 : 1; if ($exists->save()) { if ($exists->toggleable) { $uninstall = $config['uninstall']; } else { } } } $this->redirect('registerModules'); }
/** * Look for all modules (class files) in extensions folder. * * @param string $moduletype Type of module which determines what folder to scan. * * @return void */ public function scanModules($moduletype = "payment") { if ($moduletype == "theme") { $files = glob(YiiBase::getPathOfAlias('webroot.themes') . '/*', GLOB_ONLYDIR); foreach ($files as $key => $file) { if (stripos($file, '/themes/trash') > 0 || stripos($file, '/themes/_customcss') > 0) { unset($files[$key]); } } } else { $arrCustom = array(); if (file_exists(YiiBase::getPathOfAlias("custom.extensions." . $moduletype))) { $arrCustom = glob(realpath(YiiBase::getPathOfAlias("custom.extensions." . $moduletype)) . '/*', GLOB_ONLYDIR); } if (!is_array($arrCustom)) { $arrCustom = array(); } $files = array_merge(glob(realpath(YiiBase::getPathOfAlias('ext.ws' . $moduletype)) . '/*', GLOB_ONLYDIR), $arrCustom); } foreach ($files as $file) { $moduleName = mb_pathinfo($file, PATHINFO_BASENAME); $version = 0; $name = $moduleName; if ($moduletype === 'theme') { $model = Yii::app()->getComponent('wstheme')->getAdminModel($moduleName); $configuration = ''; if ($model) { $version = $model->version; $name = $model->name; $configuration = $model->getDefaultConfiguration(); } } else { try { $version = Yii::app()->getComponent($moduleName)->Version; $name = Yii::app()->getComponent($moduleName)->AdminNameNormal; $configuration = Yii::app()->getComponent($moduleName)->getDefaultConfiguration(); } catch (Exception $e) { Yii::log("{$moduleName} component can't be read " . $e, 'error', 'application.' . __CLASS__ . "." . __FUNCTION__); } } //Check if module is already in database $objModule = Modules::LoadByName($moduleName); if (!$objModule instanceof Modules) { //The module doesn't exist, attempt to install it try { $objModule = new Modules(); $objModule->active = 0; $objModule->module = $moduleName; $objModule->category = $moduletype; $objModule->version = $version; $objModule->name = $name; $objModule->configuration = $configuration; if (!$objModule->save()) { Yii::log("Found widget {$moduleName} could not install " . print_r($objModule->getErrors(), true), 'error', 'application.' . __CLASS__ . "." . __FUNCTION__); } } catch (Exception $e) { Yii::log("Found {$moduletype} widget {$moduleName} could not install " . $e, 'error', 'application.' . __CLASS__ . "." . __FUNCTION__); } } $objModule->version = $version; $objModule->name = $name; $objModule->save(); } }
protected function changeTheme($post) { if (_xls_get_conf('THEME') != $post['theme']) { //we're going to swap out template information //Get (or create) Module entry for this theme. //If outgoing theme does not have an Admin Form, if (!Theme::hasAdminForm(_xls_get_conf('THEME'))) { $objCurrentSettings = Modules::model()->findByAttributes(array('module' => _xls_get_conf('THEME'), 'category' => 'theme')); if (!$objCurrentSettings) { $objCurrentSettings = new Modules(); $objCurrentSettings->active = 1; } $objCurrentSettings->module = _xls_get_conf('THEME'); $objCurrentSettings->category = 'theme'; $arrDimensions = array(); $arrItems = Configuration::model()->findAllByAttributes(array('template_specific' => 1)); foreach ($arrItems as $objConf) { $arrDimensions[$objConf->key_name] = $objConf->key_value; } $objCurrentSettings->configuration = serialize($arrDimensions); if (!$objCurrentSettings->save()) { Yii::log("Error on switching old theme " . print_r($objCurrentSettings->getErrors(), true), 'error', 'application.' . __CLASS__ . "." . __FUNCTION__); } unset($objCurrentSettings); } //Now that we've saved the current settings, see if there are new ones to load $objCurrentSettings = Modules::model()->findByAttributes(array('module' => $post['theme'], 'category' => 'theme')); list($themeDefaults, $themeVersion) = $this->loadDefaults($post['theme']); $themeVersion = round($themeVersion, PHP_ROUND_HALF_DOWN); if ($objCurrentSettings) { //We found settings, load them $arrDimensions = unserialize($objCurrentSettings->configuration); if (is_array($arrDimensions)) { foreach ($arrDimensions as $key => $val) { _xls_set_conf($key, $val); } } //Make sure our version number is up to date $objCurrentSettings->version = $themeVersion; if (!$objCurrentSettings->save()) { Yii::log("Error on switching themes " . print_r($objCurrentSettings->getErrors(), true), 'error', 'application.' . __CLASS__ . "." . __FUNCTION__); } } else { //Create entry in our modules table $objCurrentSettings = new Modules(); $objCurrentSettings->module = $post['theme']; $objCurrentSettings->category = 'theme'; $objCurrentSettings->configuration = serialize($themeDefaults); $objCurrentSettings->version = $themeVersion; $objCurrentSettings->active = 1; //we use this for autochecking if (!$objCurrentSettings->save()) { Yii::log("Error on new module entry when switching themes " . print_r($objCurrentSettings->getErrors(), true), 'error', 'application.' . __CLASS__ . "." . __FUNCTION__); } } } _xls_set_conf('THEME', $post['theme']); Yii::app()->theme = $post['theme']; if (isset($post['subtheme-' . $post['theme']])) { $child = $post['subtheme-' . $post['theme']]; } else { $child = ""; $arrOptions = $this->buildSubThemes($post['theme']); if ($arrOptions) { $keys = array_keys($arrOptions); $child = array_shift($keys); } } _xls_set_conf('CHILD_THEME', $child); // now that we have changed themes, rebuild the activecss array $arrActiveCss = Yii::app()->theme->info->cssfiles; $arrActiveCss[] = Yii::app()->theme->config->CHILD_THEME; Yii::app()->theme->config->activecss = $arrActiveCss; Yii::app()->user->setFlash('success', Yii::t('admin', 'Theme set as "{theme}" at {time}.', array('{theme}' => Yii::app()->theme->info->name, '{time}' => date("d F, Y h:i:sa")))); $arrThemes = $this->getInstalledThemes(); $this->beforeAction('manage'); _xls_check_version(); //to report new active theme return $arrThemes; }
protected function load_module($id, $flag = false) { $path = \Yii::getPathOfAlias("application.modules"); $active = 1; $model = Modules::model()->findByAttributes(array('name' => $id)); if ($model) { if ($model->active == 1) { $active = 0; } } else { $model = new Modules(); } $model->core = $flag; if (true === $flag) { $active = 1; } $info = @(include $path . $id . '/info.php'); $classes = $path . $id . '/class.php'; $model->name = $id; $model->label = $info['label']; $model->memo = $info['memo']; $model->active = $active; if (!$model->save()) { } /** * reload modules * 重新加载模块 */ return $model->active; }
<table class="table table-bordered table-hover table-striped"> <thead> <tr> <td>Модуль</td> <td>Статус</td> <td>Включить</td> <td>Отключить</td> </tr> </thead> <tbody> <?php $class = new Modules(); if (isset($_GET['enable'])) { $class->enable($_GET['enable']); $class->save(); echo "<div class='alert alert-success'>Модуль включён</div>"; } if (isset($_GET['disable'])) { $class->disable($_GET['disable']); $class->save(); echo "<div class='alert alert-success'>Модуль отключён</div>"; } $mods = $class->getModules(); $skip = array('.', '..', '.htaccess', '.conf'); $files = scandir(MODS_ROOT); foreach ($files as $file) { if (!in_array($file, $skip)) { $status = in_array($file, $mods) ? "Включён" : "Отключён"; echo "<tr><td> <b><font size=3>" . $file . "</font></b> </td><td> <b>" . $status . "</b> </td><td> [<a href='?enable=" . $file . "'>Включить</a>] </td><td> [<a href='?disable=" . $file . "'>Отключить</a>] </td></tr>"; }