<?php
#-----------------------------------------------------#
# ********* ROTORCMS ********* #
# Made by : VANTUZ #
# E-mail : [email protected] #
# Site : http://pizdec.ru #
# WAP-Site : http://visavi.net #
# ICQ : 36-44-66 #
# Вы не имеете право вносить изменения в код скрипта #
# для его дальнейшего распространения #
#-----------------------------------------------------#
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/' . $config['themes'] . '/index.php');
if (isset($_GET['act'])) {
$act = check($_GET['act']);
} else {
$act = 'index';
}
if (isset($_GET['id'])) {
$id = abs(intval($_GET['id']));
} else {
$id = 0;
}
if (isset($_GET['start'])) {
$start = abs(intval($_GET['start']));
} else {
$start = 0;
}
if (is_admin(array(101, 102, 103))) {
show_title('site.png', 'Управление голосованием');
$config['newtitle'] = 'Управление голосованием';
switch ($act):
# ###########################################################################################
# # Главная страница ##
# ###########################################################################################
case 'index':
$queryvote = DB :: $dbh -> query("SELECT * FROM `vote` WHERE `vote_closed`=? ORDER BY `vote_time` DESC;", array(0));
$votes = $queryvote -> fetchAll();
if (count($votes) > 0) {
foreach($votes as $valvote) {
echo '<div class="b">';
echo '<img src="../images/img/stat.gif" alt="image" /> <b><a href="../votes/index.php?act=poll&id=' . $valvote['vote_id'] . '&' . SID . '">' . $valvote['vote_title'] . '</a></b><br />';
echo '<a href="votes.php?act=edit&id=' . $valvote['vote_id'] . '&' . SID . '">Изменить</a>';
echo ' / <a href="votes.php?act=action&do=close&id=' . $valvote['vote_id'] . '&uid=' . $_SESSION['token'] . '&' . SID . '">Закрыть</a>';
if (is_admin(array(101))) {
echo ' / <a href="votes.php?act=del&id=' . $valvote['vote_id'] . '&uid=' . $_SESSION['token'] . '&' . SID . '" onclick="return confirm(\'Вы подтверждаете удаление голосования?\')">Удалить</a>';
}
echo '</div>';
echo '<div>Создано: ' . date_fixed($valvote['vote_time']) . '<br />';
echo 'Всего голосов: ' . $valvote['vote_count'] . '</div>';
}
echo '<br />';
} else {
show_error('Открытых голосований еще нет!');
}
echo '<img src="../images/img/stat.gif" alt="image" /> <a href="votes.php?act=new&' . SID . '">Создать голосование</a><br />';
echo '<img src="../images/img/luggage.gif" alt="image" /> <a href="votes.php?act=history&' . SID . '">История голосований</a><br />';
if (is_admin(array(101))) {
echo '<img src="../images/img/reload.gif" alt="image" /> <a href="votes.php?act=rest&uid=' . $_SESSION['token'] . '&' . SID . '">Пересчитать</a><br />';
}
break;
# ###########################################################################################
# # Создание ##
# ###########################################################################################
case 'new':
echo '<div class="form">';
echo '<form action="votes.php?act=add&uid=' . $_SESSION['token'] . '&' . SID . '" method="post">';
echo 'Вопрос:<br />';
echo '<input type="text" name="title" size="50" maxlength="100" /><br />';
echo 'Ответ 1:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo 'Ответ 2:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo 'Ответ 3:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo 'Ответ 4:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo 'Ответ 5:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo 'Ответ 6:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo 'Ответ 7:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo 'Ответ 8:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo 'Ответ 9:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo 'Ответ 10:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
echo '<input type="submit" value="Создать" /></form></div><br />';
echo '<img src="../images/img/back.gif" alt="image" /> <a href="votes.php?' . SID . '">Вернуться</a><br />';
break;
# ###########################################################################################
# # Создание ##
# ###########################################################################################
case 'add':
$uid = check($_GET['uid']);
$title = check($_POST['title']);
$answer = check($_POST['answer']);
if ($uid == $_SESSION['token']) {
if (utf_strlen($title) >= 3 && utf_strlen($title) <= 100) {
$answer = array_diff($answer, array(''));
if (count($answer) > 0) {
DB :: $dbh -> query("INSERT INTO `vote` (`vote_title`, `vote_time`) VALUES (?, ?);", array($title, SITETIME));
$lastid = DB :: $dbh -> lastInsertId();
$dbr = DB :: $dbh -> prepare("INSERT INTO `voteanswer` (`answer_vote_id`, `answer_option`) VALUES (?, ?);");
foreach ($answer as $data) {
$dbr -> execute($lastid, $data);
}
$_SESSION['note'] = 'Голосование успешно создано!';
header ("Location: votes.php?" . SID);
exit;
} else {
show_error('Ошибка! Отсутствуют варианты ответов!');
}
} else {
show_error('Ошибка! Слишком длинный или короткий вопрос (от 3 до 100 символов)!');
}
} else {
show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
echo '<img src="../images/img/back.gif" alt="image" /> <a href="votes.php?act=new&' . SID . '">Вернуться</a><br />';
echo '<img src="../images/img/stat.gif" alt="image" /> <a href="votes.php?' . SID . '">К голосованиям</a><br />';
break;
# ###########################################################################################
# # Редактирование ##
# ###########################################################################################
case 'edit':
$queryvote = DB :: $dbh -> query("SELECT * FROM `vote` WHERE `vote_id`=? LIMIT 1;", array($id));
$votes = $queryvote -> fetch();
if (!empty($votes)) {
echo '<div class="form">';
echo '<form action="votes.php?act=change&id=' . $id . '&uid=' . $_SESSION['token'] . '&' . SID . '" method="post">';
echo 'Вопрос:<br />';
echo '<input type="text" name="title" size="50" maxlength="100" value="' . $votes['vote_title'] . '" /><br />';
$queryanswer = DB :: $dbh -> query("SELECT * FROM `voteanswer` WHERE `answer_vote_id`=? ORDER BY `answer_id`;", array($id));
$answer = $queryanswer -> fetchAll();
for ($i = 0; $i < 10; $i++) {
if (!empty($answer[$i])) {
echo '<span style="color:#ff0000">Ответ ' . ($i + 1) . ':</span><br /><input type="text" name="answer[' . $answer[$i]['answer_id'] . ']" maxlength="50" value="' . $answer[$i]['answer_option'] . '" /><br />';
} else {
echo 'Ответ ' . ($i + 1) . ':<br /><input type="text" name="newanswer[]" maxlength="50" /><br />';
}
}
echo '<input type="submit" value="Изменить" /></form></div><br />';
echo 'Поля отмеченные красным цветом обязательны для заполнения!<br /><br />';
} else {
show_error('Ошибка! Данного голосования не существует!');
}
echo '<img src="../images/img/back.gif" alt="image" /> <a href="votes.php?' . SID . '">Вернуться</a><br />';
break;
# ###########################################################################################
# # Редактирование ##
# ###########################################################################################
case 'change':
$uid = check($_GET['uid']);
$title = check($_POST['title']);
$answer = check($_POST['answer']);
if ($uid == $_SESSION['token']) {
if (utf_strlen($title) >= 3 && utf_strlen($title) <= 100) {
$queryvote = DB :: $dbh -> querySingle("SELECT `vote_id` FROM `vote` WHERE `vote_id`=? LIMIT 1;", array($id));
if (!empty($queryvote)) {
if (!in_array('', $answer)) {
DB :: $dbh -> query("UPDATE `vote` SET `vote_title`=? WHERE `vote_id`=?;", array($title, $id));
$dbr = DB :: $dbh -> prepare("UPDATE `voteanswer` SET `answer_option`=? WHERE `answer_id`=?;");
foreach ($answer as $key => $data) {
$dbr -> execute($data, $key);
}
if (isset($_POST['newanswer'])) {
$newanswer = check($_POST['newanswer']);
$newanswer = array_diff($newanswer, array(''));
if (count($newanswer) > 0) {
$dbr = DB :: $dbh -> prepare("INSERT INTO `voteanswer` (`answer_vote_id`, `answer_option`) VALUES (?, ?);");
foreach ($newanswer as $data) {
$dbr -> execute($id, $data);
}
}
}
$_SESSION['note'] = 'Голосование успешно изменено!';
header ("Location: votes.php?" . SID);
exit;
} else {
show_error('Ошибка! Не заполнены все обязательные поля с ответами!');
}
} else {
show_error('Ошибка! Данного голосования не существует!');
}
} else {
show_error('Ошибка! Слишком длинный или короткий вопрос (от 3 до 100 символов)!');
}
} else {
show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
echo '<img src="../images/img/back.gif" alt="image" /> <a href="votes.php?act=edit&id=' . $id . '&' . SID . '">Вернуться</a><br />';
echo '<img src="../images/img/stat.gif" alt="image" /> <a href="votes.php?' . SID . '">К голосованиям</a><br />';
break;
# ###########################################################################################
# # Закрытие ##
# ###########################################################################################
case 'action':
$uid = check($_GET['uid']);
$do = check($_GET['do']);
if ($uid == $_SESSION['token']) {
if ($do == 'close' || $do == 'open') {
$queryvote = DB :: $dbh -> querySingle("SELECT `vote_id` FROM `vote` WHERE `vote_id`=? LIMIT 1;", array($id));
if (!empty($queryvote)) {
if ($do == 'close') {
DB :: $dbh -> query("UPDATE `vote` SET `vote_closed`=? WHERE `vote_id`=?;", array(1, $id));
DB :: $dbh -> query("DELETE FROM `votepoll` WHERE `poll_vote_id`=?;", array($id));
$_SESSION['note'] = 'Голосование успешно закрыто!';
header ("Location: votes.php?" . SID);
exit;
}
if ($do == 'open') {
DB :: $dbh -> query("UPDATE `vote` SET `vote_closed`=? WHERE `vote_id`=?;", array(0, $id));
$_SESSION['note'] = 'Голосование успешно открыто!';
header ("Location: votes.php?act=history&" . SID);
exit;
}
} else {
show_error('Ошибка! Данного голосования не существует!');
}
} else {
show_error('Ошибка! Не выбрано действие для голосования!');
}
} else {
show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
echo '<img src="../images/img/back.gif" alt="image" /> <a href="votes.php?' . SID . '">Вернуться</a><br />';
break;
# ###########################################################################################
# # Удаление ##
# ###########################################################################################
case 'del':
$uid = check($_GET['uid']);
if ($uid == $_SESSION['token']) {
if (is_admin(array(101))) {
$queryvote = DB :: $dbh -> querySingle("SELECT `vote_id` FROM `vote` WHERE `vote_id`=? LIMIT 1;", array($id));
if (!empty($queryvote)) {
DB :: $dbh -> query("DELETE FROM `vote` WHERE `vote_id`=?;", array($id));
DB :: $dbh -> query("DELETE FROM `voteanswer` WHERE `answer_vote_id`=?;", array($id));
DB :: $dbh -> query("DELETE FROM `votepoll` WHERE `poll_vote_id`=?;", array($id));
$_SESSION['note'] = 'Голосование успешно удалено!';
header ("Location: votes.php?" . SID);
exit;
} else {
show_error('Ошибка! Данного голосования не существует!');
}
} else {
show_error('Ошибка! Удалять голосования могут только суперадмины!');
}
} else {
show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
echo '<img src="../images/img/back.gif" alt="image" /> <a href="votes.php?' . SID . '">Вернуться</a><br />';
break;
# ###########################################################################################
# # Пересчет счетчиков ##
# ###########################################################################################
case 'rest':
$uid = check($_GET['uid']);
if ($uid == $_SESSION['token']) {
if (is_admin(array(101))) {
DB :: $dbh -> query("UPDATE `vote` SET `vote_count`=(SELECT SUM(`answer_result`) FROM `voteanswer` WHERE `vote`.vote_id=`voteanswer`.`answer_vote_id`) WHERE `vote_closed`=?;", array(0));
$_SESSION['note'] = 'Все данные успешно пересчитаны!';
header ("Location: votes.php?" . SID);
exit;
} else {
show_error('Ошибка! Пересчитывать голосования могут только суперадмины!');
}
} else {
show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
echo '<img src="../images/img/back.gif" alt="image" /> <a href="votes.php?' . SID . '">Вернуться</a><br />';
break;
# ###########################################################################################
# # История ##
# ###########################################################################################
case 'history':
$total = DB :: $dbh -> querySingle("SELECT count(*) FROM `vote` WHERE `vote_closed`=? ORDER BY `vote_time`;", array(1));
if ($total > 0) {
if ($start >= $total) {
$start = 0;
}
$queryvote = DB :: $dbh -> query("SELECT * FROM `vote` WHERE `vote_closed`=? ORDER BY `vote_time` DESC LIMIT " . $start . ", " . $config['allvotes'] . ";", array(1));
while ($data = $queryvote -> fetch()) {
echo '<div class="b">';
echo '<img src="../images/img/luggage.gif" alt="image" /> <b><a href="history.php?act=result&id=' . $data['vote_id'] . '&start=' . $start . '&' . SID . '">' . $data['vote_title'] . '</a></b><br />';
echo '<a href="votes.php?act=action&do=open&id=' . $data['vote_id'] . '&uid=' . $_SESSION['token'] . '&' . SID . '">Открыть</a>';
if (is_admin(array(101))) {
echo ' / <a href="votes.php?act=del&id=' . $data['vote_id'] . '&uid=' . $_SESSION['token'] . '&' . SID . '" onclick="return confirm(\'Вы подтверждаете удаление голосования?\')">Удалить</a>';
}
echo '</div>';
echo '<div>Создано: ' . date_fixed($data['vote_time']) . '<br />';
echo 'Всего голосов: ' . $data['vote_count'] . '</div>';
}
page_strnavigation('votes.php?act=history&', $config['allvotes'], $start, $total);
} else {
show_error('Голосований в архиве еще нет!');
}
echo '<img src="../images/img/stat.gif" alt="image" /> <a href="votes.php?' . SID . '">Список голосований</a><br />';
break;
default:
header("location: votes.php?" . SID);
endswitch;
echo '<img src="../images/img/panel.gif" alt="image" /> <a href="index.php?' . SID . '">В админку</a><br />';
echo '<img src="../images/img/homepage.gif" alt="image" /> <a href="../index.php?' . SID . '">На главную</a><br />';
} else {
header ('Location: ' . BASEDIR . 'index.php?' . SID);
exit;
}
include_once ('../themes/' . $config['themes'] . '/foot.php');
?>