コード例 #1
0
function IndexPollsViewPoll($op)
{
    $id = SafeEnv($_GET['poll_id'], 11, int);
    System::database()->Select('polls', GetWhereByAccess('view', "`id`='{$id}' and `active`='1'"));
    if (System::database()->NumRows() == 0) {
        HackOff();
    }
    $poll = System::database()->FetchRow();
    $question = SafeDB($poll['question'], 255, str);
    System::site()->SetTitle($question);
    System::site()->BreadCrumbAdd($question);
    // Отвечал ли пользователь
    $ip = getip();
    if (System::user()->Auth) {
        $uid = System::user()->Get('u_id');
    } else {
        $uid = -1;
    }
    System::database()->Select('polls_voices', "`poll_id`='{$id}' and (`user_ip`='{$ip}' or `user_id`='{$uid}')");
    $viewresult = System::database()->NumRows() != 0;
    $viewresult = $viewresult || $op == 'viewresult' && (System::config('polls/show_results') == '1' || System::user()->isAdmin());
    $answers = unserialize($poll['answers']);
    $c = count($answers);
    $num_voices = 0;
    for ($i = 0; $i < $c; $i++) {
        $num_voices += SafeDB($answers[$i][2], 11, int);
    }
    if ($viewresult) {
        if ($num_voices != 0) {
            $per_c = 100 / $num_voices;
        } else {
            $per_c = 0;
        }
        System::site()->AddTemplatedBox('', 'module/poll_result.html');
        $vars = array('lresults_title' => 'Результаты опроса', 'lrvalue' => 'гол.');
        System::site()->AddBlock('poll_result_rows', true, true, 'pr');
        $c = count($answers);
        for ($i = 0; $i < $c; $i++) {
            if ($answers[$i][0] != '') {
                $title = SafeDB($answers[$i][0], 255, str);
                $color = SafeDB($answers[$i][1], 255, str);
                $value = round($per_c * $answers[$i][2]);
                $num_voices2 = SafeDB($answers[$i][2], 11, int);
                System::site()->AddSubBlock('poll_result_rows', true, array('answertext' => $title, 'value' => $value, 'num_voices' => $num_voices2, 'color' => $color));
            }
        }
    } else {
        System::site()->AddTemplatedBox('', 'module/poll.html');
        $vars = array();
        $vars['form_action'] = Ufu('index.php?name=polls&op=voice&poll_id=' . SafeDB($poll['id'], 11, int), 'polls/{poll_id}/voice/');
        System::site()->AddBlock('poll_variants', true, true, 'variant');
        for ($i = 0; $i < $c; $i++) {
            if ($answers[$i][0] != '') {
                $color = SafeDB($answers[$i][1], 255, str);
                $title = SafeDB($answers[$i][0], 255, str);
                if ($poll['multianswers'] == '1') {
                    $control = System::site()->Check('voice[]', $i);
                } else {
                    $control = System::site()->Radio('voice[]', $i);
                }
                System::site()->AddSubBlock('poll_variants', true, array('title' => $title, 'control' => $control, 'color' => $color));
            }
        }
        $vars['poll_showresults'] = System::config('polls/show_results') == '1' || System::user()->isAdmin();
        $vars['showresults_url'] = Ufu('index.php?name=polls&op=viewresult&poll_id=' . $id, 'polls/{poll_id}/results/');
        $vars['others_url'] = Ufu('index.php?name=polls', '{name}/');
    }
    $vars['title'] = $question;
    $vars['back_url'] = Ufu('index.php?name=polls', '{name}/');
    $vars['back_caption'] = 'Назад к списку';
    $vars['lnum_voices'] = 'Ответов';
    $vars['num_voices'] = $num_voices;
    $vars['lcomments'] = 'Комментариев';
    $vars['comments'] = SafeDB($poll['com_counter'], 11, int);
    System::site()->AddBlock('poll', true, false, '');
    System::site()->Blocks['poll']['vars'] = $vars;
    // Выводим комментарии
    if (isset($_GET['page'])) {
        $nav_page = SafeEnv($_GET['page'], 11, int);
    } else {
        $nav_page = 0;
    }
    $posts = new Posts('polls_comments', $poll['allow_comments'] == '1');
    $posts->PostFormAction = "index.php?name=polls&op=addpost&poll_id={$id}&page={$nav_page}";
    $posts->EditPageUrl = "index.php?name=polls&op=editpost&poll_id={$id}";
    $posts->DeletePageUrl = "index.php?name=polls&op=deletepost&poll_id={$id}";
    $posts->NavigationUrl = Ufu("index.php?name=polls&op=viewpoll&poll_id={$id}", 'polls/{poll_id}/page{page}/', true);
    $posts->RenderPosts($id, 'poll_comments', 'comments_navigation', false, $nav_page);
    $posts->RenderForm(false, 'poll_comments_form');
}
コード例 #2
0
function CommentsEditPost($CommentsTable, $SaveUrl)
{
    System::site()->AddTemplatedBox('', 'edit_comment.html');
    $posts = new Posts($CommentsTable);
    $posts->PostFormAction = $SaveUrl;
    $posts->RenderForm(true, 'post_form');
}
コード例 #3
0
function IndexGalleryView()
{
    if (isset($_GET['img'])) {
        $id = SafeEnv($_GET['img'], 11, int);
    } else {
        GO(GetSiteUrl() . Ufu('index.php?name=gallery', '{name}/'));
    }
    /*
     * Загружаем все изображения из категории и делаем массив соответствий index -> id, для определения следующего и
     * предыдущего изображения.
     */
    $cat = SafeEnv($_GET['cat'], 11, int);
    $db_images = System::database()->Select('gallery', GetWhereByAccess('view', "`cat_id`='{$cat}' and `show`='1'"), null, 'order');
    if (System::database()->NumRows() == 0) {
        GO(GetSiteUrl() . Ufu('index.php?name=gallery', '{name}/'));
    }
    $images = array();
    foreach ($db_images as $k => $img) {
        $images[$k] = $img['id'];
    }
    /*
     * Текущее изображение.
     */
    $index = array_search($id, $images);
    if ($index !== false) {
        $img = $db_images[$index];
    } else {
        GO(GetSiteUrl() . Ufu('index.php?name=gallery', '{name}/'));
    }
    /*
     * Добавляем блок изображения в шаблонизатор, блок будет содержать ссылки на следующее и предыдущее изображение.
     */
    $vars = IndexGalleryFilterImageData($img, $index + 1, count($db_images));
    $vars['next'] = isset($db_images[$index + 1]);
    if ($vars['next']) {
        $nimg = $db_images[$index + 1];
        $vars['next_url'] = Ufu('index.php?name=gallery&op=view&img=' . SafeDB($nimg['id'], 11, int) . '&cat=' . SafeDB($nimg['cat_id'], 11, int), 'gallery/{cat}/{img}/');
        $vars['next_title'] = SafeDB($nimg['title'], 255, str);
    }
    $vars['prev'] = isset($db_images[$index - 1]);
    if ($vars['prev']) {
        $nimg = $db_images[$index - 1];
        $vars['prev_url'] = Ufu('index.php?name=gallery&op=view&img=' . SafeDB($nimg['id'], 11, int) . '&cat=' . SafeDB($nimg['cat_id'], 11, int), 'gallery/{cat}/{img}/');
        $vars['prev_title'] = SafeDB($nimg['title'], 255, str);
    }
    if ($vars['title'] == '') {
        $vars['title'] = 'Изображение ' . strval($index + 1);
    }
    $GalleryImageBlock = System::site()->NewBlock('gallery_image', true, false, 'img')->SetVars($vars);
    /*
     * Выводим изображения в категории.
     */
    IndexGalleryShow($cat, $db_images, true, $GalleryImageBlock, $index);
    /*
     * Хлебные крошки, заголовок окна, подключение шаблона.
     */
    IndexGalleryGetTree()->BreadCrumbs($cat);
    System::site()->BreadCrumbAdd($vars['title']);
    System::site()->SetTitle($vars['title']);
    System::site()->AddTemplatedBox('', 'module/gallery_view.html');
    /*
     * Увеличиваем счётчик просмотров.
     */
    System::database()->Update('gallery', "`hits`='" . ($img['hits'] + 1) . "'", "`id`='{$id}'");
    /*
     * Выводим комментарии.
     */
    if (isset($_GET['page'])) {
        $page = SafeEnv($_GET['page'], 11, int);
    } else {
        $page = 0;
    }
    $posts = new Posts('gallery_comments', $img['allow_comments'] == '1');
    $posts->EditPageUrl = 'index.php?name=gallery&op=editpost&img=' . $id;
    $posts->DeletePageUrl = 'index.php?name=gallery&op=deletepost&img=' . $id;
    $posts->PostFormAction = "index.php?name=gallery&op=addpost&img={$id}&cat={$cat}&page={$page}";
    $posts->NavigationUrl = Ufu("index.php?name=gallery&op=view&img={$id}&cat={$cat}", 'gallery/{cat}/{img}/page{page}/', true);
    $posts->RenderPosts($id, 'gallery_comments', 'comments_navigation', false, $page);
    $posts->RenderForm(false, 'gallery_comments_form');
}
コード例 #4
0
function IndexNewsReadFull()
{
    System::site()->AddTemplatedBox('', 'module/news_full.html');
    System::site()->AddBlock('news', true, true);
    if (isset($_GET['news'])) {
        $topics = IndexNewsGetTopics();
        $news_id = SafeEnv($_GET['news'], 11, int);
        $news = System::database()->SelectOne('news', GetWhereByAccess('view', "`id`='{$news_id}'"));
        if ($news && $news['enabled'] == '1') {
            // Новость включена
            System::site()->SetTitle(SafeDB($news['title'], 255, str));
            $topic_id = SafeDB($news['topic_id'], 11, int);
            $topic_title = SafeDB($topics[$topic_id]['title'], 255, str);
            System::site()->BreadCrumbAdd($topic_title, Ufu('index.php?name=news&topic=' . $topic_id, 'news/{topic}/'));
            System::site()->BreadCrumbAdd(SafeDB($news['title'], 255, str));
            //Модуль SEO
            System::site()->SeoTitle = SafeDB($news['seo_title'], 255, str);
            System::site()->SeoKeyWords = SafeDB($news['seo_keywords'], 255, str);
            System::site()->SeoDescription = SafeDB($news['seo_description'], 255, str);
            //
            IndexNewsAdd($news, $topic_title, true);
            System::database()->Update('news', "hit_counter='" . (SafeEnv($news['hit_counter'], 11, int) + 1) . "'", "`id`='" . $news_id . "'");
            // Выводим комментарии
            if (isset($_GET['page'])) {
                $page = SafeEnv($_GET['page'], 11, int);
            } else {
                $page = 0;
            }
            include_once System::config('inc_dir') . 'posts.class.php';
            $posts = new Posts('news_comments', $news['allow_comments'] == '1');
            $posts->EditPageUrl = "index.php?name=news&op=editpost&news={$news_id}";
            $posts->DeletePageUrl = "index.php?name=news&op=deletepost&news={$news_id}";
            $posts->PostFormAction = "index.php?name=news&op=addpost&news={$news_id}&topic={$topic_id}&page={$page}";
            $posts->NavigationUrl = Ufu("index.php?name=news&op=readfull&news={$news_id}&topic={$topic_id}", 'news/{topic}/{news}/page{page}/', true);
            $posts->NavigationAnchor = '#comments';
            $posts->RenderPosts($news_id, 'news_comments', 'comments_navigation', false, $page);
            $posts->RenderForm(false, 'news_comments_form');
        } else {
            System::site()->AddTextBox('Ошибка', '<p align="center">Эта новость не доступна в данный момент!<br><input type="button" value="Назад" onclick="history.back();"></p>');
        }
    } else {
        System::site()->AddTextBox('Ошибка', '<p align="center"><input type="button" value="Назад" onclick="history.back();"></p>');
    }
}
コード例 #5
0
function IndexArticlesRead()
{
    if (isset($_GET['art'])) {
        $id = SafeEnv($_GET['art'], 11, int);
    } else {
        GO(GetSiteUrl() . Ufu('index.php?name=articles', '{name}/'));
    }
    $where = "`id`='{$id}' and `active`='1'";
    System::database()->Select('articles', GetWhereByAccess('view', $where));
    if (System::database()->NumRows() == 0) {
        GO(GetSiteUrl() . Ufu('index.php?name=articles', '{name}/'));
    }
    $art = System::database()->FetchRow();
    System::database()->Update('articles', "hits='" . (SafeEnv($art['hits'], 11, int) + 1) . "'", $where);
    $cat = SafeDB($art['cat_id'], 11, int);
    // Показываем путь
    if (System::config('articles/show_catnav') == '1') {
        IndexArticlesGetTree()->BreadCrumbs($art['cat_id']);
    }
    System::site()->BreadCrumbAdd(SafeDB($art['title'], 255, str));
    System::site()->AddTemplatedBox('', 'module/article_read.html');
    System::site()->SetTitle(SafeDB($art['title'], 255, str));
    System::site()->SeoTitle = SafeDB($art['seo_title'], 255, str);
    System::site()->SeoKeyWords = SafeDB($art['seo_keywords'], 255, str);
    System::site()->SeoDescription = SafeDB($art['seo_description'], 255, str);
    RenderReadArticle($art);
    // Выводим комментарии
    if (isset($_GET['page'])) {
        $page = SafeEnv($_GET['page'], 11, int);
    } else {
        $page = 0;
    }
    $posts = new Posts('articles_comments', $art['allow_comments'] == '1');
    $posts->EditPageUrl = "index.php?name=articles&op=editpost&art={$id}";
    // Форма редактирования поста
    $posts->DeletePageUrl = "index.php?name=articles&op=deletepost&art={$id}";
    // Удаление поста
    $posts->PostFormAction = "index.php?name=articles&op=addpost&art={$id}&cat={$cat}";
    // Добавление поста (сохранение)
    $posts->NavigationUrl = Ufu("index.php?name=articles&op=read&art={$id}&cat={$cat}", 'articles/{cat}/{art}/page{page}/', true);
    $posts->NavigationAnchor = '#comments';
    $posts->RenderPosts($id, 'article_comments', 'comments_navigation', false, $page);
    $posts->RenderForm(false, 'article_comments_form');
}
コード例 #6
0
function IndexDownloadsFull()
{
    if (isset($_GET['file'])) {
        $id = SafeEnv($_GET['file'], 11, int);
    } else {
        GO(GetSiteUrl() . Ufu('index.php?name=downloads', '{name}/'));
    }
    System::database()->Select('downloads', GetWhereByAccess('view', "`id`='{$id}' and `active`='1'"));
    if (System::database()->NumRows() == 0) {
        GO(GetSiteUrl() . Ufu('index.php?name=downloads', '{name}/'));
    }
    $file = System::database()->FetchRow();
    $cat = SafeDB($file['category'], 11, int);
    IndexDownloadsGetTree()->BreadCrumbs($cat);
    System::site()->BreadCrumbAdd(SafeDB($file['title'], 255, str));
    System::site()->SetTitle('Скачать ' . SafeDB($file['title'], 255, str));
    System::site()->AddTemplatedBox('', 'module/download_full.html');
    AddDetailDownload($file);
    // Выводим комментарии
    if (isset($_GET['page'])) {
        $page = SafeEnv($_GET['page'], 11, int);
    } else {
        $page = 0;
    }
    include_once System::config('inc_dir') . 'posts.class.php';
    $posts = new Posts('downloads_comments', $file['allow_comments'] == '1');
    $posts->EditPageUrl = "index.php?name=downloads&op=editpost&file={$id}";
    // Форма редактирования поста
    $posts->DeletePageUrl = "index.php?name=downloads&op=deletepost&file={$id}";
    // Удаление поста
    $posts->PostFormAction = "index.php?name=downloads&op=addpost&file={$id}&cat={$cat}&page={$page}";
    // Добавление поста (сохранение)
    $posts->NavigationUrl = Ufu("index.php?name=downloads&op=full&file={$id}&cat={$cat}", 'downloads/{cat}/{file}/page{page}/', true);
    $posts->NavigationAnchor = '#comments';
    $posts->RenderPosts($id, 'download_comments', 'comments_navigation', false, $page);
    $posts->RenderForm(false, 'download_comments_form');
}