Информация к новости
  • Просмотров: 3060
  • Автор: Алексей
  • Дата: 26-05-2011, 20:24
26-05-2011, 20:24

Привер использования DLE API - смена группы пользователя с отправкой уведомления

Категория: Уроки Dle


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

Есть сайт, для доступа к определенным разделам которого надо находиться в определенной группе. В данном случае, группа называется "Студенты", и имеет идентификатор группы, равный восьми. Мне откровенно надоело вручную переводить людей в эту группу, каждый раз заходя в админпанель, в раздел управления пользователями.

Поэтому я решил написать простой скрипт, который использовет возможности API для Datalife Engine.

Далее, просто код, с минимумом комментариев:

<?  
#############################################  
#made exclusively for http://apache.kiev.ua #  
#############################################  
if(!defined('DATALIFEENGINE'))  
{  
die("Hacking attempt!");  
}  
include_once(ENGINE_DIR . '/api/api.class.php');//подключаем API  
  
if ($_REQUEST['username']) {$data=$dle_api->take_user_by_name($_REQUEST['username']);}//проверяем, передавалось ли имя пользователя через форму этому же скрипту  
if ($data['user_id']==0 && $_REQUEST['username']) {$status = "<div style='color:red'>Пользователь не найден!</div>";}//если идентифакатор равен нулю при том, что имя пользователя все-таки передавалось форме, говорим, что такого пользователя вообще нету  
else if (!$_REQUEST['username']) {$status="<div style='color:grey'>Ожидается действие со стороны пользователя...</div>";}//это мы говорим, если никто ничего не отправлял через форму  
else if ($data['user_group']==8) {$status="<div style='color:green'>Пользователь в группе.</div>";}//это потомучто мы как раз переводим в группу с номером 8  
else if ($data['user_group']!=4) {$status="<div style='color:red'>Невозможно перевести! Идентификатор группы ".$data['user_group']." и ее уже сменить нельзя.</div>";}// это на тот случай, если пользователь находится в той группе, из которой его нельзя переводить (админ, модератор, гость и т.д.)  
$content = "Состояние: ".$status."<hr>";  
if ($user_group[$member_id['user_group']]['moderation'])//если тому, кто открывает эту страницу дозволена модерация, то выводим форму  
  {  
    $content .= <<<HTML  
<form action="index.php?do=regroup" method="post">Кого перевести: <input name="username" type="text" size="30" maxlength="30">&nbsp;<input value="Сменить группу на 'Студенты'" type="submit"> </form>  
HTML;  
  }  
else $content="<center>Вам тут делать нечего.</center>";//а это - если открывшему страницу не дозволена модерация.  
$tmp=$data;//копия данных о пользователе, которого мы хотим редактировать  
  
if ($_REQUEST['username'] && $data['user_id']>0 && $data['user_group']>=4 && $data['user_group']!=8) //если пользователь найден, имеет группу больше 3 (тоесть, не админ, модератор, журналист), и не находится уже в группе "Студенты"  
  {  
    $content .="Последнее изменение: <br><strong>".$_REQUEST['username']."</strong> id:".$data['user_id']." текущая группа:<strong> ".$data['user_group']."</strong>";  
    $data=$dle_api->change_user_group($data['user_id'],8); //то переводим его в группу "Студенты"  
    $tmp=$dle_api->send_pm_to_user($data['user_id'], "Перевод в группу", "Вы были переведены в группу 'СТУДЕНТЫ'", "robot"); //и высылаем ему ЛС с уведомлением об этом.  
  }  
  
$tpl->load_template( 'static.tpl' );//открываем шаблон статической страницы (он самый простой обычно - ничего лишнего)  
$tpl->set( '{static}', $content);//заменяем в шаблоне тег "{static}" на то, что нам надо вывести на экран  
$tpl->compile( 'content' );//собираем шаблон  
$tpl->clear();//удаляем временные данные  
?>  

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
^