public function run()
 {
     $config = DI::get()->getConfig();
     $timeOut = $config->onlineMonitoringTimeout;
     // Let it be simple for a while
     $channelId = 1;
     /** @var PropertiesDAO $props */
     foreach (PropertiesDAO::create()->getRegisteredList() as $props) {
         if (!($limit = $props->getOnlineNotificationLimit())) {
             continue;
         }
         $online = OnlineDAO::create();
         if ($online->isUserOnline($channelId, $props->getUserId())) {
             continue;
         }
         $onlineCount = $online->getOnlineCount($channelId);
         if (time() - $timeOut < strtotime($props->getOnlineNotificationLast())) {
             continue;
         }
         if ($onlineCount >= $limit) {
             $user = UserDAO::create()->getById($props->getUserId());
             $list = '';
             foreach ($online->getOnlineList($channelId) as $userId => $userName) {
                 $list .= "<li>{$userName}</li>";
             }
             $msg = "<h2>Достижение заданного онлайна в SocioChat.Me</h2>\n<p>Вы получили данное письмо, потому что пожелали уведомить вас, когда в чате будет более {$limit} человек.</p>\n<p>Сейчас на основном канале общается {$onlineCount} человек</p>\n<ul>{$list}</ul>\n<p><a href=\"" . $config->domain->protocol . $config->domain->web . "\">Присоединяйтесь</a>!</p>";
             $message = MailQueueDAO::create();
             $message->setEmail($user->getEmail())->setTopic('SocioChat.Me - Заходите к нам!')->setMessage($msg);
             $message->save();
             $props->setOnlineNotificationLast(DbQueryHelper::timestamp2date());
             $props->save(false);
         }
     }
 }
Пример #2
0
 public function run()
 {
     $mail = new Mail();
     /** @var MailQueueDAO $message */
     foreach (MailQueueDAO::create()->getAllList() as $message) {
         $mail->send($message->getEmail(), $message->getTopic(), $message->getMessage());
         $message->dropById($message->getId());
     }
 }
Пример #3
0
if (!$email || !$token) {
    showFirst($email);
    exit;
}
$form = new Form();
$form->import($_POST);
$form->addRule(ActivationsDAO::EMAIL, Rules::email(), 'email в таком формате не может существовать.', 'emailPattern')->addRule(ActivationsDAO::EMAIL, function ($val) {
    $user = UserDAO::create()->getByEmail($val);
    return (bool) $user->getId();
}, 'Такой email не найден в системе.', 'userSearch');
$validation = $form->validate();
if (!$validation || $sessionToken != $token) {
    showFirst($email, $validation, $form);
    exit;
}
// Поиск прежних активаций и аннуляция
$activation = ActivationsDAO::create();
$activation->getByEmail($email);
if ($activation->getId() && !$activation->getIsUsed()) {
    $activation->setIsUsed(true);
    $activation->save();
}
// Делаем активационный код
$activation = ActivationsDAO::create();
$activation->fillParams([ActivationsDAO::EMAIL => $email, ActivationsDAO::CODE => substr(base64_encode(PasswordUtils::get(64)), 0, 64), ActivationsDAO::TIMESTAMP => date('Y-m-d H:i:s'), ActivationsDAO::USED => false]);
$activation->save();
$msg = "<h2>Восстановление пароля в СоциоЧате</h2>\n<p>Была произведена процедура восстановления пароля с использованием вашего email.</p>\n<p>Для подтверждения сброса пароля перейдите по <a href=\"" . $config->domain->protocol . $config->domain->web . "/activation.php?email={$email}&code=" . $activation->getCode() . "\">ссылке</a></p>\n<p>Данная ссылка действительна до " . date('Y-m-d H:i', time() + $config->activationTTL) . "</p>";
$mailer = \SocioChat\DAO\MailQueueDAO::create();
$mailer->setEmail($email)->setTopic('Sociochat.me - Восстановление пароля')->setMessage($msg);
$mailer->save();
require_once "pages/recovery/recovery2.php";