Example #1
0
 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);
 }
Example #2
0
 /**
  * Добавляет уведомления по 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);
     }
 }
Example #3
0
 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();
 }
Example #4
0
 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);
 }