public function deactivate(Plugin $plugin) { $data = $plugin->getData(); if ($data === null || !isset($data['id_menu'])) { // throw new ErrorException('Плагин установлен неверно.'); } $data = $this->deleteMenu(@$data['id_menu'], $data, 'id_menu_module_template'); // Удаляем: все отправленные и неотправленные события по типу события + подписчиков + тип события $eventType = isset($data['id_event_type']) ? NotifierEventType::model()->findByPk($data['id_event_type']) : null; if ($eventType != null) { $eventType->delete(); } Yii::app()->authManager->removeAuthItemObject('list', $data['id_object']); $this->updateMenu = true; unset($data['id_menu'], $data['id_event_type']); $plugin->setData($data); }
/** * Добавляет уведомления по sql выражению в типе уведомления */ public function addNotifierEventsByQuery() { //Получаем все типы событий $notifierEventTypes = NotifierEventType::model()->findAll(array('order' => 'id_mail_account')); $c = count($notifierEventTypes); for ($i = 0; $i < $c; $i++) { $curType = $notifierEventTypes[$i]; if ($curType->interval_value != null) { //Если таймаут со времени последнего выполнения не прошел, то пропускаем if (!$curType->getTimeoutIsExpired()) { continue; } $curType->updateLastTime(); } $selectSql = trim($curType->selectQuery); if (empty($selectSql)) { continue; } //События добавляются вручную $needCache = NotifierEvent::getCacheSubscribersEmails(); NotifierEvent::setCacheSubscribersEmails(true); //Заставляем кешировать результаты выборки подписчиков //Должны получить id_instance $dataReader = Yii::app()->db->createCommand($selectSql)->query(); foreach ($dataReader as $row) { $idInstance = $row['id_instance']; $notifierEvent = new NotifierEvent(); $notifierEvent->id_event_type = $curType->id_event_type; $notifierEvent->id_instance = $idInstance; $notifierEvent->save(); $updateSql = trim($curType->doneQuery); if (empty($updateSql)) { continue; } //Отмечаем добавленные экземпляры Yii::app()->db->createCommand(strtr($updateSql, array('<<id_instance>>' => $idInstance)))->execute(); } $dataReader->close(); NotifierEvent::setCacheSubscribersEmails($needCache); } }
public function deactivate(Plugin $plugin) { $data = $plugin->getData(); if (!is_array($data)) { throw new ErrorException('Плагин установлен неверно.'); } $trans = Yii::app()->db->beginTransaction(); $idMenuKeys = array('idMenuLogin', 'idMenuRegister', 'idMenuRecover', 'idMenuProfile', 'idMenuUser'); //если в массиве $data нет всех ключей из $idMenuKeys if (count(array_diff($idMenuKeys, array_keys($data))) > 0) { throw new ErrorException('Плагин установлен неверно.'); } //удаляем разделы меню foreach ($idMenuKeys as $idMenuKey) { $data = $this->deleteMenu($data[$idMenuKey], $data, 'id_menu_module_template_' . $idMenuKey); unset($data[$idMenuKey]); } //удаляем типы событий $paramNames = array('idEventTypeRecover', 'idEventTypeRegister'); $etIds = array(); foreach ($paramNames as $paramName) { if ($id = HArray::val($data, $paramName)) { $etIds[] = $id; } } if ($etIds) { foreach (NotifierEventType::model()->findAllByPk($etIds) as $eventType) { $eventType->delete(); } } unset($data['idEventTypeRecover'], $data['idEventSubscriberRecover'], $data['idEventTypeRegister']); //удаляем виджет авторизации $data = $this->deleteSiteModule($data['id_widget_authorize'], $data, 'widget_authorize_place'); unset($data['id_widget_authorize']); $data['cabinetEnabled'] = false; $plugin->setData($data); $trans->commit(); }
public function deactivate(Plugin $plugin) { $data = $plugin->getData(); if ($data === null || !isset($data['id_menu'])) { throw new ErrorException('Плагин установлен неверно.'); } // Удаляем: все отправленные и неотправленные события по типу события + подписчиков + тип события $eventType = NotifierEventType::model()->findByPk(@$data['idEventTypeNewOffer']); if ($eventType != null) { $eventType->delete(); } $data = $this->deleteMenu($data['id_menu'], $data, 'id_menu_module_template'); $data = $this->deleteSiteModule($data['id_site_module_category'], $data, 'site_module_place_category'); $data = $this->deleteSiteModule($data['id_site_module_cart'], $data, 'site_module_place_cart'); $data = $this->deleteSiteModule($data['id_site_module_brand'], $data, 'site_module_place_brand'); Yii::app()->authManager->removeAuthItemObject('list', $data['id_object_product']); Yii::app()->authManager->removeAuthItemObject('list', $data['id_object_category']); Yii::app()->authManager->removeAuthItemObject('list', $data['id_object_offer']); Yii::app()->authManager->removeAuthItemObject('list', $data['id_object_brand']); if (!isset($data['id_object_remain_status'])) { $data['id_object_remain_status'] = 529; } Yii::app()->authManager->removeAuthItemObject('list', $data['id_object_remain_status']); if (!isset($data['id_object_invoice'])) { $data['id_object_invoice'] = 'id_object_invoice'; } Yii::app()->authManager->removeAuthItemObject('list', $data['id_object_invoice']); $this->updateMenu = true; unset($data['id_menu'], $data['id_site_module_category'], $data['id_site_module_cart'], $data['id_site_module_brand']); $plugin->setData($data); }