Регистрация
Вход через соцсети
Восстановление пароля

Отправка письма пользователю

Новый топик
16.04.2014, 19:46
Ответить | Цитировать
Pilot
Тех-Альянс

Зарегистрирован:
2007-02-20
Сообщений: 42

1) Есть компонент. Он полностью пустой, кроме системных настроек. Этот компонент добавлен в скрытый раздел сайта. Например раздел имеет вид site.ru/cron/ Эта страница дёргается кроном раз в сутки, ночью, в три часа ночи.

2) Пользователь проходит регистрацию. После этого, он имеет права на добавление объектов. После добавления объекта, в базе сохраняется этот объект, и в поле User_ID стоит цифра - id пользователя, добабившего объект. Так же сохраняется и дата последнего редактирования этого объекта в поле LastUpdated.

joxi.ru/BxNNUxjKTJB-QiGa-qU

Код:

Код:
<?php
// устанавливаем количество дней, через которое новсть будет выключаться. Дата для отсчёта - дата последнего редактирования, в т.ч. включение или выключение
$proshlo = 30;
// выполняем выключение в базе данных
$nc_core->db->get_var("UPDATE `Message164` SET `Checked`=0 WHERE TO_DAYS(NOW()) - TO_DAYS(LastUpdated) >= $proshlo");
// отправляем письмо тем пользователям, которые не редактировали новость 30 дней с текстом о выключении его объявления
$res = $nc_core->db->get_var("SELECT User_ID FROM `message164` where `Checked`=0");
$mail = $nc_core->db->get_var("SELECT Email FROM `user` where `User_ID`=$res");
if ($res > 0) {
echo " результат $res";
$mailer = new CMIMEMail();
$text = "Текст письма";
$mailer->mailbody( strip_tags($text), $text);
$mailer->send("$mail", "info@site.ru", "info@site.ru", "Предупреждение о выключении новости.", "site");

}
?>




3) Скрипт проходит по всей таблице message164 находит те строки, которые отвечают условиям, т.е. редактировались 30 дней назад и в этом случае выключает эти строки с отправкой письма пользователю, который редактировал новость 30 дней назад.

Код отправляет письмо (выделен красным) не всем найденным пользователям. А только одному.

Прошу помощи!

Pilot
16.04.2014, 19:48
Ответить | Цитировать
Pilot
Тех-Альянс

Зарегистрирован:
2007-02-20
Сообщений: 42

Я так понимаю тут нужен цикл. Проверил строку, если нашёл соответствие отправил сразу письмо. Если не нашёл, то движемся дальше.

Pilot
22.04.2014, 00:23
Ответить | Цитировать
Гость
Гость

$res = $nc_core->db->query("SELECT User_ID FROM `message164` where `Checked`=0", ARRAY_N );

foreach ($res as $row) {
$mail = $nc_core->db->get_var("SELECT Email FROM `user` where `User_ID`=$row['User_ID']");
$mailer = new CMIMEMail();
$text = "Текст письма";
$mailer->mailbody( strip_tags($text), $text);
$mailer->send("$mail", "info@site.ru", "info@site.ru", "Предупреждение о выключении новости.", "site");
}
198 196 2014-04-22 00:23:27 13596
Описание проекта