- Добавлено перемешивание массива ссылок в случайном порядке;

- Добавление прерывание отправки кейсов пользователю, после отправки первого;
parent 057adeea
...@@ -124,43 +124,52 @@ class DefaultController extends BaseController ...@@ -124,43 +124,52 @@ class DefaultController extends BaseController
$baseUrl = 'http://task-on.com/'; $baseUrl = 'http://task-on.com/';
// Получили массив url-ов в категории // Получили массив url-ов в категории
$urls = ArrayHelper::map(CoContent::find()->where(['category_id'=>$category_id])->all(), 'id', 'url'); $urls = ArrayHelper::map(CoContent::find()->where(['category_id'=>$category_id])->all(), 'id', 'url');
// Перемешали массив ссылок в случайном порядке
shuffle($urls);
// Перебираем в цикле пользователей // Перебираем в цикле пользователей
foreach($users as $user) { foreach($users as $user) {
// Получили дату для дальнейшего сравнения // Определили отправленность сообщения
$deliveryDate = new \DateTime($user->delivery_date); $sendedToUser=false;
// Если пользователь подписан и дата соответствует требованиям // Если письмо юзеру еще не отправлено
if (Bid::find()->where(['email' => $user->email])->exists() && $deliveryDate<=$date) { if ($sendedToUser===false) {
// Перебираем все url-ы // Получили дату для дальнейшего сравнения
foreach($urls as $url) { $deliveryDate = new \DateTime($user->delivery_date);
// Получаем время просмотра каждой страницы // Если пользователь подписан и дата соответствует требованиям
$watchingtime = TriggerLogs::getSummaryTimeByUrl($url, $user->id); if (Bid::find()->where(['email' => $user->email])->exists() && $deliveryDate<=$date) {
// Если суммарное время просмотра больше минимальной нормы // Перебираем все url-ы
if ((int)$watchingtime>(int)$neededTime) { foreach($urls as $url) {
// Производим отправку письма // Получаем время просмотра каждой страницы
// Получаем почту $watchingtime = TriggerLogs::getSummaryTimeByUrl($url, $user->id);
$email = $user->email; // Если суммарное время просмотра больше минимальной нормы
// Генерируем хеш if ((int)$watchingtime>(int)$neededTime) {
$hash=AuthHashes::setNewHash($email); // Производим отправку письма
// Сформировали дату // Получаем почту
$templateData = [ $email = $user->email;
'case_link' => $baseUrl.$url.'?hash='.$hash.'&email='.$email // Генерируем хеш
]; $hash=AuthHashes::setNewHash($email);
// Производим отправку // Сформировали дату
/** @var \DateTime $time_now */ $templateData = [
TriggerSchedule::sendMessage($email, $template_id, $templateData, null); 'case_link' => $baseUrl.$url.'?hash='.$hash.'&email='.$email
];
// Производим отправку
/** @var \DateTime $time_now */
TriggerSchedule::sendMessage($email, $template_id, $templateData, null);
// Произвели отправку, следовательно переопределили значение переменной
$sendedToUser=true;
}
} }
// Создали дату следующей отправки
$updatedDate=new \DateTime();
// Произвели модификацию даты
$updatedDate->modify('+7 days');
/** @var User $user */
// Нашли пользователя
$user=User::findOne($this->id);
// Переопределили поле
$user->delivery_date = $updatedDate->format('Y-m-d');
// Сохранили изменения
$user->save(false);
} }
// Создали дату следующей отправки
$updatedDate=new \DateTime();
// Произвели модификацию даты
$updatedDate->modify('+7 days');
/** @var User $user */
// Нашли пользователя
$user=User::findOne($this->id);
// Переопределили поле
$user->delivery_date = $updatedDate->format('Y-m-d');
// Сохранили изменения
$user->save(false);
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment