public function activate(Plugin $plugin) { $data = $plugin->getData(); if ($data === null) { $data = array(); } if (isset($data['id_site_module']) && is_numeric($data['id_site_module'])) { // не должно быть такого return; } if (SiteModule::model()->exists('id_module=:id', array(':id' => 112))) { // на сайте изначально был установлен данный плагин. // записываем данные по умолчанию $data['id_site_module'] = 112; } else { $siteModule = $this->prepareSiteModule('Витрина', $data['id_php_script_type_module']); $siteModule->save(); if (!empty($data['site_module_place'])) { $this->restoreSiteModulePlace($siteModule->id_module, $data['site_module_place']); unset($data['site_module_place']); } $this->createPermission($data['id_object'], 'Просмотр списка данных объекта Витрина'); $this->updateMenu = true; $data['id_site_module'] = $siteModule->id_module; } $plugin->setData($data); }
public function run() { $moduleModel = SiteModule::model()->findByPk(4); if (!empty($moduleModel)) { $root = CatalogRubrics::getRoot(); $categories = $root->descendants()->findAll($root->id); $tree = ''; $level = 0; foreach ($categories as $n => $category) { if ($category->status == 1) { if ($category->level == $level) { $tree .= CHtml::closeTag('li') . "\r\n"; } else { if ($category->level > $level) { $tree .= CHtml::openTag('ul') . "\r\n"; } else { $tree .= CHtml::closeTag('li') . "\r\n"; for ($i = $level - $category->level; $i; $i--) { $tree .= CHtml::closeTag('ul') . "\r\n"; $tree .= CHtml::closeTag('li') . "\r\n"; } } } $tree .= CHtml::openTag('li'); $tree .= CHtml::link($category->name, Yii::app()->urlManager->createUrl($moduleModel->url_to_controller . '/element', array('param' => $category->url))); $level = $category->level; } } $tree .= CHtml::closeTag('li') . "\r\n"; $tree .= CHtml::closeTag('ul') . "\r\n"; $data['tree'] = $tree; $this->render('view_Categories', $data); } }
public function activate(Plugin $plugin) { $data = $plugin->getData(); if ($data === null) { $data = array(); } if (isset($data['id_site_module']) && is_numeric($data['id_site_module'])) { // не должно быть такого return; } if (SiteModule::model()->exists('id_module=:id', array(':id' => 107))) { // на сайте изначально был установлен данный плагин. // записываем данные по умолчанию $data['id_site_module'] = 107; $data['id_event_type'] = 105; } else { $eventType = $this->prepareEventType('Новое сообщение с формы обратной связи'); $eventType->save(); $data['id_event_type'] = $eventType->id_event_type; // модуль ещё не установлен на сайте $siteModule = $this->prepareSiteModule('Кнопка обратной связи', $data['id_php_script_type_module']); $siteModule->save(); $data['id_site_module'] = $siteModule->id_module; if (!empty($data['site_module_place'])) { $this->restoreSiteModulePlace($siteModule->id_module, $data['site_module_place']); unset($data['site_module_place']); } $this->createPermission($data['id_object'], 'Просмотр списка данных объекта Обратная связь'); $this->updateMenu = true; } $plugin->setData($data); $plugin->setConfig($this->getConfigByParamsValue($plugin->getParamsValue(), $data)); }
public function init() { if (Yii::app()->user->isGuest) { $this->redirect('/'); } $modleRole = UserRole::model()->find('name LIKE "' . Yii::app()->user->role . '"')->id; $modelSiteModel = SiteModule::model()->find('templates LIKE "' . $this->module_template_name . '"'); if ($modleRole && $modelSiteModel) { $modelRule = UserGroupRule::model()->find('user_role_id = ' . $modleRole . ' AND module_id=' . $modelSiteModel->id); if ($modelRule) { $this->rule = $modelRule->access_type; } } }
public function run() { if ($this->place === null) { throw new ErrorException("Не задано место блока (BlockWidget)."); } $modules = null; if (Yii::app()->controller->idSiteModuleTemplate == null) { // если у контроллера не установлен свой набор виджетов if (Yii::app()->menu->current != null) { // иначе берем набор модулей меню $modules = Yii::app()->menu->current->getModulesByPlace($this->place); } else { // иначе пытаемся найти набор по умолчанию Yii::app()->controller->idSiteModuleTemplate = SiteModuleTemplate::getIdDefaultTemplate(); } } if ($modules === null && Yii::app()->controller->idSiteModuleTemplate != null) { if (self::$_modules == null) { self::$_modules = SiteModule::model()->with(array('place' => array('condition' => 'place.id_module_template=:id_template', 'params' => array('id_template' => Yii::app()->controller->idSiteModuleTemplate)), 'phpScriptInstance.phpScript'))->findAll(); } $modules = array(); foreach (self::$_modules as $module) { if ($module->place->place == $this->place) { $modules[] = $module; } } } else { if ($modules === null) { return; } } foreach ($modules as $module) { if ($module->id_php_script != null) { // динамический модуль // формируем массив с параметрами $params = array(); $moduleParams = $module->phpScriptInstance->phpScript->getParametersConfig(); foreach ($moduleParams as $paramName => $config) { $params[$paramName] = $module->phpScriptInstance->getParameterValue($paramName); } $className = $module->phpScriptInstance->phpScript->import(); $this->controller->widget($className, $params); } else { // статика echo $module->content; echo $module->html; } } }
public function deactivate(Plugin $plugin) { $data = $plugin->getData(); if ($data === null || !isset($data['id_site_module'])) { throw new ErrorException('Плагин установлен неверно.'); } $siteModule = SiteModule::model()->findByPk($data['id_site_module']); $idBannerPlace = $siteModule->phpScriptInstance->getParameterValue('idBannerPlace'); if (is_numeric($idBannerPlace) && ($bp = BannerPlace::model()->findByPk($idBannerPlace)) != null) { if (count($bp->banners) == 0) { $bp->delete(); } } $data = $this->deleteSiteModule($data['id_site_module'], $data, 'site_module_place'); unset($data['id_site_module']); $plugin->setData($data); }
public function activate(Plugin $plugin) { $data = $plugin->getData(); $data = $data === null ? array() : $data; $trans = Yii::app()->db->beginTransaction(); $menuSections = array(array('label' => 'Авторизация', 'urlAlias' => 'login', 'extLink' => '/login/'), array('label' => 'Регистрация', 'urlAlias' => 'register', 'extLink' => '/register/'), array('label' => 'Восстановление пароля', 'urlAlias' => 'recover', 'extLink' => '/recover/'), array('label' => 'Профиль', 'urlAlias' => 'profile', 'extLink' => '/profile/'), array('label' => 'Пользователь', 'urlAlias' => 'user', 'extLink' => '/user/')); //Создаем разделы меню foreach ($menuSections as $menuItem) { $idMenuKey = 'idMenu' . ucfirst($menuItem['urlAlias']); $menu = $this->prepareMenu($menuItem['label'], $menuItem['label'], $menuItem['urlAlias'], $menuItem['extLink'], HArray::val($data, 'id_menu_module_template_' . $idMenuKey), false); $menu->save(); $data[$idMenuKey] = $menu->primaryKey; } //создаем тип события $eventType = $this->prepareEventType('Восстановление пароля'); $eventType->save(); //и подписчика на событие $eventSubscriber = new NotifierEventSubscriber(); $eventSubscriber->id_event_type = $eventType->primaryKey; $eventSubscriber->format = 1; $eventSubscriber->archive_attach = 0; $eventSubscriber->save(); $data['idEventTypeRecover'] = $eventType->primaryKey; $data['idEventSubscriberRecover'] = $eventSubscriber->primaryKey; //тип события "Регистрация нового пользователя" $data = array_merge($data, $this->setupEventRegister()); //если виджет уже есть if (SiteModule::model()->exists('id_module = :ID', array(':ID' => 108))) { $data['id_widget_authorize'] = 108; } else { //создаем виджет авторизации $siteModule = $this->prepareSiteModule('Авторизация', $data['id_php_script_type_widget_authorize']); $siteModule->save(); if (!empty($data['widget_authorize_place'])) { $this->restoreSiteModulePlace($siteModule->id_module, $data['widget_authorize_place']); unset($data['widget_authorize_place']); } $data['id_widget_authorize'] = $siteModule->id_module; } //Включаем личный кабинет пользователя $data['cabinetEnabled'] = true; $plugin->setData($data); $trans->commit(); }
public function module() { if ($this->typeContent == 0 || empty($this->typeContent)) { exit; } $modelModule = SiteModule::model()->findByPk($this->typeContent); if (!$modelModule) { exit; } $template = mb_strtolower($modelModule->templates); $urlFront = dirname(Yii::app()->basePath) . "/app/apps/frontend/modules/" . $template; $urlTemplateFront = __DIR__ . "/ContentService/templates/" . $template . '/frontend'; $urlBackend = dirname(Yii::app()->basePath) . "/app/apps/backend/modules/" . $template; $urlTemplateBackend = __DIR__ . "/ContentService/templates/" . $template . '/backend'; /* Фронт */ //Создание модуля if (!file_exists($urlFront)) { mkdir($urlFront); } $module = file_get_contents($urlTemplateFront . '/' . ucfirst($template) . 'Module.php'); $fp = fopen($urlFront . '/' . ucfirst($template) . 'Module.php', "w"); fwrite($fp, $module); fclose($fp); //Создание контроллера if (!file_exists($urlFront . '/controllers')) { mkdir($urlFront . '/controllers'); } $controller = file_get_contents($urlTemplateFront . '/controllers/controller.php'); $controller = str_replace("[%layout%]", $this->layout, $controller); $fp = fopen($urlFront . '/controllers/' . ucfirst($template) . 'Controller.php', "w"); fwrite($fp, $controller); fclose($fp); //Создание вьюшек $urlFront .= '/views'; if (!file_exists($urlFront)) { mkdir($urlFront); } $urlFront .= '/' . $template; if (!file_exists($urlFront)) { mkdir($urlFront); } $dir = opendir($urlTemplateFront . '/views'); while ($contentViews = readdir($dir)) { if ($contentViews != '.' && $contentViews != '..') { $view = file_get_contents($urlTemplateFront . '/views' . '/' . $contentViews); $fp = fopen($urlFront . '/' . $contentViews, "w"); fwrite($fp, $view); fclose($fp); } } /* Бэкенд */ //Создание модуля if (!file_exists($urlBackend)) { mkdir($urlBackend); } $module = file_get_contents($urlTemplateBackend . '/' . ucfirst($template) . 'Module.php'); $fp = fopen($urlBackend . '/' . ucfirst($template) . 'Module.php', "w"); fwrite($fp, $module); fclose($fp); //Создание контроллера if (!file_exists($urlBackend . '/controllers')) { mkdir($urlBackend . '/controllers'); } $controller = file_get_contents($urlTemplateBackend . '/controllers/controller.php'); $controller = str_replace("[%layout%]", $this->layout, $controller); $fp = fopen($urlBackend . '/controllers/' . ucfirst($template) . 'Controller.php', "w"); fwrite($fp, $controller); fclose($fp); //Создание вьюшек $urlBackend .= '/views'; if (!file_exists($urlBackend)) { mkdir($urlBackend); } $urlBackend .= '/' . $template; if (!file_exists($urlBackend)) { mkdir($urlBackend); } $dir = opendir($urlTemplateBackend . '/views'); while ($contentViews = readdir($dir)) { if ($contentViews != '.' && $contentViews != '..') { $view = file_get_contents($urlTemplateBackend . '/views' . '/' . $contentViews); $fp = fopen($urlBackend . '/' . $contentViews, "w"); fwrite($fp, $view); fclose($fp); } } }
/** * @return array * Возвращает массив модулей */ public function getModuleSelect() { $result = array(); foreach ($this->moduleID as $key => $val) { if ($data = SiteModule::model()->findByPk((int) $key)) { $result[$data->id] = $data->name; } } return $result; }
<div class="container"> <div class="top-text"> <?php //Получаем содержимое страницы врачей $module = SiteModule::model()->find('url_to_controller LIKE "/doctor/doctor"'); if (!empty($module) && ($page = Pages::model()->find('type_module=' . $module->id . ' AND `status`=2'))) { ?> <?php echo $page->content; ?> <?php } ?> </div> </div> <?php foreach ($model['group'] as $data) { ?> <div class="container top-text"> <h1 class="text-center"><?php echo $data->name; ?> </h1> </div> <div class="container doctor-block"> <?php foreach ($model['element'][$data->id] as $dataElements) { ?>
public function deleteSiteModule($idSiteModule, $data, $siteModulePlaceKey) { $siteModule = SiteModule::model()->with('places')->findByPk($idSiteModule); if ($siteModule != null) { if ($siteModule->id_php_script != null) { $phpScriptInstance = $siteModule->phpScriptInstance; $this->deactivatePhpScript($phpScriptInstance->id_php_script_type); } $data[$siteModulePlaceKey] = $this->createModulePlaceConfig($siteModule->places); $siteModule->delete(); } return $data; }
public function init() { parent::init(); $this->modules = SiteModule::model()->resetScope()->findAll(); }
/** * @param $id * Возвращает название папки модуля (с загружаемыми файлами) по id модуля */ public function getFolderModelName($id) { $returnArray = array(); foreach (SiteModule::model()->findAll() as $data) { $nameArr = explode("/", $data->url_to_controller); $name = array_pop($nameArr); $returnArray[$data->id] = $name; } return $returnArray[$id]; }
protected function beforeSave() { $url_pref = 'doctor/'; $this->url = mb_strtolower($this->url); $module = SiteModule::model()->find('url_to_controller LIKE "/doctor/doctor"'); if (!empty($module) && ($page = Pages::model()->find('type_module=' . $module->id . ' AND `status`=1'))) { $url_pref = $page->url . '/'; } $this->url = $url_pref . str_replace("vrachi/", "", $this->url); return true; }
/** * Получить все модули раздела * @return array SiteModule */ public function getModules($idTemplate = null) { if ($this->_modules !== null) { return $this->_modules; } $this->_modules = array(); $idTemplate = $idTemplate != null ? $idTemplate : $this->id_module_template; if ($idTemplate == null) { // Если модулей нет, то устанавливаем родительские модули $parent = $this->getParent(); if ($parent != null) { $this->_modules = $parent->getModules(); return $this->_modules; } else { // получаем дефолтный шаблон модулей $idTemplate = SiteModuleTemplate::getIdDefaultTemplate(); if ($idTemplate == null) { return $this->_modules; } } } $this->_modules = SiteModule::model()->with(array('place' => array('condition' => 'place.id_module_template=:id_template', 'params' => array('id_template' => $idTemplate)), 'phpScriptInstance.phpScript'))->findAll(); return $this->_modules; }
public function getTypeModule() { $name = array(0 => 'Текстовая страница'); foreach (SiteModule::model()->findAll() as $data) { //Проверяю, не отлючен ли модуль if (SiteModuleSettings::model()->find('site_module_id = ' . $data->id . ' AND `status`=0')) { continue; } $name[$data->id] = $data->name; } return $name; }