Файл: admin.php
Строк: 313
<?php
require_once('core/start.php');
if($user['level']<1){
header('location:/');
die();
}
$title = 'Админка';
require_once(root.'core/header.php');
switch($do){
default:
echo '<div class="ot4">Админка</div>';
echo '<div class="block">- <a href="?do=zapis">Управление записями</a><br />- <a href="?do=bann">Черный список</a><br />- <a href="?do=set">Настройки системы</a><br />- <a href="?do=smiles">Смайлы</a><br />- <a href="?do=submail">Рассылка писем по E-mail</a></div>';
break;
case set:
echo '<div class="ot4">Настройки системы</div>';
if(isset($_GET['good'])) msg('Сохранено!');
if(isset($_GET['error'])) err('Ошибка! Данные не сохранены.');
if(isset($_POST['save'])){
$title = isset($_POST['title']) ? secur($_POST['title']) : false;
$keywords = isset($_POST['keywords']) ? secur($_POST['keywords']) : false;
$description = isset($_POST['description']) ? secur($_POST['description']) : false;
$reg = isset($_POST['reg']) ? num($_POST['reg']) : false;
$onl = isset($_POST['onl']) ? num($_POST['onl']) : false;
$index_end = isset($_POST['index_end']) ? num($_POST['index_end']) : false;
if($index_end<5 OR $index_end>25){
$err = 'Не меньше 5 и не больше 25.';
}
$end = isset($_POST['end']) ? num($_POST['end']) : false;
if($end<5 OR $end>25){
$err = 'Не меньше 5 и не больше 25.';
}
if (empty($err)) {
core::$dbs->query("UPDATE setting SET keywords = ?, description = ?, reg = ?, onl = ?, index_end = ?, end = ?, title = ? WHERE id = ? LIMIT 1", array($keywords,$description,$reg,$onl,$index_end,$end,$title,1));
header('location: ?do=set&good');
} else {
header('location: ?do=set&error');
}
}
echo '<div class="block"><form action="?do=set" method="post">Название сайта:<br /><input type="text" name="title" value="'.$set['title'].'"/><br />Keywords:<br /><textarea name="keywords">'.$set['keywords'].'</textarea><br />Description:<br /><textarea name="description">'.$set['description'].'</textarea><br />Регистрация:<br /><select name="reg">';
if($set['reg']==1){
echo '<option value="1">Открытa</option>';
}elseif($set['reg']==2){
echo '<option value="2">Закрыта</option>';
}
echo '<option value="1">Открытa</option><option value="2">Закрыта</option></select><br />Записей на главной странице:<br /><input type="text" name="index_end" value="'.$set['index_end'].'" size="5"/><br />Записей/Kомментариев на странице:<br /><input type="text" name="end" value="'.$set['end'].'" size="5"/><br />Юзер онлайн(сек.): <br /><input type="text" name="onl" value="'.$set['onl'].'" size="5"/><br /><input type="submit" name="save" value="Сохранить"/></form></div>';
break;
case zapis:
echo '<div class="ot4">Управление записями</div>';
echo '<div class="vib"><a href="?do=add_zapis">Добавить запись</a></div>';
$count = core::$dbs->querySingle("SELECT count(id) FROM `blog`");
$n = new pager($count,10,'?');
$array = core::$dbs->query("SELECT * FROM `blog` ORDER BY `time` DESC LIMIT $n->start,$n->end");
if($array->rowCount()==0) err('Записей нет!');
while($arr = $array -> fetch()){
$message = (mb_strlen($arr['text'])>120 ? mb_substr($arr['text'],0,120, 'UTF-8') . '...': out($arr['text']) . '');
echo '<div class="block">[<a href="?do=red_zapis&id='.$arr['id'].'">ред.</a>][<a href="?do=del_zapis&id='.$arr['id'].'">удл.</a>] <b>'.stripslashes($arr['name']).'</b> ['.times($arr['time']).']</div>
<div class="block">
<p>' . $message .'</p><p><br/> '.(strlen($arr['text'])>120 ? '<a class="lenk" href="/blog/'.$arr['latname'].'.html">Далее →</a> ':NULL).'</p></div>';
}
echo $n->pag();
break;
case add_zapis:
echo '<div class="ot4">Добавить запись</div>';
if (isset($_POST['ok'])) {
$name = secur($_POST['name']);
$text = secur($_POST['text']);
if(empty($name) || strlen($name)<5){
$err = 'Название записи не введено или слишком короткое. Мин. 5 символов.';
}
if(empty($text) || strlen($text)<5){
$err = 'Содержание записи не введено или слишком короткое. Мин. 5 символов.';
}
if(core::$dbs->querySingle("SELECT COUNT(id) FROM `blog` WHERE `name` = ?",array($name))>0){
$err = 'Такая запись уже есть!';
}
if(empty($err)){
core::$dbs->query("INSERT INTO `blog` SET `name` = ?, `text` = ?, `user_id` = ?, `time` = ?, `tags` = ?, `latname` = ?",array($name,$text,$user['id'],time(),secur($_POST['tags']),retrans(del(strtolower($name)))));
$last = core::$dbs->lastInsertId();
$name = core::$dbs->queryFetch("SELECT * FROM `blog` WHERE `id` = ? LIMIT 1",array($last));
msg('Запись успешно добавлена!<br />- <a href="/blog/'.$name['latname'].'.html">Перейти к записи</a>');
require_once(root.'core/footer.php');
die();
} else {
err($err);
}
}
echo '<div class="block"><form action="?do=add_zapis" method="post">Название:<br /><input type="text" name="name"/><br />Содержание [<a href="/other/bbcode.php">BBcode</a>]:<br /><textarea name="text"></textarea><br />Метки [через запятую]:<br /><input type="text" name="tags"/><br /><input type="submit" name="ok" value="Добавить"/></form></div>';
break;
case red_zapis:
$arr = core::$dbs->queryFetch("SELECT * FROM `blog` WHERE `id` = ? LIMIT 1",array($id));
if(empty($arr['id'])){
header('location:/');
die();
}
echo '<div class="ot4">Изменить запись</div>';
if (isset($_POST['ok'])) {
$name = secur($_POST['name']);
$text = secur($_POST['text']);
if(empty($name) || strlen($name)<5){
$err = 'Название записи не введено или слишком короткое. Мин. 5 символов.';
}
if(empty($text) || strlen($text)<5){
$err = 'Содержание записи не введено или слишком короткое. Мин. 5 символов.';
}
$latname = strtolower(retrans(del($name)));
if(empty($err)){
core::$dbs->query("UPDATE `blog` SET `name` = ?, `text` = ?, `latname` = ?, `tags` = ? WHERE `id` = ? LIMIT 1",array($name,$text,$latname,secur($_POST['tags']),$arr['id']));
msg('Запись успешно изменена!<br />- <a href="/blog/'.$arr['latname'].'.html">Перейти к записи</a>');
require_once(root.'core/footer.php');
die();
} else {
err($err);
}
}
echo '<div class="block"><form action="?do=red_zapis&id='.$id.'" method="post">Название:<br /><input type="text" name="name" value="'.$arr['name'].'"/><br />Содержание [<a href="/other/bbcode.php">BBcode</a>]:<br /><textarea name="text">'.$arr['text'].'</textarea><br />Теги:<br /><input type="text" name="tags" value="'.$arr['tags'].'"/><br /><input type="submit" name="ok" value="Добавить"/></form></div>';
break;
case del_zapis:
$arr = core::$dbs->queryFetch("SELECT * FROM `blog` WHERE `id` = ? LIMIT 1",array($id));
if(empty($arr['id'])){
header('location:/');
die();
}
echo '<div class="ot4">Удалить запись</div>';
core::$dbs->query("DELETE FROM `blog` WHERE `id` = ? LIMIT 1",array($arr['id']));
msg('Запись успешно удалена!');
break;
case bann:
echo '<div class="ot4">Черный список</div>';
if (isset($_GET['del'])) {
core::$dbs->query("DELETE FROM `bann` WHERE `id` = ? LIMIT 1",array(num($_GET['uid'])));
header('location: ?do=bann');
die();
}
$count = core::$dbs->querySingle("SELECT count(id) FROM `bann` WHERE `type` = ?",array('bann'));
$n = new pager($count,$end,'?do=bann&');
$array = core::$dbs->query("SELECT * FROM `bann` WHERE `type` = ? ORDER BY `time_bann` DESC LIMIT $n->start,$end",array('bann'));
if($array->rowCount()==0) err('Пусто...');
while($arr = $array -> fetch()){
echo '<div class="block">[<a href="?do=bann&del&uid='.$arr['id'].'">осв.</a>]
'.us($arr['user_id']).' / до '.date('d.m.Y - H:i', $arr['time_bann']).'<br />Причина: '.out($arr['why']).'</div>';
}
echo $n->pag();
break;
case banned:
if(!user_inf($id)){
require_once(root.'core/footer.php');
die();
}
if(core::$dbs->querySingle("SELECT count(id) FROM `bann` WHERE `user_id` = ?",array($id))==1){
err('Этот пользователь уже забанен!!!');
require_once(root.'core/footer.php');
die();
}
if($id==$user['id']){
header('location:/');
die();
}
echo '<div class="ot4">Банн</div>';
if(!isset($_POST['ok'])){
echo '<div class="block"><form action="?do=banned&id='.$id.'" method="post">Ник/ID:<br /><input type="text" name="nick" value="'.user_inf($id, 'user').'"/><br/>Время:<br/><input type="text" name="na"/><br/>
<select name="vremja">
<option value="min">Минут</option>
<option value="chas">Часов</option>
<option value="sut">Суток</option>
<option value="mes">Месяцев</option>
</select><br/>
Причина:<br/>
<input type="text" name="why"/>
<br/>
<input type="submit" name="ok" value="Блокировать"/>
</form></div>';
} else {
if(empty($_POST['na'])){
$err = 'Не указано время блокировки!';
}
if(empty($_POST['why'])){
$err = 'Не указана причина блокировки!';
}
if ($_POST['vremja'] == 'min') $na = (int)$_POST['na'] * 60;
if ($_POST['vremja'] == 'chas') $na = (int)$_POST['na'] * 60 * 60;
if ($_POST['vremja'] == 'sut') $na = (int)$_POST['na'] * 60 * 60 * 24;
if ($_POST['vremja'] == 'mes') $na = (int)$_POST['na'] * 60 * 60 * 24 * 30;
$why = secur($_POST['why']);
$na = time() + $na;
if(empty($err)){
core::$dbs->query("INSERT INTO `bann` SET `time_bann` =?, `who` =?, `user_id` =?, `why` = ?, `type` = ?",array($na,$user['id'],$id,$why,'bann'));
msg('Пользователь <b>'.user_inf($id,'user').'</b> забанен!');
require_once(root.'core/footer.php');
die();
} else {
err($err);
}
}
break;
case upd:
$arr = core::$dbs->queryFetch("SELECT * FROM `users` WHERE `id` = ? LIMIT 1",array($id));
if(empty($arr['id'])){
header('location:/');
die();
}
if ((user_inf($id, 'level')>$user['level']) || $user['level']==user_inf($id, 'level') && $user['id']!=$id && $id==1){
err('Информация про админа закрыта!');
require_once(root.'core/footer.php');
exit();
}
echo '<div class="ot4">Изменить профиль</div>';
if (isset($_POST['ok'])) {
$login = secur($_POST['login']);
$level = num($_POST['level']);
if(empty($login)){
$err = 'Логие слишком короткий.';
}
if(empty($err)){
core::$dbs->query("UPDATE `users` SET `user` = ?, `level` = ? WHERE `id` = ? LIMIT 1",array($login,$level,$arr['id']));
msg('Успешно сохранено!');
require_once(root.'core/footer.php');
die();
} else {
err($err);
}
}
echo '<div class="block"><form action="?do=upd&id='.$id.'" method="post">Логин:<br /><input type="text" name="login" value="'.$arr['user'].'"/><br />Уровень:<br/><select name="level">';
if($arr['level']==1){
echo '<option value="1">Админ</option>';
echo '<option value="0">Пользователь</option>';
} else {
echo '<option value="0">Пользователь</option>';
echo '<option value="1">Админ</option>';
}
echo '</select><br/><input type="submit" name="ok" value="Изменить"/></form></div>';
break;
case add_smiles:
echo '<div class="ot4">Добавить смайл</div>';
if(isset($_GET['save'])) msg('Успешно добавлено!');
if(isset($_GET['error'])) err('Ошибка!');
if(isset($_POST['ok'])){
$name = secur($_POST['name']);
if(empty($name)) $err = 'Введите название смайла!';
$FileName = $_FILES['file']['name'];
$FileSize = $_FILES['file']['size'];
$GetExt = array('.gif','.jpeg','.jpg','.png');
$ext = strtolower(strrchr($_FILES['file']['name'], '.'));
if(!preg_match('#([a-z0-9-_]{1,32})#i', $FileName)) $err .= 'Не правильное имя файла!';
if ($FileSize > 1024 * 2 * 1024) $err .= 'Размер файла более 2 Мб!';
if ($FileSize > 1024 * 2 * 1024) $err .= 'Размер файла более 2 Мб!';
if(empty($FileName)){$err = 'Выберите файл.';}
if(preg_match('/(.php|.pl|.htaccess)/i', $FileName) || !in_array($ext, $GetExt)) $err .= 'Запрещенный формат файла!';
$file = 'file_'.mt_rand(1000, 9999).$ext;
if(empty($err)){
copy($_FILES['file']['tmp_name'], root . '/smiles/' . $file);
core::$dbs->query("INSERT INTO `smiles` SET `file` = ?, `name` = ?",array($file,$name));
header('location: ?do=add_smiles&save');
die();
}
}
err($err);
echo '<div class="block"><form action="?do=add_smiles" method="post" enctype="multipart/form-data">Название:<br /><input type="text" name="name"/><br />Файл [jpg,jpeg,gif,png]:<br/>
<input name="file" type="file"/><br/>
<input type="submit" name="ok" value="Добавить"></form></div>';
break;
case smiles:
echo '<div class="ot4">Смайлы</div>';
echo '<div class="vib"><a href="?do=add_smiles">Добавить смайл</a></div>';
$count = core::$dbs->querySingle("SELECT COUNT(id) from `smiles`");
if($count==0) err('Смайлов нет!');
$n = new pager($count,$end, '?do=smiles&');
$array = core::$dbs->query("SELECT * FROM `smiles` ORDER BY `id` DESC LIMIT $n->start,$end");
while($arr = $array->fetch()){
echo '<div class="block">[<a href="?do=edit_smiles&id='.$arr['id'].'">ред.</a>][<a href="?do=smiles&id='.$arr['id'].'&del">x</a>] '.$arr['name'].' - <img src="smiles/'.$arr['file'].'" alt="*"/></div>';
}
echo $n->pag();
break;
case submail:
echo '<div class="ot4">Рассылка писем</div>';
$data = date("d-M-Y");
if (empty($_POST['mess'])){
echo '<div class="block">Сообщение:<br /><form action="?do=submail" method="post"><textarea name="mess"></textarea><br /><input type="submit" value="Разослать"/></form></div>';
} else {
$mess = secur($_POST['mess']);
echo msg('Сообщение отправлено:<br/>');
$theme = $_SERVER['HTTP_HOST'] . ' News (' . $data . ')';
$from = 'mail@' . $_SERVER['HTTP_HOST'];
$xfile = core::$dbs->query("SELECT `user`,`mail` FROM `users` WHERE `mail`!=?",array(''));
$n = 0;
while ($udata = $xfile -> fetch()){
$msg = "Рассылка писем " . $_SERVER['HTTP_HOST'] . " от $data: $mess " . $_SERVER['HTTP_HOST'];
mail($udata['mail'], "$theme", $msg, "From: $from rn" .
"Content-Type: text/plain; charset="utf-8" rn" . "X-Mailer: PHP/" .
phpversion());
$n++;
}
}
break;
}
if (isset($_GET['do'])) echo '<div class="vib"><a href="admin.html">Админка</a></div>';
require_once(root.'core/footer.php');
?>