Файл: ads/index.php
Строк: 248
<?php
/*
Ads Manager
(c) aBSuRD
ICQ: 97055598
*/
error_reporting(7);
ob_start();
session_start();
require('./config.php');
if(empty($_SESSION['ads_pass']) || $_SESSION['ads_pass']!=$pass) $_GET['mode']='auth';
switch(isset($_GET['mode']) ? $_GET['mode'] : false):
case 'auth':
if(isset($_POST['pass'])):
if(trim($_POST['pass'])==$pass) {
$_SESSION['ads_pass']=$pass;
header('Location: ./');
exit;
} else {
$error=true; }
endif;
$title='Авторизация';
include('./head.php');
echo '<div class="ads">';
getAds('up');
echo '</div>';
echo (empty($error) ? null : '<div class="error">Неверный пароль</div>'),'<div class="title">',$title,'</div><form action="./?mode=auth" method="post">
<div class="main">
Введите пароль:<br /><input type="password" name="pass"/><br />
<input type="submit" value="Войти"/>
</div></form>';
echo '<div class="ads">';
getAds('down', 'link');
echo '</div>';
break;
### ------------------------- ###
case 'exit':
unset($_SESSION['ads_pass']);
header('Location: /');
exit;
break;
### ------------------------- ###
case 'edit':
if(empty($_GET['id'])):
header('Location: ./');
exit;
elseif(!$res=$db_ads->query('SELECT * FROM `'.PREFIX.'_ads` WHERE `id`='.abs(intval($_GET['id'])))->fetch(PDO::FETCH_ASSOC)):
header('Location: ./?notify=no_link');
exit;
endif;
$title='Редактирование';
case 'add':
if(isset($_POST['submit'])) {
$data=array(
'url'=>trim($_POST['url']),
'names'=>trim($_POST['names']),
'place'=>($_POST['place']==1 ? 1 : 2),
'style'=>(in_array($_POST['style'], array('b', 'i', 'u')) ? $_POST['style'] : 'none'),
'color'=>trim($_POST['color'])
);
$data['position']=(intval($_POST['position'])>0) ? intval($_POST['position']) : ($db_ads->query('SELECT MAX(`position`) FROM `'.PREFIX.'_ads` WHERE `place`="'.$data['place'].'"')->fetchColumn()+1);
if($_POST['url']==''):
$error='Не введена ссылка';
elseif($_POST['names']==''):
$error='Не введены названия';
elseif((empty($res['id']) || $res['position']!=$data['position'] || $res['place']!=$data['place']) && $db_ads->query('SELECT `id` FROM `'.PREFIX.'_ads` WHERE `place`="'.$data['place'].'" AND `position`='.$data['position'].' LIMIT 1')->fetchColumn()):
$error='Позиция занята';
else:
if(empty($res['id'])) {
$data['end_time']=abs(intval($_POST['end_time']));
if($_POST['end_type']=='months') $data['end_time']*=30;
elseif($_POST['end_type']=='weeks') $data['end_time']*=7;
$db_ads->exec('INSERT INTO `'.PREFIX.'_ads` (`url`, `names`, `end_time`, `place`, `position`, `color`, `style`) VALUES ('.$db_ads->quote($data['url']).', '.$db_ads->quote($data['names']).', '.(time()+$data['end_time']*86400).', "'.$data['place'].'", '.$data['position'].', '.$db_ads->quote($data['color']).', "'.$data['style'].'")');
header('Location: ./?notify=add');
} else {
$db_ads->exec('UPDATE `'.PREFIX.'_ads` SET `url`='.$db_ads->quote($data['url']).', `names`='.$db_ads->quote($data['names']).', `place`="'.$data['place'].'", `position`='.$data['position'].', `color`='.$db_ads->quote($data['color']).', `style`="'.$data['style'].'" WHERE `id`='.$res['id']);
header('Location: ./?notify=edit');
}
exit;
endif;
}
if(isset($data)) $res=$data;
elseif(empty($res)) $res=array('url'=>null, 'names'=>null, 'place'=>null, 'position'=>null, 'end_time'=>null, 'color'=>null, 'style'=>null);
else $res['end_time']=intval(($res['end_time']-time())/86400);
if(empty($title)) $title='Добавление';
include('./head.php');
echo (empty($error) ? null : '<div class="error">'.$error.'</div>'),'<div class="title">',$title,'</div><form action="./?mode=',(empty($res['id']) ? 'add' : 'edit&id='.$res['id']),'" method="post">
<div class="main">
Ссылка: (<span>без http://</span>)<br /><input type="text" name="url" value="',htmlspecialchars($res['url'], ENT_QUOTES),'"/><br />
Названия:<br /><textarea name="names" cols="20" rows="3" maxlength="250">',htmlspecialchars($res['names'], ENT_QUOTES),'</textarea><br />
Место: <select name="place" size="1">
<option value="1">Вверху</option>
<option value="2"',($res['place']==2 ? ' selected="selected"' : null),'>Внизу</option>
</select><br />
Позиция: <input type="text" name="position" value="',$res['position'],'" size="2"/><br />';
if(empty($res['id'])) echo 'Срок: <input type="text" name="end_time" value="',$res['end_time'],'" size="3"/>
<select name="end_type" size="1">
<option value="days">Дней</option>
<option value="weeks">Недель</option>
<option value="months">Месяцев</option>
</select><br />';
echo 'Цвет: <input type="text" name="color" value="',htmlspecialchars($res['color'], ENT_QUOTES),'" maxlength="15" size="10"/><br />
Стиль: <select name="style" size="1">
<option value="none">Обычный</option>
<option value="b"',($res['style']!='b' ? null : ' selected="selected"'),'>Жирный</option>
<option value="i"',($res['style']!='i' ? null : ' selected="selected"'),'>Курсив</option>
<option value="u"',($res['style']!='u' ? null : ' selected="selected"'),'>Подчеркнутый</option>
</select><br /><input type="submit" name="submit" value="',(empty($res['id']) ? 'Добавить' : 'Изменить'),'"/>
</form></div>
<div class="other">
<span>*</span> Названия ссылки вводить каждое с новой строки<br />
<span>*</span> Цвет указывать в RGB либо в текстовом формате (Примеры: blue, red, #0000ff, #ff0000)<br />
<span>*</span> Если оставить поле "Позиция" пустым, ссылка будет размещена последней
</div>';
break;
### ------------------------- ###
case 'del':
if(empty($_GET['id'])):
header('Location: ./');
exit;
elseif(!$res=$db_ads->query('SELECT `url` FROM `'.PREFIX.'_ads` WHERE `id`='.abs(intval($_GET['id'])))->fetchColumn()):
header('Location: ./?notify=no_link');
exit;
elseif(isset($_POST['submit'])):
$db_ads->exec('DELETE FROM `'.PREFIX.'_ads` WHERE `id`='.abs(intval($_GET['id'])));
header('Location: ./?notify=del');
exit;
else:
$title='Удаление';
include('./head.php');
echo '<div class="title">',$title,'</div><form action="./?mode=del&id=',abs(intval($_GET['id'])),'" method="post">
<div class="main">
Подтверждаем удаление ссылки <b>',htmlspecialchars($res),'</b>?<br />
<input type="submit" name="submit" value="Да"/> <a href="./">Нет</a>
</div></form>';
endif;
break;
exit;
break;
### ------------------------- ###
case 'etime':
if(empty($_GET['id'])):
header('Location: ./');
exit;
elseif(!$res=$db_ads->query('SELECT `end_time` FROM `'.PREFIX.'_ads` WHERE `id`='.abs(intval($_GET['id'])))->fetchColumn()):
header('Location: ./?notify=no_link');
exit;
elseif(isset($_POST['time'])):
$end_time=abs(intval($_POST['time']));
if($_POST['ttype']=='months') $end_time*=30;
elseif($_POST['ttype']=='weeks') $end_time*=7;
if($_POST['type']=='+') $end_time=$res+$end_time*86400;
else $end_time=$res-$end_time*86400;
$db_ads->exec('UPDATE `'.PREFIX.'_ads` SET `end_time`='.$end_time.' WHERE `id`='.abs(intval($_GET['id'])));
header('Location: ./?notify=edit');
exit;
else:
$title='Дата окончания';
include('./head.php');
echo '<div class="title">',$title,'</div><form action="./?mode=etime&id=',abs(intval($_GET['id'])),'" method="post">
<div class="main">
<input type="radio" name="type" value="+" checked="checked"/> Продлить<br />
<input type="radio" name="type" value="-"/> Уменьшить<br />
На <input type="text" name="time" size="3"/>
<select name="ttype" size="1">
<option value="days">Дней</option>
<option value="weeks">Недель</option>
<option value="months">Месяцев</option>
</select><br /><input type="submit" value="Изменить"/>
</div></form>';
endif;
break;
### ------------------------- ###
default:
$_GET['notify']='no_page';
case false:
$title='Админка';
include('./head.php');
if(isset($_GET['notify'])) {
switch($_GET['notify']):
case 'no_page':
echo '<div class="notify">Некорректный запрос</div>';
break;
case 'no_link':
echo '<div class="notify">Нет такой ссылки</div>';
break;
case 'add':
echo '<div class="notify">Добавлено</div>';
break;
case 'edit':
echo '<div class="notify">Изменено</div>';
break;
case 'del':
echo '<div class="notify">Удалено</div>';
break;
endswitch; }
echo '<div class="title">',$title,'</div>';
$stata=$db_ads->query('SELECT COUNT(*) as `links`, SUM(`today`) as `today`, SUM(`all`) as `all` FROM `'.PREFIX.'_ads`')->fetch(PDO::FETCH_ASSOC);
if($stata['links']>0) {
$query=$db_ads->query('SELECT * FROM `'.PREFIX.'_ads` ORDER BY `place`, `position` ASC');
while($res=$query->fetch(PDO::FETCH_ASSOC)) {
echo '<div class="main">
<span>•</span> <a href="http://',htmlspecialchars($res['url'], ENT_QUOTES),'">',htmlspecialchars($res['url']),'</a> [<a href="./?mode=edit&id=',$res['id'],'">Ред.</a>/<a href="./?mode=del&id=',$res['id'],'">Уд.</a>]<br />
Позиция: <span>',$res['position'],'</span>/<span>',($res['place']==1 ? 'Верх' : 'Низ'),'</span><br />
Размещена до: <span>',date('d.m.Y H:i', $res['end_time']),'</span> [<a href="./?mode=etime&id=',$res['id'],'">Изм.</a>]<br />
Цвет/стиль: ',($res['color']=='' ? 'Отсутствует' : '<font color="'.htmlspecialchars($res['color'], ENT_QUOTES).'">'.htmlspecialchars(htmlspecialchars($res['color'])).'</font>'),'/';
if($res['style']=='b') echo '<b>Жирный</b>';
elseif($res['style']=='i') echo '<i>Курсив</i>';
elseif($res['style']=='u') echo '<u>Подчеркнутый</u>';
else echo 'Отсутствует';
echo '<br />Переходов: <span>',$res['all'],'</span>/',$res['today'],'
</div>';
} } else {
echo '<div class="main">Рекламных ссылок не найдено..</div>';
}
echo '<div class="other">
» <a href="./?mode=add">Добавить</a><br />
[<a href="./?mode=exit">Выход</a>]
<hr />
Всего ссылок: <span>',$stata['links'],'</span><br />
Всего переходов: <span>',$stata['all'],'</span><br />
Переходов сегодня: <span>',$stata['today'],'</span>
</div>';
endswitch;
echo '<div class="nav"><a href="/">Главная</a>',($title=='Админка' || $title=='Авторизация') ? null : ' :: <a href="./">Админка</a>','</div>';
echo '<div class="foot"><div>
© <a href="/">',ucfirst($_SERVER['SERVER_NAME']),'</a><br />
-Ads Manager<br />
Created by aBSuRD
</div></div></body></html>';
?>