Файл: votes/index.php
Строк: 135
<?php
include('../core/core.php');
include(MAINDIR.'style/head.php');
$log = check($_COOKIE['login']);
function redirect($url, $permanent = false){
    if ($permanent){
        header('HTTP/1.1 301 Moved Permanently');
    }
    header('Location: '.$url);
    exit();
}
function date_fixed($timestamp, $format = "d.m.y / H:i") {
    //global $config;
    if (!is_numeric($timestamp)) {
        $timestamp = time();
    } 
    $shift = 0 * 3600;
    $datestamp = date($format, $timestamp + $shift);
    $today = date("d.m.y", time() + $shift);
    $yesterday = date("d.m.y", strtotime("-1 day") + $shift);
    $datestamp = str_replace($today, 'Сегодня', $datestamp);
    $datestamp = str_replace($yesterday, 'Вчера', $datestamp);
    $search = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    $replace = array('Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря');
    $datestamp = str_replace($search, $replace, $datestamp);
    return $datestamp;
} 
function show_error($error){
echo'<div class="error">'.$error.'</div>';
}
if (isset($_GET['act'])) {
    $act = check($_GET['act']);
} else {
    $act = 'index';
} 
if (isset($_GET['id'])) {
    $id = abs(intval($_GET['id']));
} else {
    $id = 0;
} 
switch ($act):
############################################################################################
##                                    Главная страница                                    ##
############################################################################################
    case 'index':
        title('Голосования');
        $queryvote = DB::run() -> 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="menu">';
                echo '<img src="../images/stat.gif" alt="image" /> <b><a href="index.php?act=poll&id='.$valvote['vote_id'].'&'.SID.'">'.$valvote['vote_title'].'</a></b></div>';
                echo '<div><div class="menu">Создано: '.date_fixed($valvote['vote_time']).'<br />';
                echo 'Всего голосов: '.$valvote['vote_count'].'</div>';
            } 
        } else {
            show_error('Открытых голосований еще нет!');
        } 
    break;
    ############################################################################################
    ##                                      Голосование                                       ##
    ############################################################################################
    case 'poll':
        title('Голосование');
        $votes = DB::run() -> queryFetch("SELECT * FROM `vote` WHERE `vote_id`=? LIMIT 1;", array($id));
        if (!empty($votes)) {
            if (empty($votes['vote_closed'])) {
                $config['newtitle'] = $votes['vote_title'];
                echo '<div class="menu_2"><img src="../images/stat.gif" alt="image" /> <b>'.$votes['vote_title'].'</b> (Голосов: '.$votes['vote_count'].')</div><div class="menu">';
                $queryanswer = DB::run() -> query("SELECT * FROM `voteanswer` WHERE `answer_vote_id`=? ORDER BY `answer_id`;", array($id));
                $answer = $queryanswer -> fetchAll();
                $total = count($answer);
                if ($total > 0) {
                    $polls = DB::run() -> querySingle("SELECT `poll_id` FROM `votepoll` WHERE `poll_vote_id`=? AND `poll_user`=? LIMIT 1;", array($id, $log));
                    if (is_user() && empty($polls)) {
                        echo '<form action="index.php?act=vote&id='.$id.'&uid='.$_SESSION['token'].'&'.SID.'" method="post">';
                        foreach($answer as $data) {
                            echo '<input name="poll" type="radio" value="'.$data['answer_id'].'" /> '.$data['answer_option'].'<br />';
                        } 
                        echo '<input type="submit" value="Голосовать" /></form></div>';
                        echo '<div class="menu_2">Всего вариантов: <b>'.$total.'</b><br />';
                        echo '<img src="../images/history.gif" alt="image" /> <a href="index.php?act=result&id='.$id.'&'.SID.'">Результаты</a></div>';
                        // ------------------------- Просмотр результатов ---------------------//
                    } else {
                        $queryanswer = DB::run() -> query("SELECT `answer_option`, `answer_result` FROM `voteanswer` WHERE `answer_vote_id`=? ORDER BY `answer_result` DESC;", array($id));
                        $answer = $queryanswer -> fetchAssoc();
                        $sum = $votes['vote_count'];
                        $max = max($answer);
                        if (empty($sum)) {
                            $sum = 1;
                        } 
                        if (empty($max)) {
                            $max = 1;
                        } 
                        foreach($answer as $key => $data) {
                            $proc = round(($data * 100) / $sum, 1);
                            $maxproc = round(($data * 200) / $max);
                            echo '<b>'.$key.'</b> (Голосов: '.$data.')<br />';
                            echo'<img src="/sys/rating.php?img='.$proc.' alt="'.$proc.'%""><br />';
                            //echo '<img src="'.BASEDIR.'gallery/graph.php?rat='.$maxproc.'&per='.$proc.'" alt="'.$proc.'%" /><br /><br />';
                        } 
                        echo 'Вариантов: <b>'.$total.'</b></div>';
                    } 
                } else {
                    show_error('Ошибка! Для данного голосования не созданы варианты ответов!');
                } 
            } else {
                show_error('Ошибка! Данный опрос закрыт для голосования!');
            } 
        } else {
            show_error('Ошибка! Данного голосования не существует!');
        } 
        echo '<div class="menu_2"><img src="../images/reload.gif" alt="image" /> <a href="index.php?'.SID.'">К голосованиям</a></div>';
    break;
    ############################################################################################
    ##                                      Голосование                                       ##
    ############################################################################################
    case 'vote':
        title('Голосование');
