Перейти к публикации

Сообщение при смене группы


Рекомендованные сообщения

Добрый вечер, у меня на сайте есть перевод пользователя в группы другие, на определенный срок. Подскажите, как сделать , чтобы при окончании срока группы пользователя, ему приходило сообщение?

Сайт: aviarobots.ru

Ссылка на сообщение
Поделиться на других сайтах

Никак, группа меняется при авторизации пользователя после указанного срока, до этого никакие данные в БД не пишутся.

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Captain сказал:

Никак, группа меняется при авторизации пользователя после указанного срока, до этого никакие данные в БД не пишутся.

Ну так мне так и нужно, чтобы человек авторизовался и ему пришло сообщение.

Ссылка на сообщение
Поделиться на других сайтах
On 08.06.2019 at 8:06 AM, Captain said:

Никак, группа меняется при авторизации пользователя после указанного срока, до этого никакие данные в БД не пишутся.

Про cron слышали?

У меня еженощно актуализируются все группы «временного пребывания», независимо от авторизации юзеров.

 

Brazilec, насколько вы знакомы с php?

Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...
В 12.06.2019 в 20:16, Datagor сказал:

Про cron слышали?

У меня еженощно актуализируются все группы «временного пребывания», независимо от авторизации юзеров.

 

Brazilec, насколько вы знакомы с php?

Небольшой скрипт в силах написать

Ссылка на сообщение
Поделиться на других сайтах

Тогда настройте 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, т.к. там уже прописаны все необходимые дефайны и инклюды.

Ссылка на сообщение
Поделиться на других сайтах

Только сейчас перечитал шапку темы и понял, что я описал автоматическую смену временных групп (без авторизации пользователей), но никак не затронул отсылку сообщения о смене группы.

Это ещё актульно?

Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, Datagor сказал:

Только сейчас перечитал шапку темы и понял, что я описал автоматическую смену временных групп (без авторизации пользователей), но никак не затронул отсылку сообщения о смене группы.

Это ещё актульно?

да

Ссылка на сообщение
Поделиться на других сайтах

Оставлю это здесь. Цитата из 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", "У тебя сменилась группа", "Нам очень жаль, но период твоей платной подписки подошел к концу. Плати бабло еще." );	

 

Изменено пользователем webair
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...