public static function run() { $userModel = CatalogUsers::fetch(Yii::app()->user->getId()); if ($userModel->id > 0) { // Надотпроверять какие данные пользователь уже ввел чтобы выдавать ему то чего он еще не ввел // 1. Типо пользователя ( если он не добавил ни фирму ни отель ни курорт ) // надо сделать так чтобы при добавлении отеля тур фирмы курорта пользователю выставлялось занчение поля trainings = 1 ( т.е. не выдавать ему заново выберите тип ) // Проверяем небыла ли открыта ссесия ранее $checkModel = CatalogTrainingSession::fetchAll(DBQueryParamsClass::CreateParams()->setConditions("user_id=:user_id AND ( status_id=:status1 OR status_id=:status2 )")->setParams(array(":user_id" => Yii::app()->user->getId(), ":status1" => 1, ":status2" => 2))->setCache(-1)); if (sizeof($checkModel) == 0) { //// Определеяем на каком шагу находится пользователь $chechSession = CatalogTraining::sql("SELECT * FROM catalog_training WHERE `group` NOT IN ( SELECT `group` FROM catalog_training_session WHERE user_id='" . Yii::app()->user->getId() . "' ) ORDER BY `group` LIMIT 1 "); if (sizeof($chechSession) > 0) { if ($chechSession[0]["condition"]) { $chechSession[0]["condition"] = str_replace(":userId", Yii::app()->user->getId(), $chechSession[0]["condition"]); $checkCondition = CatalogUsers::sql($chechSession[0]["condition"]); if (sizeof($checkCondition) == 0) { // Если пользователь не отвечает требованию пользователю, то чтобы не проверять каждый раз, добавляем запись $newSession = new CatalogTrainingSession(); $newSession->user_id = Yii::app()->user->getId(); $newSession->training_id = $chechSession[0]["id"]; $newSession->group = $chechSession[0]["group"]; $newSession->status_id = 4; $newSession->date = time(); $newSession->save(); return; } } // Если нет то открываем её $newSession = new CatalogTrainingSession(); $newSession->user_id = Yii::app()->user->getId(); $newSession->training_id = $chechSession[0]["id"]; $newSession->group = $chechSession[0]["group"]; $newSession->status_id = 1; $newSession->date = time(); if (!$newSession->save()) { print_r($newSession->getErrors()); } } } else { $checkModel[0]->status_id = 1; $checkModel[0]->save(); } } }
public function run($args) { $countLimit = SiteHelper::getConfig("subscribee_count_send"); $emails = array(); $countSend = 0; $res = SubscribeItems::findByAttributes(array("status_id" => 2)); foreach ($res as $line) { // 1 - отправляем и зарегеным и подписчикам if ($line->users == 1 || $line->users == 2) { $lisUsers = CatalogUsers::sql("SELECT u.* FROM catalog_users u WHERE `active`=1 AND subscribe=1 AND !exists( SELECT id FROM subscribe_send WHERE email=u.email AND item_id='" . $line->id . "' AND is_reg=1 ) LIMIT " . $countLimit); foreach ($lisUsers as $userLine) { $emails[] = array("email" => $userLine["email"], "name" => $userLine["name"]); $newSend = new SubscribeSend(); $newSend->item_id = $line->id; $newSend->user_id = $userLine["id"]; $newSend->email = $userLine["email"]; $newSend->is_reg = 1; if (!$newSend->save()) { print_r($newSend->getErrors()); } } } if (sizeof($emails) < $countLimit && ($line->users == 1 || $line->users == 3)) { $lisUsers = CatalogUsers::sql("SELECT u.* FROM subscribe_users u WHERE !exists( SELECT id FROM subscribe_send WHERE email=u.email AND item_id='" . $line->id . "' AND is_reg=0 ) LIMIT " . ($countLimit - sizeof($emails))); foreach ($lisUsers as $userLine) { $emails[] = array("email" => $userLine["email"], "name" => $userLine["name"]); $newSend = new SubscribeSend(); $newSend->item_id = $line->id; $newSend->user_id = null; $newSend->email = $userLine["email"]; $newSend->is_reg = 0; if (!$newSend->save()) { print_r($newSend->getErrors()); } } } if ($line->users == 4) { $usersList = trim(strip_tags($line->users_list)); if (!empty($usersList)) { $listEmail = explode(",", $usersList); for ($m = 0; $m < sizeof($listEmail); $m++) { $listEmail[$m] = trim($listEmail[$m]); $ext = SubscribeSend::findByAttributes(array("item_id" => $line->id, "email" => $listEmail[$m])); if (sizeof($ext) == 0) { $emails[] = array("email" => $listEmail[$m], "name" => "пользователь"); $newSend = new SubscribeSend(); $newSend->item_id = $line->id; $newSend->user_id = null; $newSend->email = $listEmail[$m]; $newSend->is_reg = 0; if (!$newSend->save()) { print_r($newSend->getErrors()); } } } } } if (sizeof($emails) > 0) { for ($n = 0; $n < sizeof($emails); $n++) { $countSend++; $message = $line->description; $message = str_replace("@user_name@", $emails[$n]["name"], $message); SiteHelper::mailto($line->subject, $line->from, $emails[$n]["email"], stripslashes($message), "", "", array("<!-- @openSubscribeLink@ -->" => "<img src=\"" . Yii::app()->params["baseUrl"] . "site/subscribeOpen/subscribe/" . $line->id . "/email/" . $emails[$n]["email"] . "\" alt=\"\" style=\"width:0px;height:0px\" />")); } } // Сохраняем количество оптравленных, чтобы не считать каждый раз if ($countSend > 0) { $line->count_send += $countSend; $line->save(); } // Если адресатов нет или их количество меньше чем лимит то финализируем рассылку if (sizeof($emails) == 0 || $countSend < $countLimit) { $line->status_id = 3; $line->save(); } } }