После долгой паузы, вызванной некоторыми событиями из личной жизни и учебы, расскажу вам о том, что я сегодня вечером делал для одного студенческого сайта.
Есть сайт, для доступа к определенным разделам которого надо находиться в определенной группе. В данном случае, группа называется "Студенты", и имеет идентификатор группы, равный восьми. Мне откровенно надоело вручную переводить людей в эту группу, каждый раз заходя в админпанель, в раздел управления пользователями.
Поэтому я решил написать простой скрипт, который использовет возможности 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"> <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();//удаляем временные данные
?>
#############################################
#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"> <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();//удаляем временные данные
?>