/**
  * Выполняет отписку от рассылки
  *
  * REQUEST:
  * - mail - string - почта пользователя
  * - type - int - тип рассылки - \app\services\Subscribe::TYPE_*
  * - hash - string - проверочная сумма (чтобы нельзя было отписать другого)
  *
  * @return string
  *
  * @throws \cs\web\Exception
  */
 public function actionUnsubscribe()
 {
     self::validateRequestJson([['required', ['mail', 'type', 'hash']], ['integer', ['type']], ['email', ['mail']]]);
     $mail = self::getParam('mail');
     $type = self::getParam('type');
     $hash = self::getParam('hash');
     $user = User::find(['email' => $mail]);
     if (is_null($user)) {
         throw new Exception('Пользователь не найден');
     }
     $user = User::find(['email' => $mail, 'is_confirm' => 1]);
     if (is_null($user)) {
         throw new Exception('Пользователь не подтвержден');
     }
     $user = User::find(['email' => $mail, 'is_confirm' => 1, 'is_active' => 1]);
     if (is_null($user)) {
         throw new Exception('Пользователь заблокирован');
     }
     if (!Subscribe::hashValidate($mail, $type, $hash)) {
         throw new Exception('Контрольная сумма не совпадает, проверьте привильность введенной ссылки');
     }
     switch ($type) {
         case Subscribe::TYPE_NEWS:
             $user->update(['subscribe_is_news' => 0]);
             break;
         case Subscribe::TYPE_SITE_UPDATE:
             $user->update(['subscribe_is_site_update' => 0]);
             break;
         default:
             throw new Exception('Не верный тип рассылки');
             break;
     }
     return self::render();
 }
 public function actionAccept($id)
 {
     return self::doAction($id, function (\app\models\Union $item) {
         $item->accept();
         \cs\Application::mail($item->getUser()->getEmail(), 'Ваше объединение прошло модерацию', 'moderator_unions/accept', ['item' => $item]);
         Subscribe::add($item);
         SiteUpdate::add($item);
         $item->update(['is_added_site_update' => 1]);
     });
 }
 /**
  * AJAX
  * Добавляет site_update
  * Делает рассылку
  *
  * @param integer $id - идентификатор услуги
  *
  * @return string
  */
 public function actionSubscribe($id)
 {
     $item = Service::find($id);
     if (is_null($item)) {
         return self::jsonError(101, 'Не найдено послание');
     }
     Subscribe::add($item);
     SiteUpdate::add($item);
     $item->update(['is_added_site_update' => 1]);
     return self::jsonSuccess();
 }
 /**
  * AJAX
  * Добавляет site_update
  * Делает рассылку
  *
  * @param integer $id - идентификатор события
  *
  * @return string
  */
 public function actionSubscribe($id)
 {
     $item = \app\models\Event::find($id);
     if (is_null($item)) {
         return self::jsonError(101, 'Не найдено событие');
     }
     $start = microtime(true);
     Subscribe::add($item);
     SiteUpdate::add($item);
     $item->update(['is_added_site_update' => 1]);
     \Yii::info(microtime(true) - $start, 'gs\\actionSubscribe');
     return self::jsonSuccess();
 }
Example #5
0
 /**
  * делает рассылку о том что добавлено объединение
  *
  * @param int $id идентификатор объединения
  *
  * @return \yii\web\Response
  */
 public function actionObjects_subscribe($id)
 {
     return self::doAction($id, function (\app\models\Union $item) {
         Subscribe::add($item);
         SiteUpdate::add($item);
         $item->update(['is_added_site_update' => 1]);
     });
 }