/** * Выполняет отписку от рассылки * * 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(); }
/** * делает рассылку о том что добавлено объединение * * @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]); }); }