/** * Отклоняет объединение * * REQUEST: * - reason - str - причина отклонения * * @param int $id идентификатор объединения * * @return \yii\web\Response */ public function actionReject($id) { return self::doAction($id, function (\app\models\Union $item) { $item->reject(); \cs\Application::mail($item->getUser()->getEmail(), 'Ваше объединение отклонено модератором', 'moderator_unions/reject', ['item' => $item, 'reason' => self::getParam('reason')]); }); }
/** * Sends an email to the specified email address using the information collected by this model. * @param string $email the target email address * @return boolean whether the model passes validation */ public function contact($email) { if ($this->validate()) { Application::mail($email, 'Письмо с сайта galaxysss.ru: ' . $this->subject, 'contact', ['text' => $this->body, 'from' => ['email' => $this->email, 'name' => $this->name]]); return true; } else { return false; } }
/** * AJAX * Добавляет свое сообщение * * REQUEST: * - text - string - текст собщения * - to - int - идентификатор пользователя, для кого * * @return string json html сообщение мое отформатированное для чата */ public function actionSend() { $to = self::getParam('to'); $message = ChatMessage::add(['message' => self::getParam('text'), 'user_id_to' => $to]); $cid = Yii::$app->params['chat']['consultant_id']; if ($to == $cid) { Application::mail(User::find($cid)->getEmail(), 'Новое сообщение', 'new_message', ['message' => $message, 'user' => Yii::$app->user->identity]); } return self::jsonSuccess($this->renderFile('@app/views/cabinet_chat/send.php', ['message' => $message, 'user' => Yii::$app->user->identity])); }
public function add($stock_id) { if ($this->validate()) { $stock = Stock::find($stock_id); $request = Request::insert(['stock_id' => $stock_id, 'month' => $this->monthCounter]); Application::mail(User::find(Yii::$app->params['chat']['consultant_id'])->getEmail(), 'Запрос на добавление услуги', 'request', ['stock' => $stock, 'user' => \Yii::$app->user->identity, 'request' => $request]); return true; } else { return false; } }
/** * AJAX * Отправляет сообщение к заказу для клиента * * REQUEST: * - text - string - текст сообщения * * @param int $id идентификатор заказа gs_users_shop_requests.id * * @return \yii\web\Response json */ public function actionOrder_item_message($id) { $text = self::getParam('text'); $request = \app\models\Shop\Request::find($id); if ($request->getField('user_id') != Yii::$app->user->id) { return self::jsonErrorId(101, 'Это не ваш заказ'); } $request->addMessageToShop($text); Application::mail(\Yii::$app->params['mailer']['payment'], 'Новое сообщение', 'new_message_to_shop', ['request' => $request, 'text' => $text]); return self::jsonSuccess(); }
/** * @return boolean * * @throws \cs\web\Exception */ public function action() { if ($this->validate()) { /** @var \app\models\User $user */ $user = Yii::$app->user->identity; // добавляю в диспечер $fields = EmailChangeDispatcher::add($user->getId(), $this->email); // отправляю письмо Application::mail($this->email, 'Заявка на смену Email/Логина', 'change_email', ['url' => Url::to(['auth/change_email_activate', 'code' => $fields->getField('code')], true), 'user' => $user]); return true; } else { return false; } }
/** * Sends an email to the specified email address using the information collected by this model. * * @param string $email the target email address * * @return boolean whether the model passes validation * * @throws \cs\web\Exception */ public function send() { if ($this->validate()) { $user = User::find(['email' => $this->email]); if (is_null($user)) { throw new Exception('Пользователь не найден'); } $fields = \app\services\PasswordRecoverDispatcher::insert($user->getId()); \cs\Application::mail($this->email, 'Восстановление пароля', 'password_recover', ['user' => $user, 'url' => Url::to(['auth/password_recover_activate', 'code' => $fields['code']], true), 'datetime' => Yii::$app->formatter->asDatetime($fields['date_finish'])]); return true; } else { return false; } }
/** * Делает рассылку писем из списка рассылки */ public function actionIndex($isEcho = 1) { $this->isEcho = $isEcho; $items = []; $list = Collection::getList(); $c = $this->getIndex(); $c++; if ($c >= count($list)) { $c = 0; } $item = $list[$c]; $class = $item['class']; self::log('класс = ', $class); /** @var \app\services\investigator\InvestigatorInterface $class */ $class = new $class(); $className = $class->className(); try { $new = $class->getNewItems(); foreach ($new as $i) { $i['class'] = $className; $i['id'] = $c; $items[] = $i; } } catch (\Exception $e) { } if (count($items) > 0) { Application::mail('*****@*****.**', 'Появились новые послания', 'new_channeling', ['items' => $items]); self::log('новые = ', $items); } else { self::log('Нет ничего'); } // получаю какие есть $existList = Investigator::query(['class_name' => $className, 'status' => \app\models\Investigator::STATUS_NEW])->select('url')->column(); // добавляю свежие $rows = []; foreach ($items as $i) { if (!in_array($i['url'], $existList)) { $rows[] = [$i['class'], $i['url'], $i['name'], time(), \app\models\Investigator::STATUS_NEW]; } } // добавляю в БД if (count($rows) > 0) { Investigator::batchInsert(['class_name', 'url', 'name', 'date_insert', 'status'], $rows); } $this->setIndex($c); }
public function insert($fieldsCols = null) { $row = parent::insert(['beforeInsert' => function ($fields) { $fields['user_id'] = Yii::$app->user->identity->getId(); $fields['date_insert'] = gmdate('YmdHis'); return $fields; }]); $item = new \app\models\Union($row); $fields = []; if ($row['description'] == '') { $item = new \app\models\Union($row); $fields['description'] = GsssHtml::getMiniText($row['content']); $item->update($fields); } Application::mail(Yii::$app->params['moderator']['email'], 'Добавлено новое объединение', 'new_union', ['union' => $item]); return $item; }
/** * AJAX * Создает подписку для авторизованного или неавторизованного пользователя * Высылает письмо подтверждения email * * @return string json * error * 101, 'Такая почта уже зарегистрирована' */ public function actionMail() { $email = self::getParam('email'); $name = self::getParam('name'); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return self::jsonErrorId(101, 'Не корректный формат адреса'); } $email = strtolower($email); $user = User::find(['email' => $email, 'subscribe_is_tesla' => 1]); if ($user) { $user->update(['subscribe_is_tesla' => 1]); } else { $fields = ['email' => $email, 'datetime_reg' => gmdate('YmdHis'), 'is_active' => 1, 'is_confirm' => 0, 'name_first' => $name, 'subscribe_is_tesla' => 1]; $user = User::insert($fields); $fields = RegistrationDispatcher::add($user->getId()); \cs\Application::mail($email, 'Подтверждение почты', 'subscribe_activate', ['url' => Url::to(['subscribe/activate', 'code' => $fields['code']], true), 'user' => $user, 'datetime' => \Yii::$app->formatter->asDatetime($fields['date_finish'])]); } return self::jsonSuccess(); }
/** * Делает заказ * * @param int $id идентификатор генератора * * @return boolean whether the model passes validation */ public function insert($fieldsCols = null) { $id = $fieldsCols; $request = parent::insert(['beforeInsert' => function ($fields) { $fields['email'] = strtolower($fields['email']); $fields['datetime'] = time(); $fields['status'] = \app\models\Request::STATUS_1_WAIT; return $fields; }]); if ($request === false) { return false; } $request['product_id'] = $id; $this->email = strtolower($this->email); if (!Yii::$app->user->isGuest) { $user = Yii::$app->user->identity; $request = new \app\models\Request($request); $request->update(['user_id' => Yii::$app->user->getId(), 'product_id' => $id]); // письмо клиенту $result = \cs\Application::mail($user->getEmail(), 'Вы сделали очередной заказ', 'next_request_client', ['user' => $user, 'request' => $request]); } else { $fields = ['email' => $this->email, 'datetime_reg' => gmdate('YmdHis'), 'is_active' => 1, 'is_confirm' => 0, 'subscribe_is_tesla' => 1, 'name_first' => $this->name, 'phone' => $this->phone]; $user = User::insert($fields); $fields = \app\services\RegistrationDispatcher::add($user->getId()); $request = new \app\models\Request($request); $request->update(['user_id' => $user->getId(), 'product_id' => $id]); // письмо им \cs\Application::mail($this->email, 'Поздравляем вы сделали первый шаг к своему полю коллективного счастья', 'new_request_client', ['url' => Url::to(['site/activate', 'code' => $fields['code']], true), 'user' => $user, 'request' => $request]); } foreach (\Yii::$app->params['requestMailList'] as $item) { // письмо нам $result = Application::mail($item, 'Появился заказ на TeslaGen', 'new_request', ['request' => $request, 'user' => $user]); // VarDumper::dump([$result,$item]); } return $request; }
public function actionChenneling() { $itemsPerPage = $this->itemsPerPage; if (self::getParam('page', 1) == 1) { $cache = Application::cache(\app\models\Chenneling::MEMCACHE_KEY_LIST, function (PageController $controller) { $itemsPerPage = $controller->itemsPerPage; return $controller->renderFile('@app/views/page/chenneling_cache.php', $this->pageCluster(['query' => Chenneling::querylist()->orderBy(['date_insert' => SORT_DESC]), 'paginator' => ['size' => $itemsPerPage]])); }, $this, false); } else { $cache = $this->renderFile('@app/views/page/chenneling_cache.php', $this->pageCluster(['query' => Chenneling::querylist()->orderBy(['date_insert' => SORT_DESC]), 'paginator' => ['size' => $itemsPerPage]])); } return $this->render(['html' => $cache]); }
/** * @param array | string $select поля для выборки * должны быть возвращены lat, lng, html * @return array */ public function getOfficeList($select = null) { if (is_null($select)) { $select = ['point_lat as lat', 'point_lng as lng', 'concat("<h5>",point_address,"</h5>") as html']; } return Application::cache(self::PREFIX_CACHE_OFFICE_LIST . $this->getId(), function ($options) { $query = UnionOffice::query(['union_id' => $options['union_id']]); return $query->select($options['select'])->all(); }, ['select' => $select, 'union_id' => $this->getId()]); }
/** * AJAX * * REQUEST: * - monthcounter - int - количество покупамых месяцев * - stock_id - int - идентификатор акции */ public function actionAdd_step1() { $monthCounter = self::getParam('monthcounter'); $stockId = self::getParam('stock_id'); $request = Request::insert(['stock_id' => $stockId, 'month' => $monthCounter]); Application::mail(User::find(Yii::$app->params['chat']['consultant_id'])->getEmail(), 'Запрос на добавление услуги', 'request', ['stock' => Stock::find($stockId), 'user' => \Yii::$app->user->identity, 'request' => $request]); return self::jsonSuccess(['user' => ['email' => Yii::$app->user->identity->getEmail(), 'fio' => Yii::$app->user->identity->getNameFull()], 'request' => ['id' => $request->getId(), 'sum' => $monthCounter * 100 * 65]]); }
/** * AJAX * Отправляет сообщение к заказу для клиента * * REQUEST: * - text - string - текст сообщения * * @param int $id идентификатор заказа gs_users_shop_requests.id * * @return \yii\web\Response json */ public function actionItem_message($id) { $text = self::getParam('text'); $request = Request::find($id); $request->addMessageToClient($text); // отправка письма Application::mail($request->getClient()->getEmail(), 'Новое сообщение', 'new_message_to_client', ['request' => $request, 'text' => $text]); return self::jsonSuccess(); }
/** * AJAX * Создает подписку для авторизованного или неавторизованного пользователя * Высылает письмо подтверждения email * * @return string json * error * 101, 'Такая почта уже зарегистрирована' */ public function actionMail() { $email = self::getParam('email'); $name = self::getParam('name'); $email = strtolower($email); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return self::jsonErrorId(101, 'Не корректная почта'); } if (User::query(['email' => $email])->exists()) { return self::jsonErrorId(101, 'Такая почта уже зарегистрирована'); } if (Yii::$app->user->isGuest) { $fields = ['email' => $email, 'datetime_reg' => gmdate('YmdHis'), 'is_active' => 0, 'is_confirm' => 0, 'name_first' => $name]; foreach (Subscribe::$userFieldList as $field) { $fields[$field] = 1; } $user = User::insert($fields); } else { /** @var \app\models\User $user */ $user = Yii::$app->user->identity; $fields = ['email' => $email, 'datetime_reg' => gmdate('YmdHis'), 'is_active' => 0, 'is_confirm' => 0]; foreach (Subscribe::$userFieldList as $field) { $fields[$field] = 1; } $user->update($fields); } $fields = RegistrationDispatcher::add($user->getId()); \cs\Application::mail($email, 'Подтверждение почты', 'subscribe_activate', ['url' => Url::to(['subscribe/activate', 'code' => $fields['code']], true), 'user' => $user, 'datetime' => \Yii::$app->formatter->asDatetime($fields['date_finish'])]); return self::jsonSuccess(); }
/** * Устанавливает статус для заказа "Оплата подтверждена магазином" self::STATUS_PAID_SHOP * Прикрепляет билеты для заказа * * @param string $message - сообщение для статуса * * @return bool */ public function paid($message = null) { // выдача билетов $tickets_counter = $this->getProduct()->getField('tickets_counter'); for ($i = 0; $i < $tickets_counter; $i++) { Ticket::insert(['request_id' => $this->getId(), 'code' => substr(str_shuffle("012345678901234567890123456789"), 0, 12), 'date_insert' => time()]); } $this->addStatusToShop(self::STATUS_PAID_CLIENT); $this->addStatusToClient(self::STATUS_PAID_SHOP); $this->update(['is_paid' => 1]); $dostavka = $this->getField('dostavka'); switch ($dostavka) { case 1: $this->addStatusToClient(self::STATUS_DOSTAVKA_GET_MYSELF_POLET_WAIT); break; case 2: $this->addStatusToClient(self::STATUS_DOSTAVKA_GET_MYSELF_VOZNESENIE_WAIT); break; case 3: $this->addStatusToClient(['status' => self::STATUS_DOSTAVKA_MOSCOW_WAIT, 'message' => 'Наш посланник пытается с вами связаться для передачи подарка']); break; case 4: $this->addStatusToClient(['status' => self::STATUS_DOSTAVKA_RUSSIA_PREPARE, 'message' => 'Подарок находится в режиме подготовки к отправке']); break; case 5: $this->addStatusToClient(['status' => self::STATUS_DOSTAVKA_WORLD_PREPARE, 'message' => 'Подарок находится в режиме подготовки к отправке']); break; } // отправка письма Application::mail($this->getClient()->getEmail(), 'Ваш подарок', 'new_request_client', ['request' => $this]); Application::mail(\Yii::$app->params['mailer']['payment'], 'Заказ оплачен', 'new_request_shop', ['request' => $this]); // прибавление счетчика \app\models\Counter::inc($this->getProduct()->getPrice()); return true; }
/** * Регистрирует пользователей * * @param $email * @param $password * * @return static */ public static function registration($email, $password) { $email = strtolower($email); $fields = ['email' => $email, 'password' => self::hashPassword($password), 'is_active' => 0, 'is_confirm' => 0, 'datetime_reg' => gmdate('YmdHis'), 'referal_code' => Security::generateRandomString(20)]; // добавляю поля для подписки foreach (\app\services\Subscribe::$userFieldList as $field) { $fields[$field] = 1; } \Yii::info('REQUEST: ' . \yii\helpers\VarDumper::dumpAsString($_REQUEST), 'gs\\user_registration'); \Yii::info('Поля для регистрации: ' . \yii\helpers\VarDumper::dumpAsString($fields), 'gs\\user_registration'); $user = self::insert($fields); $fields = RegistrationDispatcher::add($user->getId()); \cs\Application::mail($email, 'Подтверждение регистрации', 'registration', ['url' => Url::to(['auth/registration_activate', 'code' => $fields['code']], true), 'user' => $user, 'datetime' => \Yii::$app->formatter->asDatetime($fields['date_finish'])]); return $user; }
/** * AJAX * @param $id * * @return \yii\web\Response */ public function actionSend_moderation($id) { return self::doAction($id, function (\app\models\Union $item) { $item->update(['moderation_status' => null]); // высылаю письмо Application::mail(Yii::$app->params['moderator']['email'], 'Обновлено объединение', 'update_union', ['union' => $item]); }); }
/** * Регистрирует пользователей * * @param $email * @param $password * @param $fields * * @return static */ public static function registration($email, $password, $fields = []) { $email = strtolower($email); $fields = ArrayHelper::merge($fields, ['email' => $email, 'password' => self::hashPassword($password), 'is_active' => 1, 'is_confirm' => 0, 'datetime_reg' => gmdate('YmdHis'), 'referal_code' => Security::generateRandomString(20), 'subscribe_is_bogdan' => 1]); $user = self::insert($fields); $fields = \app\services\RegistrationDispatcher::add($user->getId()); \cs\Application::mail($email, 'Подтверждение регистрации', 'registration', ['url' => Url::to(['auth/registration_activate', 'code' => $fields['code']], true), 'user' => $user, 'password' => $password, 'datetime' => \Yii::$app->formatter->asDatetime($fields['date_finish'])]); return $user; }