Example #1
0
 /**
  * Проверяет подписку авторизованного пользователя на событие
  * @return $this
  */
 public function checkSubscribe()
 {
     if (\Yii::$app->user->isGuest) {
         return $this;
     }
     $onCondition = 'event_subscriber.event_id = event.id and event_subscriber.user_id = :user_id';
     $onParams = ['user_id' => \Yii::$app->user->identity->id];
     $this->select('event.*, event_subscriber.user_id AS subscribe');
     $this->leftJoin(EventSubscriber::tableName(), $onCondition, $onParams);
     return $this;
 }
 /**
  * Уведомление при подуписке на событие
  */
 public function actionSubscriptionEventNotification()
 {
     $date_minus_two_hours = new \DateTime();
     $date_minus_two_hours = $date_minus_two_hours->modify('-2 hours');
     $email_queue = [];
     $wall_events = EventSubscriber::find()->where('created >= ' . $date_minus_two_hours->getTimestamp() . ' AND created <= ' . time())->with(['user', 'event'])->all();
     $events = [];
     foreach ($wall_events as $sunscriberLink) {
         $user = $sunscriberLink->user;
         $event = $sunscriberLink->event;
         $eventOwmner = $event->user;
         $events[$eventOwmner->email][] = ['username' => $user->username, 'avatar' => \Yii::getAlias('@frontend') . '/web/images/users/' . $user->avatar . '/60x.jpeg', 'link' => 'http://findspree.ru/user' . $user->id];
     }
     foreach ($events as $email => $ev) {
         $messages[] = \Yii::$app->mailer->compose('user-event-subscribe', ['subscribers' => $ev])->setFrom('*****@*****.**')->setTo($email)->setSubject('Для Вас есть новые уведомления на сайте http://findspree.ru');
     }
     if (isset($messages) && !empty($messages)) {
         \Yii::$app->mailer->sendMultiple($messages);
     }
 }
 /**
  * @param $event_id
  * @return array Вывод подписчиков на страницу события
  * Вывод подписчиков на страницу события
  * @throws \yii\web\NotFoundHttpException
  */
 public function actionEventSubscribers($event_id)
 {
     if (!\Yii::$app->request->isAjax) {
         throw new NotFoundHttpException();
     }
     \Yii::$app->response->format = Response::FORMAT_JSON;
     $dp = new ActiveDataProvider();
     $dp->query = EventSubscriber::find()->with('user')->where(['event_id' => $event_id])->orderBy(['id' => SORT_DESC]);
     $dp->pagination->pageSize = 12;
     return ['items' => $dp->getModels(), 'pageCount' => $dp->getPagination()->getPageCount(), 'totalCount' => $dp->getTotalCount(), 'page' => $dp->pagination->page, 'count' => $dp->getCount()];
 }
Example #4
0
 /**
  * @return EventQuery
  */
 public function getSubscribers()
 {
     return $this->hasMany(User::className(), ['id' => 'user_id'])->viaTable(EventSubscriber::tableName(), ['event_id' => 'id']);
 }
Example #5
0
 /**
  * @param $event_id
  *       Уведомлеие всех подписчиков мероприятия по емайл при отмеченной галке "Оповестить всех подписчиков" при
  *       отправке коммента
  * @todo это наверное лучше перенести именно в метод добавления коммента? В модель создания комментария, в
  *       afterInsert
  */
 public static function commenatAllNotification($event_id, $message)
 {
     $Subscribers = EventSubscriber::find()->with('user')->where(['event_id' => $event_id])->all();
     $Event = Event::findOne(['id' => $event_id]);
     foreach ($Subscribers as $User) {
         $messages[] = \Yii::$app->mailer->compose('message-all-notify', ['msg' => htmlspecialchars($message), 'notifier' => \Yii::$app->user->identity])->setFrom('*****@*****.**')->setTo($User->user->email)->setSubject('Оповещение от владельца мероприятия "' . $Event->name . '"');
     }
     if (isset($messages) && !empty($messages)) {
         \Yii::$app->mailer->sendMultiple($messages);
     }
 }