echo '<div class="menu">';
        $uid = check($_GET['uid']);
        if (isset($_POST['poll'])) {
            $poll = abs(intval($_POST['poll']));
        } else {
            $poll = 0;
        } 
        if (is_user()) {
            if ($uid == $_SESSION['token']) {
                if (!empty($poll)) {
                    $votes = DB::run() -> queryFetch("SELECT * FROM `vote` WHERE `vote_id`=? LIMIT 1;", array($id));
                    if (!empty($votes)) {
                        if (empty($votes['vote_closed'])) {
                            $queryanswer = DB::run() -> querySingle("SELECT `answer_vote_id` FROM `voteanswer` WHERE `answer_id`=? AND `answer_vote_id`=?  LIMIT 1;", array($poll, $id));
                            if (!empty($queryanswer)) {
                                $polls = DB::run() -> querySingle("SELECT `poll_id` FROM `votepoll` WHERE `poll_vote_id`=? AND `poll_user`=? LIMIT 1;", array($id, $log));
                                if (empty($polls)) {
                                    DB::run() -> query("UPDATE `vote` SET `vote_count`=`vote_count`+1 WHERE `vote_id`=?;", array($id));
                                    DB::run() -> query("UPDATE `voteanswer` SET `answer_result`=`answer_result`+1 WHERE `answer_id`=?;", array($poll));
                                    DB::run() -> query("INSERT INTO `votepoll` (`poll_vote_id`, `poll_user`) VALUES (?, ?);", array($id, $log));
                                    $_SESSION['note'] = 'Ваш голос успешно принят!';
                                    redirect("index.php?act=poll&id=$id&".SID);
                                } else {
                                    show_error('Ошибка! Вы уже проголосовали в этом опросе!');
                                } 
                            } else {
                                show_error('Ошибка! Для данного голосования не созданы варианты ответов!');
                            } 
                        } else {
                            show_error('Ошибка! Данный опрос закрыт для голосования!');
                        } 
                    } else {
                        show_error('Ошибка! Данного голосования не существует!');
                    } 
                } else {
                    show_error('Ошибка! Вы не выбрали вариант ответа!');
                } 
            } else {
                show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
            } 
        } else {
            show_login('Вы не авторизованы, чтобы участвовать в голосованиях, необходимо');
        } 
echo'<div>';
        echo '<img src="../images/back.gif" alt="image" /> <a href="index.php?act=poll&id='.$id.'&'.SID.'">Вернуться</a><br />';
        echo '<img src="../images/reload.gif" alt="image" /> <a href="index.php?'.SID.'">К голосованиям</a><br />';
    break;
    ############################################################################################
    ##                                      Голосование                                       ##
    ############################################################################################
    case 'result':
        title('Результаты голосований');
        $votes = DB::run() -> queryFetch("SELECT * FROM `vote` WHERE `vote_id`=? LIMIT 1;", array($id));
        if (!empty($votes)) {
            if (empty($votes['vote_closed'])) {
                echo '<div class="menu_2"><img src="../images/stat.gif" alt="image" /> <b>'.$votes['vote_title'].'</b> (Голосов: '.$votes['vote_count'].')</div><div class="menu">';
                $queryanswer = DB::run() -> query("SELECT `answer_option`, `answer_result` FROM `voteanswer` WHERE `answer_vote_id`=? ORDER BY `answer_result` DESC;", array($id));
                $answer = $queryanswer -> fetchAssoc();
                $total = count($answer);
                if ($total > 0) {
                    $sum = $votes['vote_count'];
                    $max = max($answer);
                    if (empty($sum)) {
                        $sum = 1;
                    } 
                    if (empty($max)) {
                        $max = 1;
                    } 
                    foreach($answer as $key => $data) {
                        $proc = round(($data * 100) / $sum, 1);
                        $maxproc = round(($data * 200) / $max);
                        echo '<b>'.$key.'</b> (Голосов: '.$data.')<br />';
                        echo'<img src="/sys/rating.php?img='.$proc.' alt="'.$proc.'%""><br />';
                    } 
                    echo 'Вариантов: <b>'.$total.'</b></div><div class="menu_2">';
                    echo '<img src="../images/img/stat.gif" alt="image" /> <a href="index.php?act=poll&id='.$id.'&'.SID.'">К вариантам</a><br />';
                } else {
                    show_error('Ошибка! Для данного голосования не созданы варианты ответов!');
                } 
            } else {
                show_error('Ошибка! Данный опрос закрыт для голосования!');
            } 
        } else {
            show_error('Ошибка! Данного голосования не существует!');
        } 
        echo '<img src="../images/img/reload.gif" alt="image" /> <a href="index.php?'.SID.'">К голосованиям</a></div>';
    break;
default:
    redirect("index.php?".SID);
endswitch;
echo '<div class="menu_2"><img src="/images/luggage.gif" alt="image" /> <a href="history.php?'.SID.'">История голосований</a><br /></div>';
include(MAINDIR.'style/foot.php');
?>