Brazilec 0 Опубликовано: 7 июня 2019 Рассказать Опубликовано: 7 июня 2019 Добрый вечер, у меня на сайте есть перевод пользователя в группы другие, на определенный срок. Подскажите, как сделать , чтобы при окончании срока группы пользователя, ему приходило сообщение? Сайт: aviarobots.ru Цитата Ссылка на сообщение Поделиться на других сайтах
Captain 625 Опубликовано: 8 июня 2019 Рассказать Опубликовано: 8 июня 2019 Никак, группа меняется при авторизации пользователя после указанного срока, до этого никакие данные в БД не пишутся. Цитата Ссылка на сообщение Поделиться на других сайтах
Brazilec 0 Опубликовано: 8 июня 2019 Рассказать Опубликовано: 8 июня 2019 Автор 3 часа назад, Captain сказал: Никак, группа меняется при авторизации пользователя после указанного срока, до этого никакие данные в БД не пишутся. Ну так мне так и нужно, чтобы человек авторизовался и ему пришло сообщение. Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 12 июня 2019 Рассказать Опубликовано: 12 июня 2019 On 08.06.2019 at 8:06 AM, Captain said: Никак, группа меняется при авторизации пользователя после указанного срока, до этого никакие данные в БД не пишутся. Про cron слышали? У меня еженощно актуализируются все группы «временного пребывания», независимо от авторизации юзеров. Brazilec, насколько вы знакомы с php? Цитата Ссылка на сообщение Поделиться на других сайтах
Brazilec 0 Опубликовано: 7 июля 2019 Рассказать Опубликовано: 7 июля 2019 Автор В 12.06.2019 в 20:16, Datagor сказал: Про cron слышали? У меня еженощно актуализируются все группы «временного пребывания», независимо от авторизации юзеров. Brazilec, насколько вы знакомы с php? Небольшой скрипт в силах написать Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 7 июля 2019 Рассказать Опубликовано: 7 июля 2019 Тогда настройте Cron на запуск вашего скрипта, который ежедневно в нужное вам время делает что-то типа этого: <?php // Меняем значение группы временного пребывания на постоянную по истечении срока пребывания. В примере - меняю 22 группу на 21-ю. $db->query( "UPDATE " . PREFIX . "_users SET user_group = REPLACE(user_group, 22, 21) WHERE user_group = 22 AND time_limit <> \"\" AND time_limit < UNIX_TIMESTAMP(NOW())" ); echo "+ Obnovleny vremennye gruppy. \r\n"; // Подчищаем. Удаляем бессмысленный срок пребывания во временной группе из записей с постоянной группой. $db->query( "UPDATE " . PREFIX . "_users SET time_limit = \"\" WHERE user_group = 21 AND time_limit <> \"\" " ); echo "+ U gruppy #21 sbroshen parametr time_limit. \r\n"; ?> Удобно добавить этот код в имеющийся файл Крона DLE, т.к. там уже прописаны все необходимые дефайны и инклюды. Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 7 июля 2019 Рассказать Опубликовано: 7 июля 2019 Только сейчас перечитал шапку темы и понял, что я описал автоматическую смену временных групп (без авторизации пользователей), но никак не затронул отсылку сообщения о смене группы. Это ещё актульно? Цитата Ссылка на сообщение Поделиться на других сайтах
Brazilec 0 Опубликовано: 8 июля 2019 Рассказать Опубликовано: 8 июля 2019 Автор 22 часа назад, Datagor сказал: Только сейчас перечитал шапку темы и понял, что я описал автоматическую смену временных групп (без авторизации пользователей), но никак не затронул отсылку сообщения о смене группы. Это ещё актульно? да Цитата Ссылка на сообщение Поделиться на других сайтах
webair 178 Опубликовано: 8 июля 2019 Рассказать Опубликовано: 8 июля 2019 (изменено) Оставлю это здесь. Цитата из API DLE, можете просто скопировать код и использовать (замените $this->db на $db) /** * Sending a personal message to the user * @param $user_id int - Recipient's ID * @param $subject string - Message subject * @param $text string - Message text * @param $from string - Sender name * @return int - code * -1: the recipient does not exist * 0: operation failed * 1: operation was successfully completed */ function send_pm_to_user($user_id, $subject, $text, $from) { $user_id = intval( $user_id ); $count_arr = $this->load_table(USERPREFIX."_users", "count(user_id) as count", "user_id = '$user_id'"); if($count_arr['count'] == 0 ) return - 1; $subject = $this->db->safesql( $subject ); $text = $this->db->safesql( $text ); $from = $this->db->safesql( $from ); $now = time(); $q = $this->db->query( "insert into " . PREFIX . "_pm (subj, text, user, user_from, date, pm_read, folder) VALUES ('$subject', '$text', '$user_id', '$from', '$now', '0', 'inbox')" ); if( ! $q ) return 0; $this->db->query( "update " . USERPREFIX . "_users set pm_unread = pm_unread + 1, pm_all = pm_all+1 where user_id = '$user_id'" ); return 1; } А если хотите отправлять email, то это тоже просто: include_once (DLEPlugins::Check(ENGINE_DIR . '/classes/mail.class.php')); $mail = new dle_mail( $config ); $mail->send( "vasya@mail.ru", "У тебя сменилась группа", "Нам очень жаль, но период твоей платной подписки подошел к концу. Плати бабло еще." ); Изменено 8 июля 2019 пользователем webair 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.