function smarty_function_comments($params, &$smarty) { if (!$params['target']) { return false; } if (!$params['target_id']) { return false; } cmsCore::includeComments(); comments($params['target'], $params['target_id'], (is_array($params['labels']) ? $params['labels'] : array()), (isset($params['can_delete']) ? $params['can_delete'] : false)); return; }
/** * Вспомогательные функции */ function cmsSmartyComments($params) { if (!$params['target']) { return false; } if (!$params['target_id']) { return false; } cmsCore::includeComments(); comments($params['target'], $params['target_id'], is_array($params['labels']) ? $params['labels'] : array()); return; }
function fenom_function_comments($params) { if (!$params['target']) { return false; } if (!$params['target_id']) { return false; } cmsCore::includeComments(); comments($params['target'], $params['target_id'], is_array($params['labels']) ? $params['labels'] : array(), isset($params['can_delete']) ? $params['can_delete'] : false); return true; }
/** * Выводит дерево комментариев. Используется здесь и в xajax/contest.server.php * @param integer $pid id проекта * @param string $name название проекта * @param array $comments массив с деревом комментариев (подробнее в classes/contest.php) * @param boolean $comm_blocked автор отключил возможность оставлять комментарии? * @param boolean $project_end проект закрыт? * @param integer $s_level уровень вложенности комментария * @return string HTML с кнопками управления */ function comments($pid, $name, &$comments, $comm_blocked, $project_end, $s_level = 0) { global $stop_words, $contest, $project, $session; static $level = 0; $level = ($s_level ? $s_level : $level) + 1; $html = ''; $set_branch_as_read = false; for ($i = 0, $c = count($comments); $i < $c; $i++) { if (($comments[$i]['is_banned'] || $comments[$i]['usr_banned'] || $comments[$i]['user_blocked'] === 't') && !hasPermissions('projects') && !$contest->is_owner) { $msg = $msg2 = 'Ответ от заблокированного пользователя'; } else { if (!trim($comments[$i]['deleted'])) { $sMsg = $comments[$i]['moderator_status'] === '0' ? $stop_words->replace($comments[$i]['msg']) : $comments[$i]['msg']; $msg = reformat($sMsg, 30, 0, 0, 1); $msg2 = reformat($comments[$i]['msg'], 30, 0, 0, 1); } else { $msg2 = $msg = "Комментарий удален модератором"; if (hasPermissions("comments")) { $moderator = ''; $moderatorData = new users(); $moderatorData->GetUserByUID($comments[$i]['deluser_id']); if ($moderatorData->login) { $moderator = ' ' . $moderatorData->login . ' (' . $moderatorData->uname . ' ' . $moderatorData->usurname . ') '; } $msg2 = $msg = $msg . " {$moderator}"; } if ($comments[$i]['deluser_id'] == $comments[$i]['user_id']) { $msg2 = $msg = "Комментарий удален автором"; } else { if (trim($comments[$i]['deleted_reason']) && (hasPermissions("comments") || $comments[$i]['user_id'] == get_uid(false))) { $msg2 = $msg = $msg . "<div style='color:#ff0000'>Причина: " . $comments[$i]['deleted_reason'] . "</div>"; } } } } $a_is_banned = ($comments[$i]['is_banned'] || $comments[$i]['usr_banned']) && hasPermissions('projects'); $html .= "\n\t\t\t<li class='thread' id='thread-{$comments[$i]['id']}'" . ($level >= 9 ? " style='margin-left: 0'" : "") . ">\n\t\t\t\t<a name='c-comment-{$comments[$i]['id']}'></a>\n\t\t\t\t<div class='comment-one" . ($comments[$i]['deleted'] || $comments[$i]['hidden'] ? " comment-deleted" : "") . "' id='comment-{$comments[$i]['id']}'>\n\t\t\t\t\t<div class='contest-ea'>" . view_avatar($comments[$i]['login'], $comments[$i]['photo'], 1) . "</div>\n\t\t\t\t\t<div class='comment-body'>\n\t\t\t\t\t\t<h3 class='username'>" . $session->view_online_status($comments[$i]['login']) . "\n\t\t\t\t\t\t\t<a href='/users/{$comments[$i]['login']}' class='" . (is_emp($comments[$i]['role']) ? 'employer-name' : 'freelancer-name') . "'>{$comments[$i]['uname']} {$comments[$i]['usurname']} [{$comments[$i]['login']}]</a> " . view_mark_user($comments[$i]) . " " . ($comments[$i]['completed_cnt'] > 0 ? '<a href="/promo/bezopasnaya-sdelka/" title="Пользователь работал через Безопасную Сделку" target="_blank"><span class="b-icon b-icon__shield b-icon_top_1"></span></a>' : '') . "\n\t\t\t\t\t\t\t<span>[" . dateFormat('d.m.Y | H:i', $comments[$i]['post_date']) . "]</span>\n\t\t\t\t\t\t\t<span id='comment-modified-{$comments[$i]['id']}'>" . ($comments[$i]['modified'] ? "[изменен " . dateFormat('d.m.Y | H:i', $comments[$i]['modified']) . "]" : ' ') . "</span>\n\t\t\t\t\t\t\t" . ($a_is_banned ? "<b style=\"color:#ff0000\">Пользователь забанен</b>" : "") . "\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t" . ($_SESSION['uid'] && $comments[$i]['is_new'] ? "<p><img src='/images/mark-new.png' width='53' height='12' alt='новое' class='mark-new' /></p>" : "") . "\n\t\t\t\t\t\t<div id='comment-change-{$comments[$i]['id']}'>\n\t\t\t\t\t\t<p id='comment-msg-{$comments[$i]['id']}' " . ($a_is_banned ? "style='color:silver'" : "") . ".>" . $msg . "</p>\n\t\t\t\t\t\t<div id='comment-msg-original-{$comments[$i]['id']}' style='display:none'>" . $msg2 . "</div>\n\t\t\t\t\t\t<script type=\"text/javascript\">\n banned.addContext( 'p{$pid}c{$comments[$i]['id']}', 3, '" . HTTP_PREFIX . "{$_SERVER['HTTP_HOST']}" . getFriendlyURL("project", $pid) . "?comm={$comments[$i]['id']}#comment-{$comments[$i]['id']}', \"" . htmlspecialchars($name) . "\" );\n </script>\n\t\t\t\t\t\t<ul class='thread-options' id='comment-options-{$comments[$i]['id']}'>\n\t\t\t\t\t\t\t" . comment_options($pid, $comments[$i], $comm_blocked, $project_end, $level, $name) . "\n\t\t\t\t\t\t</ul>\n <div id='warnreason-" . $comments[$i]['id'] . "-" . $comments[$i]['user_id'] . "' style='display:none; padding: 0 0 5px 0px;'> </div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t" . (empty($comments[$i]['comments']) ? '' : '<ul>' . comments($pid, $name, $comments[$i]['comments'], $comm_blocked, $project_end) . '</ul>') . "\n\t\t\t</li>\n\t\t"; if ($comments[$i]['is_new']) { $set_branch_as_read = true; } } if ($set_branch_as_read) { $p = new projects(); $data = array("id" => $pid, "kind" => 7, "user_id" => $project["user_id"]); $p->SetRead($data, get_uid(false), true); } --$level; return $html; }
<!-- Comments are closed but keeping code just in case --> <!-- <?php if (comments_open()) { ?> <section class="comments"> <?php if (has_comments()) { ?> <ul class="commentlist"> <?php $i = 0; while (comments()) { $i++; ?> <li class="comment" id="comment-<?php echo comment_id(); ?> "> <div class="wrap"> <h2><?php echo comment_name(); ?> </h2> <time><?php echo relative_time(comment_time()); ?> </time>
function calendar() { $inCore = cmsCore::getInstance(); $inPage = cmsPage::getInstance(); $inUser = cmsUser::getInstance(); $inCore->loadModel('calendar'); $model = new cms_model_calendar(); $do = $inCore->request('do', 'str', 'view'); $cfg = $inCore->loadComponentConfig('calendar'); if ($do == 'view') { $inPage->setTitle("Календарь событий"); $smarty = $inCore->initSmarty('components', 'com_calendar_view.tpl'); $guest = TRUE; if ($inUser->id == 0 and $cfg['calendar_access'] == "all") { $guest = FALSE; } if ($inUser->id != 0 and $cfg['calendar_access'] == "users") { $guest = FALSE; } if ($inUser->is_admin) { $guest = FALSE; } $catigories = $model->getAllCategories(); $smarty->assign('guest', $guest); $smarty->assign('cfg', $cfg); $smarty->assign('catigories', $catigories); $smarty->assign('category', "all"); $smarty->display('com_calendar_view.tpl'); return; } if ($do == "category_view") { $category_id = $inCore->request('category_id', 'int', 0); $smarty = $inCore->initSmarty('components', 'com_calendar_view.tpl'); $guest = TRUE; if ($inUser->id == 0 and $cfg['calendar_access'] == "all") { $guest = FALSE; } if ($inUser->id != 0 and $cfg['calendar_access'] == "users") { $guest = FALSE; } if ($inUser->is_admin) { $guest = FALSE; } $category = $model->getCategory($category_id); $catigories = $model->getAllCategories(); if (!$category) { //$inCore->redirect("/calendar"); print mysql_error(); } $inPage->setTitle("Календарь событий:" . $category['title']); $smarty->assign('guest', $guest); $smarty->assign('cfg', $cfg); $smarty->assign('catigories', $catigories); $smarty->assign('category', $category_id); $smarty->display('com_calendar_view.tpl'); return; } if ($do == 'add') { $guest = TRUE; if ($inUser->id == 0 and $cfg['calendar_access'] == "all") { $guest = FALSE; } if ($inUser->id != 0 and $cfg['calendar_access'] == "users") { $guest = FALSE; } if ($inUser->is_admin) { $guest = FALSE; } if ($guest) { $inCore->redirect('/'); exit; } $is_send = $inCore->inRequest('title'); if ($is_send) { $title = $inCore->request('title', 'str'); $type_raw = $inCore->request('type', 'str'); $date_start = $inCore->request('date_start', 'str'); $date_end = $inCore->request('date_end', 'str'); $hour_start = $inCore->request('hour_start', 'str'); $hour_end = $inCore->request('hour_end', 'str'); $min_start = $inCore->request('min_start', 'str'); $min_end = $inCore->request('min_end', 'str'); $content = $inCore->request('content', 'str'); if (!$title || !$type_raw || !$date_start || !$hour_start || !$hour_end || !$min_start || !$min_end) { cmsCore::addSessionMessage('Ой, что то не было заполнено...', 'error'); $inCore->redirectBack(); exit; } else { $start_time = strtotime($date_start . ' ' . $hour_start . ':' . $min_start); $end_time = strtotime($date_end . ' ' . $hour_end . ':' . $min_end); if ($data_end == "" or $date_end < $date_start) { $data_end = $data_start; } $type_data = explode("_", $type_raw); $type = $type_data[0]; $apx = $type_data[1]; $event_id = $model->addEvent($inUser->id, $type, $apx, $start_time, $end_time, $title, $content); if ($event_id) { if ($type != "private") { cmsActions::log('add_event', array('object' => 'событие', 'object_url' => '/calendar/event' . $event_id . '.html', 'object_id' => $event_id, 'target' => $title, 'target_url' => '/calendar/event' . $event_id . '.html', 'target_id' => '0', 'description' => $title)); } cmsCore::addSessionMessage('Ваше мероприятие добавлено!', 'success'); } else { cmsCore::addSessionMessage('Ошибка добавления!', 'error'); } $inCore->redirect('/calendar'); exit; } } if ($event['start_time'] == "") { $event['start_time'] = time(); } if ($event['end_time'] == "") { $event['end_time'] = time(); } $bb_toolbar = cmsPage::getBBCodeToolbar('message', $cfg['img_on'], 'forum'); $smilies = cmsPage::getSmilesPanel('message'); $inPage->setTitle("Добавить событие"); $smarty = $inCore->initSmarty('components', 'com_calendar_add.tpl'); $smarty->assign('bb_toolbar', $bb_toolbar); $smarty->assign('smilies', $smilies); $smarty->assign('title', $event['title']); $smarty->assign('content', $event['content']); $smarty->assign('type', $event['type']); $smarty->assign('start_date', date("d.m.Y", $event['start_time'])); $smarty->assign('start_hour', date("H", $event['start_time'])); $smarty->assign('start_min', date("i", $event['start_time'])); $smarty->assign('end_date', date("d.m.Y", $event['end_time'])); $smarty->assign('end_hour', date("H", $event['end_time'])); $smarty->assign('end_min', date("i", $event['end_time'])); $smarty->display('com_calendar_add.tpl'); return; } if ($do == "view_event") { $event_id = $inCore->request('event_id', 'int', 0); /*FOTOLIB*/ include 'fotolib.class.php'; $foto = new FotoLib(); //Проверяем можем ли добавлять фото $allow_add_foto = $foto->addAcces("calendar"); if ($_FILES) { $foto->uploadFoto($_FILES, "calendar", $event_id); } $images = $foto->loadImages("calendar", $event_id); /*FOTOLIB*/ $event = $model->getEvent($event_id); if (!$event) { cmsCore::addSessionMessage('Ошибка запроса' . mysql_error(), 'error'); $inCore->redirect('/calendar'); exit; } else { if ($event['type'] == 'private' and $event['author_id'] != $inUser->id) { cmsCore::addSessionMessage('Ошибка запроса', 'error'); $inCore->redirect('/calendar'); exit; } $msg = $inCore->parseSmiles($event['content'], true); if (count($event['parent']) != 0) { $delta = $event['end_time'] - $event['start_time']; $day = date("d", $event['start_time']); $month = date("n", $event['start_time']) - 1; //Яваскриптики считают с 0 $year = date("Y", $event['start_time']); if ($delta < 24 * 60 * 60) { $calendar_view = "agendaDay"; if (date("d", $event['start_time']) != date("d", $event['end_time'])) { //Если меньше 24 часов но всё же в разные дни включаем недельный вид $calendar_view = "agendaWeek"; } } elseif ($delta < 7 * 24 * 60 * 60) { $calendar_view = "agendaWeek"; } else { $calendar_view = "month"; } $events_string = ""; foreach ($event['parent'] as $parent) { $events_string .= "{\n\t id : '" . $parent['id'] . "',\n\t title : '" . str_replace("'", '"', $parent['title']) . "',\n\t start : '" . date("Y-m-d H:i:s", $parent['start_time']) . "',\n\t end : '" . date("Y-m-d H:i:s", $parent['end_time']) . "',\n\t url : '/calendar/event" . $parent['id'] . ".html',"; if ($parent['end_time'] - $parent['start_time'] > 60 * 60 * 8) { $events_string .= "allDay: true,"; } else { $events_string .= "allDay: false,"; } switch ($parent['type']) { case "public": if ($parent['author_id'] == $inUser->id) { $events_string .= "color: '#B9C3BC',\n"; } else { $events_string .= "color: '#C3BCB9',\n"; } $events_string .= "textColor: '#000000',\n"; break; case "private": $events_string .= "color: '#3366CC'\n"; } $events_string .= "},"; } } $issignup = $model->isSignup($event_id); $singups_user = $model->getSingupsUsers($event_id); $inPage->setTitle('Просмотр события "' . $event['title'] . '"'); $smarty = $inCore->initSmarty('components', 'com_calendar_event_view.tpl'); $smarty->assign('event', $event); $smarty->assign('content', $msg); $smarty->assign('parent', $event['parent']); $smarty->assign('calendar_view', $calendar_view); $smarty->assign('events_string', $events_string); $smarty->assign('year', $year); $smarty->assign('month', $month); $smarty->assign('day', $day); $smarty->assign('start_time', date("d.m.Y H:i", $event['start_time'])); $smarty->assign('end_time', date("d.m.Y H:i", $event['end_time'])); $smarty->assign('issngnup', $issignup); $smarty->assign('singups_user', $singups_user); $smarty->assign('images', $images); //fotolib $smarty->assign('allow_add_foto', $allow_add_foto); //fotolib if ($event['start_time'] - time() < 0) { $status = "Прошедшее событие"; } else { if ($event['start_time'] - time() > 86400) { $status = 'Осталось ' . declension(round(($event['start_time'] - time()) / 86400), array("день", "дня", "дней")); } else { $status = 'Осталось ' . declension(round(($event['start_time'] - time()) / 3600), array("час", "часа", "часов")); } } $smarty->assign('status', $status); if ($inUser->id == $event['author_id'] or $inUser->is_admin) { $smarty->assign('admin', TRUE); } $smarty->display('com_calendar_event_view.tpl'); $inCore->includeComments(); comments('calendar', $event_id); return; } } if ($do == "delete_event") { if ($inUser->id == 0) { $inCore->redirect('/'); exit; } $event_id = $inCore->request('event_id', 'int', 0); $deleted = $model->deleteEvent($event_id); if ($deleted) { cmsCore::addSessionMessage('Ваше мероприятие удалено!', 'success'); $inCore->redirect('/calendar'); exit; } else { cmsCore::addSessionMessage('Ошибка', 'error'); $inCore->redirect('/calendar'); exit; } } if ($do == "edit_event") { if ($inUser->id == 0) { $inCore->redirect('/'); exit; } $event_id = $inCore->request('event_id', 'int', 0); $event = $model->getEvent($event_id); if ($event["author_id"] != $inUser->id and !$inUser->is_admin) { cmsCore::addSessionMessage('Ошибка доступа', 'error'); $inCore->redirectBack(); exit; } $is_send = $inCore->inRequest('title'); if ($is_send) { $title = $inCore->request('title', 'str'); $type = $inCore->request('type', 'str'); $date_start = $inCore->request('date_start', 'str'); $date_end = $inCore->request('date_end', 'str'); $hour_start = $inCore->request('hour_start', 'str'); $hour_end = $inCore->request('hour_end', 'str'); $min_start = $inCore->request('min_start', 'str'); $min_end = $inCore->request('min_end', 'str'); $content = $inCore->request('content', 'str'); if (!$title || !$type || !$date_start || !$hour_start || !$hour_end || !$min_start || !$min_end) { cmsCore::addSessionMessage('Ой, что то не было заполнено...', 'error'); $inCore->redirectBack(); exit; } else { $start_time = strtotime($date_start . ' ' . $hour_start . ':' . $min_start); if ($data_end == "" or $data_end < $data_start) { $data_end = $data_start; } $end_time = strtotime($date_end . ' ' . $hour_end . ':' . $min_end); if (!is_numeric($type)) { $category_id = "0"; } else { $category_id = $type; $type = "public"; } $update = $model->updateEvent($event_id, $type, $category_id, $start_time, $end_time, $title, $content); if ($update) { cmsCore::addSessionMessage('Ваше мероприятие изменено!', 'success'); $inCore->redirect('/calendar/event' . $event_id . '.html'); exit; } else { cmsCore::addSessionMessage('Ошибка добавления!', 'error'); $inCore->redirect('/calendar/edit' . $event_id . '.html'); exit; } } } else { $event = $model->getEvent($event_id); if (!$event) { cmsCore::addSessionMessage('Ошибка запроса', 'error'); $inCore->redirect('/calendar'); exit; } if ($event['category_id']) { $event['type'] = $event['category_id']; } $bb_toolbar = cmsPage::getBBCodeToolbar('calendar', 1, 'forum'); $smilies = cmsPage::getSmilesPanel('calendar'); //Проверяем присоедиялся ли пользователь ко встрече $catigories = $model->getAllCategories(); $inPage->setTitle("Редактировать событие"); $smarty = $inCore->initSmarty('components', 'com_calendar_add.tpl'); $smarty->assign('event', $event); $smarty->assign('edit', 1); $smarty->assign('catigories', $catigories); $smarty->assign('title', $event['title']); $smarty->assign('content', $event['content']); $smarty->assign('type', $event['type']); $smarty->assign('start_date', date("d.m.Y", $event['start_time'])); $smarty->assign('start_hour', date("H", $event['start_time'])); $smarty->assign('start_min', date("i", $event['start_time'])); $smarty->assign('end_date', date("d.m.Y", $event['end_time'])); $smarty->assign('end_hour', date("H", $event['end_time'])); $smarty->assign('end_min', date("i", $event['end_time'])); $smarty->assign('bb_toolbar', $bb_toolbar); $smarty->assign('smilies', $smilies); $smarty->display('com_calendar_add.tpl'); return; } } if ($do == "add_parent") { if ($inUser->id == 0) { $inCore->redirectBack(); return; } $event_id = $inCore->request('event_id', 'int', 0); $event = $model->getEvent($event_id); if (!$event) { $inCore->redirectBack(); return; } $is_send = $inCore->inRequest('title'); if ($is_send) { $title = $inCore->request('title', 'str'); $date_start = $inCore->request('date_start', 'str'); $date_end = $inCore->request('date_end', 'str'); $hour_start = $inCore->request('hour_start', 'str'); $hour_end = $inCore->request('hour_end', 'str'); $min_start = $inCore->request('min_start', 'str'); $min_end = $inCore->request('min_end', 'str'); $content = $inCore->request('content', 'str'); if (!$title || !$date_start || !$hour_start || !$hour_end || !$min_start || !$min_end) { cmsCore::addSessionMessage('Ой, что то не было заполнено...', 'error'); $inCore->redirectBack(); exit; } else { $start_time = strtotime($date_start . ' ' . $hour_start . ':' . $min_start); $end_time = strtotime($date_end . ' ' . $hour_end . ':' . $min_end); if ($data_end == "" or $date_end < $date_start) { $data_end = $data_start; } $type = $event['type']; $model->addEvent($inUser->id, $type, $apx, $start_time, $end_time, $title, $content, $event['id']); $inCore->redirect('/calendar/event' . $event['id'] . ".html"); exit; } } $bb_toolbar = cmsPage::getBBCodeToolbar('message', $cfg['img_on'], 'forum'); $smilies = cmsPage::getSmilesPanel('message'); $inPage->setTitle("Добавить вложеное событие"); $smarty = $inCore->initSmarty('components', 'com_calendar_add.tpl'); $smarty->assign('bb_toolbar', $bb_toolbar); $smarty->assign('smilies', $smilies); $smarty->assign('parent', "1"); $smarty->assign('parent_title', $event['title']); $smarty->assign('title', ""); $smarty->assign('content', ""); $smarty->assign('type', $event['type']); $smarty->assign('start_date', date("d.m.Y", $event['start_time'])); $smarty->assign('start_hour', date("H", $event['start_time'])); $smarty->assign('start_min', date("i", $event['start_time'])); $smarty->assign('end_date', date("d.m.Y", $event['end_time'])); $smarty->assign('end_hour', date("H", $event['end_time'])); $smarty->assign('end_min', date("i", $event['end_time'])); $smarty->display('com_calendar_add.tpl'); return; } if ($do == "event_signup") { //Если не залогинились то возвращаем обратно if ($inUser->id == 0) { $inCore->redirectBack(); return; } $event_id = $inCore->request('event_id', 'int', 0); $event = $model->getEvent($event_id); //Если приватное событие то отправляем обратно if ($event["type"] == "private") { $inCore->redirectBack(); return; } //Если мероприятие уже прошло говорим ай-яй-яй if ($event['start_time'] - time() < 0) { cmsCore::addSessionMessage('Присоединиться к мероприятию уже невозможно', 'error'); $inCore->redirectBack(); exit; } //Проверяем статус присоединения ко встрече if ($model->isSignup($event_id)) { //Если уже присоединялись то удаляем и выводим статус $model->deleteSignup($event_id); cmsCore::addSessionMessage('Вы отказались от участия в мероприятии ' . $event["title"], 'success'); // Добавляем событие в ленту cmsActions::log('del_signup', array('object' => $event["title"], 'object_url' => '/calendar/event' . $event_id . '.html', 'object_id' => $event_id, 'target' => '', 'target_url' => '/calendar/event' . $event_id . '.html', 'target_id' => '0', 'description' => '')); $inCore->redirect('/calendar/event' . $event_id . '.html'); } else { //Если не присоединялись то добавляем в базу и выводим статус //Если уже присоединялись то удаляем и выводим статус $model->addSignup($event["id"]); cmsCore::addSessionMessage('Вы присоединились к событию ' . $event["title"], 'success'); // Добавляем событие в ленту cmsActions::log('add_signup', array('object' => $event["title"], 'object_url' => '/calendar/event' . $event_id . '.html', 'object_id' => $event["id"], 'target' => '', 'target_url' => '/calendar/event' . $event_id . '.html', 'target_id' => '0', 'description' => '')); $inCore->redirect('/calendar/event' . $event_id . '.html'); } return; } //AJAX if ($do == "ajax_add") { $guest = TRUE; if ($inUser->id == 0 and $cfg['calendar_access'] == "all") { $guest = FALSE; } if ($inUser->id != 0 and $cfg['calendar_access'] == "users") { $guest = FALSE; } if ($inUser->is_admin) { $guest = FALSE; } if (!$guest) { $title = iconv("utf8", "cp1251", $inCore->request('title', 'str')); $type = $inCore->request('type', 'str'); $date_start = $inCore->request('date_start', 'str'); $date_end = $inCore->request('date_end', 'str'); $hour_start = $inCore->request('hour_start', 'str'); $hour_end = $inCore->request('hour_end', 'str'); $min_start = $inCore->request('min_start', 'str'); $min_end = $inCore->request('min_end', 'str'); $content = iconv("utf8", "cp1251", $inCore->request('content', 'str')); $start_time = strtotime($date_start . ' ' . $hour_start . ':' . $min_start); $end_time = strtotime($date_end . ' ' . $hour_end . ':' . $min_end); if ($type == "prvate") { $category_id = 0; $type = "private"; } else { if (is_numeric($type)) { $category_id = $type; } else { $category_id = 0; } $type = "public"; } $event_id = $model->addEvent($inUser->id, $type, $category_id, $start_time, $end_time, $title, $content); $output = array(); if (!$event_id) { $output['error'] = TRUE; $output['errortext'] = iconv("CP1251", "UTF-8", "Ошибка БД"); } else { $output['error'] = FALSE; $event = $model->getEvent($event_id); $output['event_id'] = $event_id; $output['start'] = $event['start_time']; $output['end_time'] = $event['end_time']; if ($event['end_time'] - $event['start_time'] > 60 * 60 * 8) { $output['allDay'] = TRUE; } else { $output['allDay'] = FALSE; } $output['bg'] = $event['bg']; $output['tx'] = $event['tx']; if ($type != "private") { cmsActions::log('add_event', array('object' => 'событие', 'object_url' => '/calendar/event' . $event_id . '.html', 'object_id' => $event_id, 'target' => $title, 'target_url' => '/calendar/event' . $event_id . '.html', 'target_id' => '0', 'description' => $title)); } } } else { $output['error'] = TRUE; $output['errortext'] = iconv("CP1251", "UTF-8", "Ошибка доступа"); } print json_encode($output); exit; } if ($do == "ajax_edit") { $type_act = $inCore->request('type', 'str'); $id = $inCore->request('id', 'int'); $dayDelta = $inCore->request('dayDelta', 'str'); $minuteDelta = $inCore->request('minuteDelta', 'str'); $event = $model->getEvent($id); if ($event['author_id'] == $inUser->id) { $type = $event['type']; $apx = ""; $start_time = $event['start_time']; $end_time = $event['end_time']; $title = $event['title']; $content = $event['content']; $delta = $dayDelta * 24 * 60 * 60 + $minuteDelta * 60; if ($type_act == "drop") { $start_time = $start_time + $delta; $end_time = $end_time + $delta; } if ($type_act == "resize") { $end_time = $end_time + $delta; } $model->updateEvent($id, $type, $apx, $start_time, $end_time, $title, $content); } else { print "Ошибка доступа"; } exit; } if ($do == "ajax_get_event") { $starttime = $inCore->request('start', 'int'); $endtime = $inCore->request('end', 'int'); $parent_id = $inCore->request('parent_id', 'parent_id'); $category = $inCore->request('category', 'str'); if ($category == "all" or !is_numeric($category)) { $category = FALSE; } if (!$parent_id) { $parent_id = 0; } $events = $model->getCalendar($starttime, $endtime, $category, $parent_id); $output = array(); foreach ($events as $data) { $data['title'] = iconv("cp1251", "utf8", $data["title"]); $data['start'] = date("Y-m-d H:i:s", $data["start_time"]); $data['end'] = date("Y-m-d H:i:s", $data["end_time"]); $data['url'] = "/calendar/event" . $data['id'] . ".html"; if ($data["author_id"] == $inUser->id) { $data['editable'] = true; } else { $data['editable'] = false; } if ($data["end_time"] - $data["start_time"] > 60 * 60 * 8) { $data['allDay'] = "true"; } if (!$data['category_id']) { switch ($data["type"]) { case "public": $data['color'] = $cfg['public_bg_color']; $data['textColor'] = $cfg['public_tx_color']; break; case "private": $data['color'] = $cfg['private_bg_color']; $data['textColor'] = $cfg['private_tx_color']; break; } } else { $data['color'] = $data['bg']; $data['textColor'] = $data['tx']; } if ($data["type"] == "private" and $data['author_id'] != $inUser->id) { } else { $output[] = $data; } } print json_encode($output); exit; } if ($do == "isc_calendar") { header('Content-type: text/calendar; charset=utf-8'); header('Content-Disposition: inline; filename=calendar.ics'); echo "BEGIN:VCALENDAR\n"; echo "VERSION:2.0\n"; echo "PRODID:-//hacksw/handcal//NONSGML v1.0//EN'\n"; $events = $model->getCalendar(time() - 60 * 60 * 24 * 30, time() + 60 * 60 * 24 * 30, 0); foreach ($events as $event) { if ($event['type'] == "public") { $title = iconv("cp1251", "utf8", $event["title"]); //$content = iconv("cp1251","utf8",str_replace("\n",'',$event["content"])); $dtstart = date("Ymd", $event["start_time"]) . "T" . date("His", $event["start_time"]) . "Z"; $dtend = date("Ymd", $event["end_time"]) . "T" . date("His", $event["end_time"]) . "Z"; echo "BEGIN:VEVENT\n"; echo "DTSTART:{$dtstart}\n"; echo "DTEND:{$dtend}\n"; echo "SUMMARY:{$title}\n"; //echo "DESCRIPTION:$content\n"; echo "END:VEVENT\n"; } } echo "END:VCALENDAR\n"; exit; } if ($do == "ajax_add_form") { $start = strtotime($inCore->request('start', 'str')); $end = strtotime($inCore->request('end', 'str')); if (!$inUser->id) { print "Ошибка доступа."; exit; } $catigories = $model->getAllCategories(); $bb_toolbar = cmsPage::getBBCodeToolbar('message', $cfg['img_on'], 'forum'); $smilies = cmsPage::getSmilesPanel('message'); $smarty = $inCore->initSmarty('components', 'com_calendar_add.tpl'); $smarty->assign('catigories', $catigories); $smarty->assign('start_date', date("d.m.Y", $start)); $smarty->assign('start_hour', date("H", $start)); $smarty->assign('start_min', date("i", $start)); $smarty->assign('end_date', date("d.m.Y", $end)); $smarty->assign('end_hour', date("H", $end)); $smarty->assign('end_min', date("i", $end)); $smarty->assign('bb_toolbar', $bb_toolbar); $smarty->assign('smilies', $smilies); $smarty->display('com_calendar_add.tpl'); exit; } // FOTOLIB if ($do == "imagerotate") { $side = $md5 = $inCore->request('side', 'str'); $image_id = $inCore->request('image_id', 'int'); include 'fotolib.class.php'; $foto = new FotoLib(); $foto->Rotate($side, $image_id); $inCore->redirectBack(); exit; } if ($do == "imagedelete") { include 'fotolib.class.php'; $image_id = $inCore->request('image_id', 'int'); $foto = new FotoLib(); $foto->Delete($image_id); $inCore->redirectBack(); exit; } }
function clubs() { $inCore = cmsCore::getInstance(); $inPage = cmsPage::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); global $_LANG; $model = new cms_model_clubs(); $inPhoto = $model->initPhoto(); define('IS_BILLING', $inCore->isComponentInstalled('billing')); if (IS_BILLING) { cmsCore::loadClass('billing'); } // js только авторизованным if($inUser->id){ $inPage->addHeadJS('components/clubs/js/clubs.js'); } $pagetitle = $inCore->getComponentTitle(); $id = cmsCore::request('id', 'int', 0); $do = $inCore->do; $page = cmsCore::request('page', 'int', 1); $inPage->setTitle($pagetitle); $inPage->setDescription($model->config['meta_desc'] ? $model->config['meta_desc'] : $pagetitle); $inPage->setKeywords($model->config['meta_keys'] ? $model->config['meta_keys'] : $pagetitle); $inPage->addPathway($pagetitle, '/clubs'); $inPage->addHeadJsLang(array('NO_PUBLISH','EDIT_PHOTO','YOU_REALLY_DELETE_PHOTO','YOU_REALLY_DELETE_ALBUM','RENAME_ALBUM','ALBUM_TITLE','ADD_PHOTOALBUM','REALY_EXIT_FROM_CLUB','JOINING_CLUB','SEND_MESSAGE','CREATE','CREATE_CLUB','SEND_INVITE_CLUB','YOU_NO_SELECT_USER')); //////////////////////// КЛУБЫ ПОЛЬЗОВАТЕЛЯ///////////////////////////////////// if ($do == 'user_clubs') { if (!cmsCore::isAjax()) { return false; } $inPage->displayLangJS(array('CREATE','CREATE_CLUB')); $user_id = cmsCore::request('user_id', 'int', $inUser->id); $user = cmsUser::getShortUserData($user_id); if (!$user) { return false; } // получаем клубы, в которых пользователь админ $model->whereAdminIs($user['id']); $inDB->orderBy('c.pubdate', 'DESC'); $clubs = $model->getClubs(); // получаем клубы, в которых состоит пользователь $inDB->addSelect('uc.role'); $inDB->addJoin("INNER JOIN cms_user_clubs uc ON uc.club_id = c.id AND uc.user_id = '{$user['id']}'"); $inDB->orderBy('uc.role', 'DESC, uc.pubdate DESC'); $inclubs = $model->getClubs(); cmsPage::initTemplate('components', 'com_clubs_user')-> assign('can_create', (($inUser->id == $user['id']) && ($model->config['cancreate'] || $inUser->is_admin)))-> assign('clubs', array_merge($clubs, $inclubs))-> assign('user', $user)-> assign('my_profile', $user['id'] == $inUser->id)-> display(); } //////////////////////// ВСЕ КЛУБЫ ///////////////////////////////////////////// if ($do=='view'){ $inDB->orderBy('is_vip', 'DESC, rating DESC'); $inDB->limitPage($page, $model->config['perpage']); $total = $model->getClubsCount(); $clubs = $model->getClubs(); if (!$clubs && $page > 1) { return false; } if ($page > 1) { foreach ($clubs as $c) { $keys[] = $c['title']; } $inPage->setKeywords(implode(',', $keys)); } cmsPage::initTemplate('components', 'com_clubs_view')-> assign('pagetitle', $pagetitle)-> assign('can_create', ($inUser->id && $model->config['cancreate'] || $inUser->is_admin))-> assign('clubs', $clubs)-> assign('total', $total)-> assign('pagination', cmsPage::getPagebar($total, $page, $model->config['perpage'], '/clubs/page-%page%'))-> display(); } /////////////////////// ПРОСМОТР КЛУБА ///////////////////////////////////////// if ($do=='club'){ $club = $model->getClub($id); if (!$club) { return false; } if (!$club['published'] && !$inUser->is_admin) { return false; } $inPage->setTitle($club['pagetitle'] ? $club['pagetitle'] : $club['title']); $inPage->setKeywords($club['meta_keys'] ? $club['meta_keys'] : $club['title']); if (!$club['meta_desc']) { if ($club['description']) { $inPage->setDescription(crop($club['description'])); } else { $inPage->setDescription($club['title']); } } else { $inPage->setDescription($club['meta_desc']); } $inPage->addPathway($club['title']); $inPage->addHeadJsLang(array('NEW_POST_ON_WALL','CONFIRM_DEL_POST_ON_WALL')); // Инициализируем участников клуба $model->initClubMembers($club['id']); // права доступа $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); $is_member = $model->checkUserRightsInClub('member'); // Приватный или публичный клуб $is_access = true; if ($club['clubtype']=='private' && (!$is_admin && !$is_moder && !$is_member)){ $is_access = false; } // Общее количество участников $club['members'] = $model->club_total_members; // Общее количество участников $club['moderators'] = $model->club_total_moderators; // Массив членов клуба if($club['members']){ $inDB->limit($model->config['club_perpage']); $club['members_list'] = $model->getClubMembers($club['id'], 'member'); } else { $club['members_list'] = array(); } // Массив модераторов клуба if($club['moderators']){ $club['moderators_list'] = $model->getClubMembers($club['id'], 'moderator'); } // Стена клуба // количество записей на стене берем из настроек $inDB->limitPage(1, $model->config['wall_perpage']); $club['wall_html'] = cmsUser::getUserWall($club['id'], 'clubs', ($is_moder || $is_admin), ($is_moder || $is_admin)); ///////////////////////////////////////////// //////////// ПОСТЫ БЛОГА КЛУБА ////////////// ///////////////////////////////////////////// if ($club['enabled_blogs']){ $inBlog = $model->initBlog(); $inBlog->whereBlogUserIs($club['id']); $club['total_posts'] = $inBlog->getPostsCount($is_admin || $is_moder); $inDB->addSelect('b.user_id as bloglink'); $inDB->orderBy('p.pubdate', 'DESC'); $inDB->limit($model->config['club_posts_perpage']); $club['blog_posts'] = $inBlog->getPosts(($is_admin || $is_moder), $model, true); } ///////////////////////////////////////////// //////////// ФОТОАЛЬБОМЫ КЛУБА ////////////// ///////////////////////////////////////////// if ($club['enabled_photos']){ // Общее количество альбомов $club['all_albums'] = $inDB->rows_count('cms_photo_albums', "NSDiffer = 'club{$club['id']}' AND user_id = '{$club['id']}' AND parent_id > 0"); // получаем альбомы if($club['all_albums']){ $inDB->limit($model->config['club_album_perpage']); $inDB->orderBy('f.pubdate', 'DESC'); $club['photo_albums'] = $inPhoto->getAlbums(0, 'club'.$club['id']); } else { $club['photo_albums'] = array(); } } // Получаем плагины $plugins = cmsCore::callTabEventPlugins('GET_SINGLE_CLUB', $club); cmsPage::initTemplate('components', 'com_clubs_view_club')-> assign('club', $club)-> assign('is_access', $is_access)-> assign('user_id', $inUser->id)-> assign('is_admin', $is_admin)-> assign('is_moder', $is_moder)-> assign('plugins', $plugins)-> assign('is_member', $is_member)-> assign('is_photo_karma_enabled', ((($inUser->karma >= $club['photo_min_karma']) && $is_member) ? true : false))-> assign('is_blog_karma_enabled', ((($inUser->karma >= $club['blog_min_karma']) && $is_member) ? true : false))-> assign('cfg', $model->config)-> display(); } ///////////////////////// СОЗДАНИЕ КЛУБА /////////////////////////////////////// if ($do == 'create'){ if(!cmsCore::isAjax()) { return false; } if(!$inUser->id){ return false; } $can_create = $model->canCreate(); // показываем форму if (!cmsCore::inRequest('create') ){ cmsPage::initTemplate('components', 'com_clubs_create')-> assign('can_create', $can_create)-> assign('last_message', $model->last_message)-> display(); cmsCore::jsonOutput(array('error' => false, 'can_create' => (bool)$can_create, 'html' => ob_get_clean())); } if (cmsCore::inRequest('create')){ if (!$can_create){ return false; } $title = $inCore->request('title', 'str'); $clubtype = $inCore->request('clubtype', 'str'); if (!$title || !in_array($clubtype, array('public','private'))){ cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['CLUB_REQ_TITLE'])); } if ($inDB->get_field('cms_clubs', "LOWER(title) = '".mb_strtolower($title)."'", 'id')){ cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['CLUB_EXISTS'])); } if(!cmsUser::checkCsrfToken()) { return false; } $club_id = $model->addClub(array('admin_id'=>$inUser->id, 'title'=>$title, 'clubtype'=>$clubtype, 'create_karma'=>$inUser->karma, 'enabled_blogs'=>$model->config['enabled_blogs'], 'enabled_photos'=>$model->config['enabled_photos'])); if($club_id){ //регистрируем событие cmsActions::log('add_club', array( 'object' => $title, 'object_url' => '/clubs/'.$club_id, 'object_id' => $club_id, 'target' => '', 'target_url' => '', 'target_id' => 0, 'description' => '' )); } cmsCore::addSessionMessage($_LANG['CLUB_IS_CREATED'], 'success'); cmsCore::jsonOutput(array('error' => false, 'club_id' => $club_id)); } } ///////////////////////// НАСТРОЙКИ КЛУБА ////////////////////////////////////// if ($do == 'config'){ if (!$inUser->id){ return false; } $club = $model->getClub($id); if (!$club){ return false; } // Инициализируем участников клуба $model->initClubMembers($club['id']); // настраивать клуб могут только администраторы $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); if (!$is_admin){ return false; } if (cmsCore::inRequest('save')){ if (!cmsUser::checkCsrfToken()) { return false; } $description = cmsCore::badTagClear(cmsCore::request('description', 'html', '')); $new_club['description'] = $inDB->escape_string($description); $new_club['title'] = cmsCore::request('title', 'str', $club['title']); $new_club['clubtype'] = cmsCore::request('clubtype', 'str', 'public'); $new_club['maxsize'] = cmsCore::request('maxsize', 'int', 0); $new_club['blog_min_karma'] = cmsCore::request('blog_min_karma', 'int', 0); $new_club['photo_min_karma'] = cmsCore::request('photo_min_karma', 'int', 0); $new_club['album_min_karma'] = cmsCore::request('album_min_karma', 'int', 0); $new_club['blog_premod'] = cmsCore::request('blog_premod', 'int', 0); $new_club['photo_premod'] = cmsCore::request('photo_premod', 'int', 0); $new_club['join_karma_limit'] = cmsCore::request('join_karma_limit', 'int', 0); $new_club['join_min_karma'] = cmsCore::request('join_min_karma', 'int', 0); if ($model->config['seo_user_access'] || $inUser->is_admin) { $new_club['pagetitle'] = cmsCore::request('pagetitle', 'str', ''); $new_club['meta_keys'] = cmsCore::request('meta_keys', 'str', ''); $new_club['meta_desc'] = cmsCore::request('meta_desc', 'str', ''); } // загружаем изображение клуба $new_imageurl = $model->uploadClubImage($club['imageurl']); $new_club['imageurl'] = @$new_imageurl['filename'] ? $new_imageurl['filename'] : $club['imageurl']; // Сохраняем $model->updateClub($club['id'], $new_club); // Обновляем ленту активности cmsActions::updateLog('add_club', array('object' => $new_club['title']), $club['id']); cmsActions::updateLog('add_club_user', array('object' => $new_club['title']), $club['id']); if ($inUser->is_admin && IS_BILLING){ $is_vip = cmsCore::request('is_vip', 'int', 0); $join_cost = cmsCore::request('join_cost', 'int', 0); $model->setVip($club['id'], $is_vip, $join_cost); } $moders = cmsCore::request('moderslist', 'array_int', array()); $members = cmsCore::request('memberslist', 'array_int', array()); $all_users = array_merge($members, $moders); // Сохраняем пользователей $model->clubSaveUsers($club['id'], $all_users); $model->clubSetRole($club['id'], $moders, 'moderator'); // Кешируем количество $model->setClubMembersCount($club['id']); cmsCore::addSessionMessage($_LANG['CONFIG_SAVE_OK'], 'info'); cmsCore::redirect('/clubs/'.$club['id']); } if (!cmsCore::inRequest('save')){ // Заголовки и пафвей $inPage->addPathway($club['title'], '/clubs/'.$club['id']); $inPage->addPathway($_LANG['CONFIG_CLUB']); $inPage->setTitle($_LANG['CONFIG_CLUB']); // Список друзей, отсутствующих в клубе $friends_list = ''; // массив id друзей не в клубе $friends_ids = array(); // Получаем список друзей $friends = cmsUser::getFriends($inUser->id); // Получаем список участников $members = $model->getClubMembersIds(); // Формируем список друзей, которые еще не в клубе foreach($friends as $key=>$friend){ if (!in_array($friend['id'], $members) && $friend['id'] != $club['admin_id']){ $friends_list .= '<option value="'.$friend['id'].'">'.$friend['nickname'].'</option>'; $friends_ids[] = $friend['id']; } } // Получаем модераторов клуба $moderators = $model->getClubMembersIds('moderator'); // формируем список друзья не в клубе + участники клуба кроме модераторов $fr_plus_members = $members ? array_merge($friends_ids, $members) : $friends_ids; // Убираем модераторов если они есть $fr_plus_members = $moderators ? array_diff($fr_plus_members, $moderators) : $fr_plus_members; // Формируем список option друзей (которые еще не в этом клубе) и участников if ($fr_plus_members) { $fr_members_list = cmsUser::getAuthorsList($fr_plus_members); } else { $fr_members_list = ''; } // Формируем список option участников клуба if ($moderators) { $moders_list = cmsUser::getAuthorsList($moderators); } else { $moders_list = ''; } if ($members) { $members_list = cmsUser::getAuthorsList($members); } else { $members_list = ''; } cmsPage::initTemplate('components', 'com_clubs_config')-> assign('club', $club)-> assign('moders_list', $moders_list)-> assign('members_list', $members_list)-> assign('friends_list', $friends_list)-> assign('fr_members_list', $fr_members_list)-> assign('is_billing', IS_BILLING)-> assign('is_admin', $inUser->is_admin)-> assign('cfg', $model->config)-> display(); } } ///////////////////////// ВЫХОД ИЗ КЛУБА /////////////////////////////////////////// if ($do == 'leave'){ if(!$inUser->id) { return false; } if(!cmsCore::isAjax()) { return false; } $club = $model->getClub($id); if(!$club){ cmsCore::halt(); } // Инициализируем участников клуба $model->initClubMembers($club['id']); // Выйти из клуба могут только его участники $is_admin = $inUser->id == $club['admin_id']; $is_member = $model->checkUserRightsInClub(); if ($is_admin || !$is_member){ cmsCore::halt(); } if (cmsCore::inRequest('confirm')){ if(!cmsUser::checkCsrfToken()) { cmsCore::halt(); } cmsCore::callEvent('LEAVE_CLUB', $club); $model->removeUserFromClub($club['id'], $inUser->id); // Пересчитываем рейтинг $model->setClubRating($club['id']); // Кешируем (пересчитываем) количество участников $model->setClubMembersCount($club['id']); // Добавляем событие в ленте активности cmsActions::removeObjectLog('add_club_user', $club['id'], $inUser->id); cmsCore::addSessionMessage($_LANG['YOU_LEAVE_CLUB'].'"'.$club['title'].'"', 'success'); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/clubs/'.$club['id'])); } } ///////////////////////// ВСТУПЛЕНИЕ В КЛУБ //////////////////////////////////// if ($do == 'join'){ if (!$inUser->id){ cmsCore::halt(); } $club = $model->getClub($id); if(!$club){ cmsCore::halt(); } // В приватный клуб участников добавляет администратор if ($club['clubtype']=='private'){ cmsCore::halt(); } // Инициализируем участников клуба $model->initClubMembers($club['id']); // проверяем наличие пользователя в клубе $is_admin = $inUser->id == $club['admin_id']; $is_member = $model->checkUserRightsInClub(); if ($is_admin || $is_member){ cmsCore::halt(); } // Проверяем ограничения на количество участников if ($club['maxsize'] && ($model->club_total_members >= $club['maxsize']) && !$inUser->is_admin){ cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['CLUB_SIZE_LIMIT'])); } // Проверяем ограничения по карме на вступление if($club['join_karma_limit'] && ($inUser->karma < $club['join_min_karma']) && !$inUser->is_admin){ cmsCore::jsonOutput(array('error' => true, 'text' => '<p><strong>'.$_LANG['NEED_KARMA_TEXT'].'</strong></p><p>'.$_LANG['NEEDED'].' '.$club['join_min_karma'].', '.$_LANG['HAVE_ONLY'].' '.$inUser->karma.'.</p><p>'.$_LANG['WANT_SEE'].' <a href="/users/'.$inUser->id.'/karma.html">'.$_LANG['HISTORY_YOUR_KARMA'].'</a>?</p>')); } // // Обработка заявки // if (cmsCore::inRequest('confirm')){ cmsCore::callEvent('JOIN_CLUB', $club); //списываем оплату если клуб платный if (IS_BILLING && $club['is_vip'] && $club['join_cost'] && !$inUser->is_admin){ if ($inUser->balance >= $club['join_cost']){ //если средств на балансе хватает cmsBilling::pay($inUser->id, $club['join_cost'], sprintf($_LANG['VIP_CLUB_BUY_JOIN'], $club['title'])); } else { //недостаточно средств, создаем тикет //и отправляем оплачивать $billing_ticket = array( 'action' => sprintf($_LANG['VIP_CLUB_BUY_JOIN'], $club['title']), 'cost' => $club['join_cost'], 'amount' => $club['join_cost'] - $inUser->balance, 'url' => $_SERVER['REQUEST_URI'].'?confirm=1' ); cmsUser::sessionPut('billing_ticket', $billing_ticket); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/billing/pay')); } } //добавляем пользователя в клуб $model->addUserToClub($club['id'], $inUser->id); // Пересчитываем рейтинг клуба $model->setClubRating($club['id']); // Кешируем (пересчитываем) количество участников $model->setClubMembersCount($club['id']); //регистрируем событие cmsActions::log('add_club_user', array( 'object' => $club['title'], 'object_url' => '/clubs/'.$club['id'], 'object_id' => $club['id'], 'target' => '', 'target_url' => '', 'target_id' => 0, 'description' => '' )); cmsCore::addSessionMessage($_LANG['YOU_JOIN_CLUB'].'"'.$club['title'].'"', 'success'); if($_SERVER['REQUEST_URI'] != '/clubs/'.$club['id'].'/join.html'){ cmsCore::redirect('/clubs/'.$club['id']); } else { cmsCore::jsonOutput(array('error' => false, 'redirect' => '/clubs/'.$club['id'])); } } // // Форма подтверждения заявки // if (!cmsCore::inRequest('confirm')){ $text = '<p>'.$_LANG['YOU_REALY_JOIN_TO'].' <strong>"'.$club['title'].'"</strong>?</p>'; if ($club['is_vip'] && $club['join_cost'] && !$inUser->is_admin){ $text .= '<p>'.$_LANG['VIP_CLUB_JOIN_COST'].' — <strong>'.$club['join_cost'].' '.$_LANG['BILLING_POINT10'].'</strong></p>'; } cmsCore::jsonOutput(array('error' => false, 'text' => $text)); } } ///////////////////// РАССЫЛКА СООБЩЕНИЯ УЧАСТНИКАМ //////////////////////////// if ($do == 'send_message'){ if(!$inUser->id) { return false; } if(!cmsCore::isAjax()) { return false; } $club = $model->getClub($id); if(!$club){ cmsCore::halt(); } // Инициализируем участников клуба $model->initClubMembers($club['id']); // Расылать могут только участники и администраторы $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); if (!$is_admin){ cmsCore::halt(); } if (!cmsCore::inRequest('gosend')){ $inPage->setRequestIsAjax(); cmsPage::initTemplate('components', 'com_clubs_messages_member')-> assign('club', $club)-> assign('bbcodetoolbar', cmsPage::getBBCodeToolbar('message'))-> assign('smilestoolbar', cmsPage::getSmilesPanel('message'))-> display(); cmsCore::jsonOutput(array('error' => false,'html' => ob_get_clean())); } else { // Здесь не эскейпим, в методе sendMessage эскейпится $message = cmsCore::parseSmiles(cmsCore::request('content', 'html', ''), true); $moderators_list = $model->getClubMembersIds('moderator'); $members_list = $model->getClubMembersIds(); $result_list = cmsCore::inRequest('only_mod') ? $moderators_list : $members_list; if (mb_strlen($message)<3){ cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['ERR_SEND_MESS'])); } if (!$result_list){ cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['ERR_SEND_MESS_NO_MEMBERS'])); } if (!cmsUser::checkCsrfToken()) { return false; } $message = str_replace('%club%', '<a href="/clubs/'.$club['id'].'">'.$club['title'].'</a>', $_LANG['MESSAGE_FROM ADMIN']).$message; cmsUser::sendMessages(USER_UPDATER, $result_list, $message); $info = cmsCore::inRequest('only_mod') ? $_LANG['SEND_MESS_TO_MODERS_OK'] : $_LANG['SEND_MESS_TO_MEMBERS_OK']; cmsCore::jsonOutput(array('error' => false, 'text' => $info)); } } ///////////////////////// ПРИГЛАСИТЬ ДРУЗЕЙ В КЛУБ ///////////////////////////// if ($do == 'join_member'){ if (!$inUser->id) { return false; } if (!cmsCore::isAjax()) { return false; } $club = $model->getClub($id); if(!$club){ cmsCore::halt(); } if (!$club['published'] && !$inUser->is_admin) { cmsCore::halt(); } // Инициализируем участников клуба $model->initClubMembers($club['id']); // Расылать могут только участники и администраторы $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_member = $model->checkUserRightsInClub(); if (!$is_admin && !$is_member){ cmsCore::halt(); } // В приватный клуб приглашения не рассылаем if ($club['clubtype']=='private'){ cmsCore::halt(); } // Получаем список друзей $friends = cmsUser::getFriends($inUser->id); // Получаем список участников $members = $model->getClubMembersIds(); // Проверяем наличие друга в списке участников клуба или является ли он администратором foreach($friends as $key=>$friend){ if (in_array($friend['id'], $members) || $friend['id'] == $club['admin_id']) { unset($friends[$key]); } } // Если нет друзей или все друзья уже в этом клубе, то выводим ошибку и возвращаемся назад if (!$friends){ cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['SEND_INVITE_ERROR'])); } // показываем форму для приглашения if (!cmsCore::inRequest('join')){ // Выводим шаблон cmsPage::initTemplate('components', 'com_clubs_join_member')-> assign('club', $club)-> assign('friends', $friends)-> display(); cmsCore::jsonOutput(array('error' => false,'html' => ob_get_clean())); } else { // Приглашаем $users = cmsCore::request('users', 'array_int', array()); if ($users){ $club_link = '<a href="/clubs/'.$club['id'].'">'.$club['title'].'</a>'; $user_link = cmsUser::getProfileLink($inUser->login, $inUser->nickname); $link_join = '<a href="/clubs/'.$club['id'].'">'.$_LANG['JOIN_CLUB'] .'</a>'; $message = str_replace(array('%user%','%club%','%link_join%'), array($user_link,$club_link,$link_join), $_LANG['INVITE_CLUB_TEXT']); cmsUser::sendMessages(USER_UPDATER, $users, $message); } cmsCore::jsonOutput(array('error' => false, 'text' => $_LANG['SEND_INVITE_OK'])); } } ///////////////////////// ПРОСМОТР УЧАСТНИКОВ ////////////////////////////////// if ($do=='members'){ $club = $model->getClub($id); if(!$club){ return false; } if (!$club['published'] && !$inUser->is_admin) { return false; } $inPage->setTitle($_LANG['CLUB_MEMBERS'].' - '.$club['title']); $inPage->setDescription($_LANG['CLUB_MEMBERS'].' - '.$club['title']); $inPage->addPathway($club['title'], '/clubs/'.$club['id']); $inPage->addPathway($_LANG['CLUB_MEMBERS'].' - '.$club['title']); // Инициализируем участников клуба $model->initClubMembers($club['id']); // права доступа $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); $is_member = $model->checkUserRightsInClub(); // Приватный или публичный клуб if ($club['clubtype']=='private' && (!$is_admin && !$is_moder && !$is_member)){ return false; } // Общее количество участников $total_members = $model->club_total_members; // Массив членов клуба if($total_members){ $inDB->limitPage($page, $model->config['member_perpage']); $members = $model->getClubMembers($club['id']); if(!$members) { return false; } } else { return false; } $pagebar = cmsPage::getPagebar($total_members, $page, $model->config['member_perpage'], '/clubs/%id%/members-%page%', array('id'=>$club['id'])); cmsPage::initTemplate('components', 'com_clubs_view_member')-> assign('pagebar', $pagebar)-> assign('page', $page)-> assign('members', $members)-> assign('club', $club)-> assign('total_members', $total_members)-> display(); } ////////////////////////////// ВСЕ АЛЬБОМЫ КЛУБА ////////////////////////////// if ($do=='view_albums'){ $club = $model->getClub($id); if(!$club){ return false; } if (!$club['published'] && !$inUser->is_admin) { return false; } $pagetitle = $_LANG['PHOTOALBUMS'].' - '.$club['title']; $inPage->setTitle($pagetitle); $inPage->addPathway($club['title'], '/clubs/'.$club['id']); $inPage->addPathway($_LANG['PHOTOALBUMS']); // Инициализируем участников клуба $model->initClubMembers($club['id']); // права доступа $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); $is_member = $model->checkUserRightsInClub('member'); $is_karma_enabled = (($inUser->karma >= $club['photo_min_karma']) && $is_member) ? true : false; // Приватный или публичный клуб if ($club['clubtype']=='private' && (!$is_admin && !$is_moder && !$is_member)){ return false; } $inDB->orderBy('f.pubdate', 'DESC'); $club['photo_albums'] = $inPhoto->getAlbums(0, 'club'.$club['id']); if(!$club['photo_albums']) { return false; } // SEO $inPage->setDescription($pagetitle); $keys = array($club['title'], $_LANG['PHOTOALBUMS']); foreach ($club['photo_albums'] as $p) { $keys[] = $p['title']; } $inPage->setKeywords(implode(',', $keys)); cmsPage::initTemplate('components', 'com_clubs_albums')-> assign('club', $club)-> assign('is_admin', $is_admin)-> assign('is_moder', $is_moder)-> assign('is_karma_enabled', $is_karma_enabled)-> assign('show_title', true)-> assign('pagetitle', $pagetitle)-> display(); } ///////////////////////// ПРОСМОТР АЛЬБОМА КЛУБА /////////////////////////////// if ($do=='view_album'){ // Получаем альбом $album = $inDB->getNsCategory('cms_photo_albums', cmsCore::request('album_id', 'int', 0), null); if (!$album) { return false; } // Неопубликованные альбомы показываем только админам if (!$album['published'] && !$inUser->is_admin) { return false; } if ($album['NSDiffer'] != 'club'. $album['user_id']) { return false; } // получаем клуб $club = $model->getClub($album['user_id']); if(!$club) { return false; } if (!$club['published'] && !$inUser->is_admin) { return false; } // Инициализируем участников клуба $model->initClubMembers($club['id']); // права доступа $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); $is_member = $model->checkUserRightsInClub(); // Приватный или публичный клуб if ($club['clubtype']=='private' && (!$is_admin && !$is_moder && !$is_member)){ return false; } $hidden = (bool)($is_admin || $is_moder); // Устанавливаем альбом $inPhoto->whereAlbumIs($album['id']); // Общее количество фото по заданным выше условиям $total = $inPhoto->getPhotosCount($hidden); //устанавливаем сортировку $inDB->orderBy('f.id', 'DESC'); //устанавливаем номер текущей страницы и кол-во фото на странице $inDB->limitPage($page, $model->config['photo_perpage']); $photos = $inPhoto->getPhotos($hidden); if (!$photos && $page > 1) { cmsCore::error404(); } $inPage->addPathway($club['title'], '/clubs/'.$club['id']); $inPage->addPathway($album['title'], '/clubs/photoalbum'.$album['id']); $inPage->setTitle($album['title']); $inPage->setDescription($album['title'].' - '.$_LANG['CLUB_PHOTO_ALBUM'].' "'.$club['title'].'"'); $keys = array($album['title'], $club['title']); if ($photos) { foreach ($photos as $p) { $keys[] = $p['title']; } } $inPage->setKeywords(implode(',', $keys)); cmsPage::initTemplate('components', 'com_clubs_view_album')-> assign('club', $club)-> assign('total', $total)-> assign('album', $album)-> assign('photos', $photos)-> assign('is_admin', $is_admin)-> assign('is_moder', $is_moder)-> assign('is_member', $is_member)-> assign('cfg', $model->config)-> assign('pagebar', cmsPage::getPagebar($total, $page, $model->config['photo_perpage'], '/clubs/photoalbum'.$album['id'].'/page-%page%'))-> display(); } ///////////////////////// УДАЛЕНИЕ АЛЬБОМА ///////////////////////////////////// if ($do=='delete_album'){ if(!$inUser->id) { return false; } if(!cmsCore::isAjax()) { return false; } if(!cmsUser::checkCsrfToken()) { return false; } $album = $inDB->getNsCategory('cms_photo_albums', cmsCore::request('album_id', 'int', 0), null); if (!$album) { cmsCore::halt(); } $club = $model->getClub($album['user_id']); if(!$club) { cmsCore::halt(); } $model->initClubMembers($club['id']); $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); if(!$is_admin && !$is_moder) { cmsCore::halt(); } $inPhoto->deleteAlbum($album['id'], 'club'.$club['id'], $model->initUploadClass()); cmsCore::addSessionMessage($_LANG['ALBUM_DELETED'], 'success'); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/clubs/'.$club['id'])); } //////////////////////////////// ПРОСМОТР ФОТО ///////////////////////////////// if ($do=='view_photo'){ // Получаем фото $photo = $inPhoto->getPhoto(cmsCore::request('photo_id', 'int', 0)); if (!$photo) { return false; } $photo = cmsCore::callEvent('VIEW_CLUB_PHOTO', $photo); // получаем клуб $club = $model->getClub($photo['auser_id']); if(!$club) { return false; } if (!$club['published'] && !$inUser->is_admin) { return false; } // Инициализируем участников клуба $model->initClubMembers($club['id']); // права доступа $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); $is_member = $model->checkUserRightsInClub(); $is_author = $photo['user_id'] == $inUser->id; if (!$photo['published'] && !$is_admin && !$is_moder) { return false; } // Фото приватного клуба показываем только участникам if ($club['clubtype']=='private' && !$is_member && !$is_admin){ return false; } $inPage->addPathway($club['title'], '/clubs/'. $club['id']); $inPage->addPathway($photo['cat_title'], '/clubs/photoalbum'.$photo['album_id']); $inPage->addPathway($photo['title']); $inPage->setTitle($photo['pagetitle'] ? $photo['pagetitle'] : $photo['title']); $inPage->setKeywords($photo['meta_keys'] ? $photo['meta_keys'] : $photo['title']); if (!$photo['meta_desc']) { if ($photo['description']) { $inPage->setDescription(crop($photo['description'])); } else { $inPage->setDescription($photo['title']); } } else { $inPage->setDescription($photo['meta_desc']); } // ссылки вперед назад $photo['nextid'] = $inDB->get_fields('cms_photo_files', 'id<'.$photo['id'].' AND album_id = '.$photo['album_id'], 'id, file, title', 'id DESC'); $photo['previd'] = $inDB->get_fields('cms_photo_files', 'id>'.$photo['id'].' AND album_id = '.$photo['album_id'], 'id, file, title', 'id ASC'); // кнопки голосования $photo['karma_buttons'] = cmsKarmaButtons('club_photo', $photo['id'], $photo['rating'], $is_author); // Обновляем кол-во просмотров if(!$is_author){ $inDB->setFlag('cms_photo_files', $photo['id'], 'hits', $photo['hits']+1); } // выводим в шаблон cmsPage::initTemplate('components', 'com_clubs_view_photo')-> assign('club', $club)-> assign('photo', $photo)-> assign('is_admin', $is_admin)-> assign('is_moder', $is_moder)-> assign('is_exists_original', (file_exists(PATH.'/images/photos/'. $photo['file'])))-> assign('is_author', $is_author)-> display(); //если есть, выводим комментарии if ($photo['comments'] && $inCore->isComponentEnable('comments')) { cmsCore::includeComments(); comments('club_photo', $photo['id'], array(), $is_author); } } ////////////////////////////// УДАЛИТЬ ФОТО //////////////////////////////////// if ($do=='delete_photo'){ if(!$inUser->id) { return false; } if(!cmsCore::isAjax()) { return false; } if(!cmsUser::checkCsrfToken()) { return false; } $photo = $inPhoto->getPhoto(cmsCore::request('photo_id', 'int', 0)); if (!$photo) { cmsCore::halt(); } // получаем клуб $club = $model->getClub($photo['auser_id']); if(!$club) { cmsCore::halt(); } // Инициализируем участников клуба $model->initClubMembers($club['id']); // права доступа $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); // удалять могут только модераторы и администраторы if(!$is_admin && !$is_moder) { cmsCore::halt(); } $inPhoto->deletePhoto($photo, $model->initUploadClass()); cmsCore::addSessionMessage($_LANG['PHOTO_DELETED'], 'success'); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/clubs/photoalbum'.$photo['album_id'])); } ///////////////////////// РЕДАКТИРОВАТЬ ФОТО /////////////////////////////////// if ($do=='edit_photo'){ if(!$inUser->id) { return false; } if(!cmsCore::isAjax()) { return false; } $photo = $inPhoto->getPhoto(cmsCore::request('photo_id', 'int', 0)); if (!$photo) { cmsCore::halt(); } // получаем клуб $club = $model->getClub($photo['auser_id']); if(!$club) { cmsCore::halt(); } if (!$club['published'] && !$inUser->is_admin) { return false; } // Инициализируем участников клуба $model->initClubMembers($club['id']); // права доступа $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); $is_author = $photo['user_id'] == $inUser->id; if(!$is_admin && !$is_moder && !$is_author) { cmsCore::halt(); } if (!cmsCore::inRequest('edit_photo')){ cmsPage::initTemplate('components', 'com_photos_edit')-> assign('photo', $photo)-> assign('form_action', '/clubs/editphoto'.$photo['id'].'.html')-> assign('no_tags', true)-> assign('is_admin', ($is_admin || $is_moder))-> display(); cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean())); } else { $mod['title'] = cmsCore::request('title', 'str', ''); $mod['title'] = $mod['title'] ? $mod['title'] : $photo['title']; $mod['description'] = cmsCore::request('description', 'str', ''); $mod['comments'] = ($is_admin || $is_moder) ? cmsCore::request('comments', 'int') : $photo['comments']; if ($model->config['seo_user_access'] || $inUser->is_admin) { $mod['pagetitle'] = cmsCore::request('pagetitle', 'str', ''); $mod['meta_keys'] = cmsCore::request('meta_keys', 'str', ''); $mod['meta_desc'] = cmsCore::request('meta_desc', 'str', ''); } $file = $model->initUploadClass()->uploadPhoto($photo['file']); $mod['file'] = $file['filename'] ? $file['filename'] : $photo['file']; $inPhoto->updatePhoto($mod, $photo['id']); $description = '<a href="/clubs/photo'.$photo['id'].'.html" class="act_photo"><img border="0" src="/images/photos/small/'.$mod['file'].'" /></a>'; cmsActions::updateLog('add_photo_club', array('object' => $mod['title'], 'description' => $description), $photo['id']); cmsCore::addSessionMessage($_LANG['PHOTO_SAVED'], 'success'); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/clubs/photo'.$photo['id'].'.html')); } } /////////////////////////////// PHOTO PUBLISH ////////////////////////////////// if ($do=='publish_photo'){ if(!$inUser->id) { return false; } if(!cmsCore::isAjax()) { return false; } $photo = $inPhoto->getPhoto(cmsCore::request('photo_id', 'int', 0)); if (!$photo) { cmsCore::halt(); } // получаем клуб $club = $model->getClub($photo['auser_id']); if(!$club) { cmsCore::halt(); } if (!$club['published'] && !$inUser->is_admin) { return false; } // Инициализируем участников клуба $model->initClubMembers($club['id']); // права доступа $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); if(!$is_admin && !$is_moder) { cmsCore::halt(); } $inPhoto->publishPhoto($photo['id']); $description = $club['clubtype']=='private' ? '' : '<a href="/clubs/photo'.$photo['id'].'.html" class="act_photo"><img border="0" src="/images/photos/small/'.$photo['file'].'" /></a>'; cmsActions::log('add_photo_club', array( 'object' => $photo['title'], 'object_url' => '/clubs/photo'.$photo['id'].'.html', 'object_id' => $photo['id'], 'user_id' => $photo['user_id'], 'target' => $club['title'], 'target_id' => $photo['album_id'], 'target_url' => '/clubs/'.$club['id'], 'description' => $description )); cmsCore::halt('ok'); } ///////////////////////// ЗАГРУЗКА ФОТО //////////////////////////////////////// if ($do=='add_photo'){ // Неавторизованных просим авторизоваться if (!$inUser->id) { cmsUser::goToLogin(); } $do_photo = cmsCore::request('do_photo', 'str', 'addphoto'); $album = $inDB->getNsCategory('cms_photo_albums', cmsCore::request('album_id', 'int', 0), null); if (!$album) { return false; } if (!$album['published'] && !$inUser->is_admin) { return false; } $club = $model->getClub($album['user_id']); if(!$club) { return false; } // если фотоальбомы запрещены if(!$club['enabled_photos']){ return false; } // Инициализируем участников клуба $model->initClubMembers($club['id']); // права доступа $is_admin = $inUser->is_admin || ($inUser->id == $club['admin_id']); $is_moder = $model->checkUserRightsInClub('moderator'); $is_member = $model->checkUserRightsInClub('member'); $is_karma_enabled = (($inUser->karma >= $club['photo_min_karma']) && $is_member) ? true : false; if(!$is_karma_enabled && !$is_admin && !$is_moder) { cmsCore::addSessionMessage('<p><strong>'.$_LANG['NEED_KARMA_PHOTO'].'</strong></p><p>'.$_LANG['NEEDED'].' '.$club['photo_min_karma'].', '.$_LANG['HAVE_ONLY'].' '.$inUser->karma.'.</p><p>'.$_LANG['WANT_SEE'].' <a href="/users/'.$inUser->id.'/karma.html">'.$_LANG['HISTORY_YOUR_KARMA'].'</a>?</p>', 'error'); cmsCore::redirectBack(); } $inPage->addPathway($club['title'], '/clubs/'.$club['id']); $inPage->addPathway($album['title'], '/clubs/photoalbum'.$album['id']); return include 'components/clubs/add_photo.php'; } ///////////////////////// БЛОГИ КЛУБОВ ///////////////////////////////////////// if ($do == 'club_blogs') { $bdo = cmsCore::request('bdo', 'str', 'view_clubs_posts'); $post_id = cmsCore::request('post_id', 'int', 0); $cat_id = cmsCore::request('cat_id', 'int', 0); $seolink = cmsCore::request('seolink', 'str', ''); $on_moderate = cmsCore::request('on_moderate', 'int', 0); $inBlog = $model->initBlog(); $inPage->addHeadJsLang(array('NEW_CAT','RENAME_CAT','YOU_REALY_DELETE_CAT','YOU_REALY_DELETE_POST','NO_PUBLISHED')); return include 'components/clubs/club_blogs.php'; } }
function content() { $inCore = cmsCore::getInstance(); $inPage = cmsPage::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); $model = new cms_model_content(); define('IS_BILLING', $inCore->isComponentInstalled('billing')); if (IS_BILLING) { cmsCore::loadClass('billing'); } global $_LANG; $id = cmsCore::request('id', 'int', 0); $do = $inCore->do; $seolink = cmsCore::strClear(urldecode(cmsCore::request('seolink', 'html', ''))); if (is_numeric($seolink)) { cmsCore::error404(); } $page = cmsCore::request('page', 'int', 1); ///////////////////////////////////// VIEW CATEGORY //////////////////////////////////////////////////////////////////////////////// if ($do == 'view') { $cat = $inDB->getNsCategory('cms_category', $seolink); // если не найдена категория и мы не на главной, 404 if (!$cat && $inCore->menuId() !== 1) { cmsCore::error404(); } // языки $cat = translations::process(cmsConfig::getConfig('lang'), 'content_category', $cat); // Плагины $cat = cmsCore::callEvent('GET_CONTENT_CAT', $cat); // Неопубликованные показываем только админам if (!$cat['published'] && !$inUser->is_admin) { cmsCore::error404(); } // Проверяем доступ к категории if (!$inCore->checkUserAccess('category', $cat['id'])) { cmsCore::addSessionMessage($_LANG['NO_PERM_FOR_VIEW_TEXT'] . '<br>' . $_LANG['NO_PERM_FOR_VIEW_RULES'], 'error'); cmsCore::redirect('/content'); } // если не корень категорий if ($cat['NSLevel'] > 0) { $inPage->setTitle($cat['pagetitle'] ? $cat['pagetitle'] : $cat['title']); $pagetitle = $cat['title']; $showdate = $cat['showdate']; $showcomm = $cat['showcomm']; $inPage->addHead('<link rel="alternate" type="application/rss+xml" title="' . htmlspecialchars($cat['title']) . '" href="' . HOST . '/rss/content/' . $cat['id'] . '/feed.rss">'); } // Если корневая категория if ($cat['NSLevel'] == 0) { if ($model->config['hide_root']) { cmsCore::error404(); } $inPage->setTitle($_LANG['CATALOG_ARTICLES']); $pagetitle = $_LANG['CATALOG_ARTICLES']; $showdate = 1; $showcomm = 1; } // Получаем дерево категорий $path_list = $inDB->getNsCategoryPath('cms_category', $cat['NSLeft'], $cat['NSRight'], 'id, title, NSLevel, seolink, url'); if ($path_list) { $path_list = translations::process(cmsConfig::getConfig('lang'), 'content_category', $path_list); foreach ($path_list as $pcat) { if (!$inCore->checkUserAccess('category', $pcat['id'])) { cmsCore::addSessionMessage($_LANG['NO_PERM_FOR_VIEW_TEXT'] . '<br>' . $_LANG['NO_PERM_FOR_VIEW_RULES'], 'error'); cmsCore::redirect('/content'); } $inPage->addPathway($pcat['title'], $model->getCategoryURL(null, $pcat['seolink'])); } } // Получаем подкатегории $subcats_list = $model->getSubCats($cat['id']); // Привязанный фотоальбом $cat_photos = $model->getCatPhotoAlbum($cat['photoalbum']); // Получаем статьи // Редактор/администратор $is_editor = $cat['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd') || $inUser->is_admin; // Условия $model->whereCatIs($cat['id']); // Общее количество статей $total = $model->getArticlesCount($is_editor); // Сортировка и разбивка на страницы $inDB->orderBy($cat['orderby'], $cat['orderto']); $inDB->limitPage($page, $model->config['perpage']); // Получаем статьи $content_list = $total ? $model->getArticlesList(!$is_editor) : array(); $inDB->resetConditions(); if (!$content_list && $page > 1) { cmsCore::error404(); } $pagebar = cmsPage::getPagebar($total, $page, $model->config['perpage'], $model->getCategoryURL(null, $cat['seolink'], 0, true)); $template = $cat['tpl'] ? $cat['tpl'] : 'com_content_view.tpl'; if ($cat['NSLevel'] > 0) { // meta description if ($cat['meta_desc']) { $meta_desc = $cat['meta_desc']; } elseif (mb_strlen(strip_tags($cat['description'])) >= 250) { $meta_desc = crop($cat['description']); } else { $meta_desc = $cat['title']; } $inPage->setDescription($meta_desc); // meta keywords if ($cat['meta_keys']) { $meta_keys = $cat['meta_keys']; } elseif ($content_list) { foreach ($content_list as $c) { $k[] = $c['title']; } $meta_keys = implode(', ', $k); } else { $meta_keys = $cat['title']; } $inPage->setKeywords($meta_keys); } cmsPage::initTemplate('components', $template)->assign('cat', $cat)->assign('is_homepage', (bool) ($inCore->menuId() == 1))->assign('showdate', $showdate)->assign('showcomm', $showcomm)->assign('pagetitle', $pagetitle)->assign('subcats', $subcats_list)->assign('cat_photos', $cat_photos)->assign('articles', $content_list)->assign('pagebar', $pagebar)->display($template); } ///////////////////////////////////// READ ARTICLE //////////////////////////////////////////////////////////////////////////////// if ($do == 'read') { // Получаем статью $article = $model->getArticle($seolink); if (!$article) { cmsCore::error404(); } $article = translations::process(cmsConfig::getConfig('lang'), 'content_content', $article); $article = cmsCore::callEvent('GET_ARTICLE', $article); $is_admin = $inUser->is_admin; $is_author = $inUser->id == $article['user_id']; $is_author_del = cmsUser::isUserCan('content/delete'); $is_editor = $article['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd'); // если статья не опубликована или дата публикации позже, 404 if ((!$article['published'] || strtotime($article['pubdate']) > time()) && !$is_admin && !$is_editor && !$is_author) { cmsCore::error404(); } if (!$inCore->checkUserAccess('material', $article['id'])) { cmsCore::addSessionMessage($_LANG['NO_PERM_FOR_VIEW_TEXT'] . '<br>' . $_LANG['NO_PERM_FOR_VIEW_RULES'], 'error'); cmsCore::redirect($model->getCategoryURL(null, $article['catseolink'])); } // увеличиваем кол-во просмотров if (@(!$is_author)) { $inDB->setFlag('cms_content', $article['id'], 'hits', $article['hits'] + 1); } // Картинка статьи $article['image'] = file_exists(PATH . '/images/photos/medium/article' . $article['id'] . '.jpg') ? 'article' . $article['id'] . '.jpg' : ''; // Заголовок страницы $article['pagetitle'] = $article['pagetitle'] ? $article['pagetitle'] : $article['title']; // Тело статьи в зависимости от настроек $article['content'] = $model->config['readdesc'] ? $article['description'] . $article['content'] : $article['content']; // Дата публикации $article['pubdate'] = cmsCore::dateFormat($article['pubdate']); // Шаблон статьи $article['tpl'] = $article['tpl'] ? $article['tpl'] : 'com_content_read.tpl'; $inPage->setTitle($article['pagetitle']); // Получаем дерево категорий $path_list = $article['showpath'] ? $inDB->getNsCategoryPath('cms_category', $article['leftkey'], $article['rightkey'], 'id, title, NSLevel, seolink, url') : array(); if ($path_list) { $path_list = translations::process(cmsConfig::getConfig('lang'), 'content_category', $path_list); foreach ($path_list as $pcat) { if (!$inCore->checkUserAccess('category', $pcat['id'])) { cmsCore::addSessionMessage($_LANG['NO_PERM_FOR_VIEW_TEXT'] . '<br>' . $_LANG['NO_PERM_FOR_VIEW_RULES'], 'error'); cmsCore::redirect('/content'); } $inPage->addPathway($pcat['title'], $model->getCategoryURL(null, $pcat['seolink'])); } } $inPage->addPathway($article['title']); // Мета теги KEYWORDS и DESCRIPTION if ($article['meta_keys']) { $inPage->setKeywords($article['meta_keys']); } else { if (mb_strlen($article['content']) > 30) { $inPage->setKeywords(cmsCore::getKeywords(cmsCore::strClear($article['content']))); } } if (mb_strlen($article['meta_desc'])) { $inPage->setDescription($article['meta_desc']); } // Выполняем фильтры $article['content'] = cmsCore::processFilters($article['content']); // Разбивка статей на страницы $pt_pages = array(); if (!empty($GLOBALS['pt'])) { foreach ($GLOBALS['pt'] as $num => $page_title) { $pt_pages[$num]['title'] = $page_title; $pt_pages[$num]['url'] = $model->getArticleURL(null, $article['seolink'], $num + 1); } } // Рейтинг статьи if ($model->config['rating'] && $article['canrate']) { $karma = cmsKarma('content', $article['id']); $karma_points = cmsKarmaFormatSmall($karma['points']); $btns = cmsKarmaButtonsText('content', $article['id'], $karma['points'], $is_author); } cmsPage::initTemplate('components', $article['tpl'])->assign('article', $article)->assign('cfg', $model->config)->assign('page', $page)->assign('is_pages', !empty($GLOBALS['pt']))->assign('pt_pages', $pt_pages)->assign('is_admin', $is_admin)->assign('is_editor', $is_editor)->assign('is_author', $is_author)->assign('is_author_del', $is_author_del)->assign('tagbar', cmsTagBar('content', $article['id']))->assign('karma_points', @$karma_points)->assign('karma_votes', @$karma['votes'])->assign('karma_buttons', @$btns)->display($article['tpl']); // Комментарии статьи if ($article['published'] && $article['comments'] && $inCore->isComponentInstalled('comments')) { cmsCore::includeComments(); comments('article', $article['id'], array(), $is_author); } } ///////////////////////////////////// ADD ARTICLE ////////////////////////////////////////////////////////////////////////////////// if ($do == 'addarticle' || $do == 'editarticle') { $is_add = cmsUser::isUserCan('content/add'); // может добавлять статьи $is_auto_add = cmsUser::isUserCan('content/autoadd'); // добавлять статьи без модерации if (!$is_add && !$is_auto_add) { cmsCore::error404(); } // Для редактирования получаем статью и проверяем доступ if ($do == 'editarticle') { // Получаем статью $item = $model->getArticle($id); if (!$item) { cmsCore::error404(); } $pubcats = array(); // доступ к редактированию админам, авторам и редакторам if (!$inUser->is_admin && $item['user_id'] != $inUser->id && !($item['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd'))) { cmsCore::error404(); } } // Для добавления проверяем не вводили ли мы данные ранее if ($do == 'addarticle') { $item = cmsUser::sessionGet('article'); if ($item) { cmsUser::sessionDel('article'); } // Категории, в которые разрешено публиковать $pubcats = $model->getPublicCats(); if (!$pubcats) { cmsCore::addSessionMessage($_LANG['ADD_ARTICLE_ERR_CAT'], 'error'); cmsCore::redirectBack(); } } // не было запроса на сохранение, показываем форму if (!cmsCore::inRequest('add_mod')) { $dynamic_cost = false; // Если добавляем статью if ($do == 'addarticle') { $pagetitle = $_LANG['ADD_ARTICLE']; $inPage->setTitle($pagetitle); $inPage->addPathway($_LANG['USERS'], '/' . str_replace('/', '', cmsUser::PROFILE_LINK_PREFIX)); $inPage->addPathway($inUser->nickname, cmsUser::getProfileURL($inUser->login)); $inPage->addPathway($_LANG['MY_ARTICLES'], '/content/my.html'); $inPage->addPathway($pagetitle); // поддержка биллинга if (IS_BILLING) { $action = cmsBilling::getAction('content', 'add_content'); foreach ($pubcats as $p => $pubcat) { if ($pubcat['cost']) { $dynamic_cost = true; } else { $pubcats[$p]['cost'] = $action['point_cost'][$inUser->group_id]; } } cmsBilling::checkBalance('content', 'add_content', $dynamic_cost); } } // Если редактируем статью if ($do == 'editarticle') { $pagetitle = $_LANG['EDIT_ARTICLE']; $inPage->setTitle($pagetitle); $inPage->addPathway($_LANG['USERS'], '/' . str_replace('/', '', cmsUser::PROFILE_LINK_PREFIX)); if ($item['user_id'] != $inUser->id) { $user = $inDB->get_fields('cms_users', "id='{$item['user_id']}'", 'login, nickname'); $inPage->addPathway($user['nickname'], cmsUser::getProfileURL($user['login'])); } else { $inPage->addPathway($inUser->nickname, cmsUser::getProfileURL($inUser->login)); } $inPage->addPathway($_LANG['MY_ARTICLES'], '/content/my.html'); $inPage->addPathway($pagetitle); $item['tags'] = cmsTagLine('content', $item['id'], false); $item['image'] = file_exists(PATH . '/images/photos/small/article' . $item['id'] . '.jpg') ? 'article' . $item['id'] . '.jpg' : ''; if (!$is_auto_add) { cmsCore::addSessionMessage($_LANG['ATTENTION'] . ': ' . $_LANG['EDIT_ARTICLE_PREMODER'], 'info'); } } $inPage->initAutocomplete(); $autocomplete_js = $inPage->getAutocompleteJS('tagsearch', 'tags'); $item = cmsCore::callEvent('PRE_EDIT_ARTICLE', @$item ? $item : array()); cmsPage::initTemplate('components', 'com_content_edit')->assign('mod', $item)->assign('do', $do)->assign('cfg', $model->config)->assign('pubcats', $pubcats)->assign('pagetitle', $pagetitle)->assign('is_admin', $inUser->is_admin)->assign('is_billing', IS_BILLING)->assign('dynamic_cost', $dynamic_cost)->assign('autocomplete_js', $autocomplete_js)->display('com_content_edit.tpl'); } // Пришел запрос на сохранение статьи if (cmsCore::inRequest('add_mod')) { $errors = false; $article['category_id'] = cmsCore::request('category_id', 'int', 1); $article['user_id'] = $item['user_id'] ? $item['user_id'] : $inUser->id; $article['title'] = cmsCore::request('title', 'str', ''); $article['tags'] = cmsCore::request('tags', 'str', ''); $article['description'] = cmsCore::request('description', 'html', ''); $article['content'] = cmsCore::request('content', 'html', ''); $article['description'] = cmsCore::badTagClear($article['description']); $article['content'] = cmsCore::badTagClear($article['content']); $article['published'] = $is_auto_add ? 1 : 0; if ($do == 'editarticle') { $article['published'] = $item['published'] == 0 ? $item['published'] : $article['published']; } $article['pubdate'] = $do == 'editarticle' ? $item['pubdate'] : date('Y-m-d H:i'); $article['enddate'] = $do == 'editarticle' ? $item['enddate'] : $article['pubdate']; $article['is_end'] = $do == 'editarticle' ? $item['is_end'] : 0; $article['showtitle'] = $do == 'editarticle' ? $item['showtitle'] : 1; $article['meta_desc'] = $do == 'addarticle' ? mb_strtolower($article['title']) : $inDB->escape_string($item['meta_desc']); $article['meta_keys'] = $do == 'addarticle' ? $inCore->getKeywords($article['content']) : $inDB->escape_string($item['meta_keys']); $article['showdate'] = $do == 'editarticle' ? $item['showdate'] : 1; $article['showlatest'] = $do == 'editarticle' ? $item['showlatest'] : 1; $article['showpath'] = $do == 'editarticle' ? $item['showpath'] : 1; $article['comments'] = $do == 'editarticle' ? $item['comments'] : 1; $article['canrate'] = $do == 'editarticle' ? $item['canrate'] : 1; $article['pagetitle'] = ''; if ($do == 'editarticle') { $article['tpl'] = $item['tpl']; } if (mb_strlen($article['title']) < 2) { cmsCore::addSessionMessage($_LANG['REQ_TITLE'], 'error'); $errors = true; } if (mb_strlen($article['content']) < 10) { cmsCore::addSessionMessage($_LANG['REQ_CONTENT'], 'error'); $errors = true; } if ($errors) { // При добавлении статьи при ошибках сохраняем введенные поля if ($do == 'addarticle') { cmsUser::sessionPut('article', $article); } cmsCore::redirectBack(); } $article['description'] = $inDB->escape_string($article['description']); $article['content'] = $inDB->escape_string($article['content']); $article = cmsCore::callEvent('AFTER_EDIT_ARTICLE', $article); // добавление статьи if ($do == 'addarticle') { $article_id = $model->addArticle($article); } // загрузка фото $file = 'article' . (@$article_id ? $article_id : $item['id']) . '.jpg'; if (cmsCore::request('delete_image', 'int', 0)) { @unlink(PATH . "/images/photos/small/{$file}"); @unlink(PATH . "/images/photos/medium/{$file}"); } // Загружаем класс загрузки фото cmsCore::loadClass('upload_photo'); $inUploadPhoto = cmsUploadPhoto::getInstance(); // Выставляем конфигурационные параметры $inUploadPhoto->upload_dir = PATH . '/images/photos/'; $inUploadPhoto->small_size_w = $model->config['img_small_w']; $inUploadPhoto->medium_size_w = $model->config['img_big_w']; $inUploadPhoto->thumbsqr = $model->config['img_sqr']; $inUploadPhoto->is_watermark = $model->config['watermark']; $inUploadPhoto->input_name = 'picture'; $inUploadPhoto->filename = $file; // Процесс загрузки фото $inUploadPhoto->uploadPhoto(); // операции после добавления/редактирования статьи // добавление статьи if ($do == 'addarticle') { // Получаем добавленную статью $article = $model->getArticle($article_id); if (!$article['published']) { cmsCore::addSessionMessage($_LANG['ARTICLE_PREMODER_TEXT'], 'info'); // отсылаем уведомление администраторам $link = '<a href="' . $model->getArticleURL(null, $article['seolink']) . '">' . $article['title'] . '</a>'; $message = str_replace('%user%', cmsUser::getProfileLink($inUser->login, $inUser->nickname), $_LANG['MSG_ARTICLE_SUBMIT']); $message = str_replace('%link%', $link, $message); cmsUser::sendMessageToGroup(USER_UPDATER, cmsUser::getAdminGroups(), $message); } else { //регистрируем событие cmsActions::log('add_article', array('object' => $article['title'], 'object_url' => $model->getArticleURL(null, $article['seolink']), 'object_id' => $article['id'], 'target' => $article['cat_title'], 'target_url' => $model->getCategoryURL(null, $article['catseolink']), 'target_id' => $article['category_id'], 'description' => '')); if (IS_BILLING) { $category_cost = $article['cost'] === '' ? false : (int) $article['cost']; cmsBilling::process('content', 'add_content', $category_cost); } cmsUser::checkAwards($inUser->id); } cmsCore::addSessionMessage($_LANG['ARTICLE_SAVE'], 'info'); cmsCore::redirect('/my.html'); } // Редактирование статьи if ($do == 'editarticle') { $model->updateArticle($item['id'], $article, true); cmsActions::updateLog('add_article', array('object' => $article['title']), $item['id']); if (!$article['published']) { $link = '<a href="' . $model->getArticleURL(null, $item['seolink']) . '">' . $article['title'] . '</a>'; $message = str_replace('%user%', cmsUser::getProfileLink($inUser->login, $inUser->nickname), $_LANG['MSG_ARTICLE_EDITED']); $message = str_replace('%link%', $link, $message); cmsUser::sendMessageToGroup(USER_UPDATER, cmsUser::getAdminGroups(), $message); } $mess = $article['published'] ? $_LANG['ARTICLE_SAVE'] : $_LANG['ARTICLE_SAVE'] . ' ' . $_LANG['ARTICLE_PREMODER_TEXT']; cmsCore::addSessionMessage($mess, 'info'); cmsCore::redirect($model->getArticleURL(null, $item['seolink'])); } } } ///////////////////////// PUBLISH ARTICLE ///////////////////////////////////////////////////////////////////////////// if ($do == 'publisharticle') { if (!$inUser->id) { cmsCore::error404(); } $article = $model->getArticle($id); if (!$article) { cmsCore::error404(); } // Редактор с правами на добавление без модерации или администраторы могут публиковать if (!($article['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd')) && !$inUser->is_admin) { cmsCore::error404(); } $inDB->setFlag('cms_content', $article['id'], 'published', 1); cmsCore::callEvent('ADD_ARTICLE_DONE', $article); if (IS_BILLING) { $author = $inDB->get_fields('cms_users', "id='{$article['user_id']}'", '*'); $category_cost = $article['cost'] === '' ? false : (int) $article['cost']; cmsBilling::process('content', 'add_content', $category_cost, $author); } //регистрируем событие cmsActions::log('add_article', array('object' => $article['title'], 'user_id' => $article['user_id'], 'object_url' => $model->getArticleURL(null, $article['seolink']), 'object_id' => $article['id'], 'target' => $article['cat_title'], 'target_url' => $model->getCategoryURL(null, $article['catseolink']), 'target_id' => $article['cat_id'], 'description' => '')); $link = '<a href="' . $model->getArticleURL(null, $article['seolink']) . '">' . $article['title'] . '</a>'; $message = str_replace('%link%', $link, $_LANG['MSG_ARTICLE_ACCEPTED']); cmsUser::sendMessage(USER_UPDATER, $article['user_id'], $message); cmsUser::checkAwards($article['user_id']); cmsCore::redirectBack(); } ///////////////////////////////////// DELETE ARTICLE /////////////////////////////////////////////////////////////////////////////////// if ($do == 'deletearticle') { if (!$inUser->id) { cmsCore::error404(); } $article = $model->getArticle($id); if (!$article) { cmsCore::error404(); } // права доступа $is_author = cmsUser::isUserCan('content/delete') && $article['user_id'] == $inUser->id; $is_editor = $article['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd'); if (!$is_author && !$is_editor && !$inUser->is_admin) { cmsCore::error404(); } if (!cmsCore::inRequest('goadd')) { $inPage->setTitle($_LANG['ARTICLE_REMOVAL']); $inPage->addPathway($_LANG['ARTICLE_REMOVAL']); $confirm['title'] = $_LANG['ARTICLE_REMOVAL']; $confirm['text'] = $_LANG['ARTICLE_REMOVAL_TEXT'] . ' <a href="' . $model->getArticleURL(null, $article['seolink']) . '">' . $article['title'] . '</a>?'; $confirm['action'] = $_SERVER['REQUEST_URI']; $confirm['yes_button'] = array(); $confirm['yes_button']['type'] = 'submit'; $confirm['yes_button']['name'] = 'goadd'; cmsPage::initTemplate('components', 'action_confirm')->assign('confirm', $confirm)->display('action_confirm.tpl'); } else { $model->deleteArticle($article['id']); if ($_SERVER['HTTP_REFERER'] == '/my.html') { cmsCore::addSessionMessage($_LANG['ARTICLE_DELETED'], 'info'); cmsCore::redirectBack(); } else { // если удалили как администратор или редактор и мы не авторы статьи, отсылаем сообщение автору if (($is_editor || $inUser->is_admin) && $article['user_id'] != $inUser->id) { $link = '<a href="' . $model->getArticleURL(null, $article['seolink']) . '">' . $article['title'] . '</a>'; $message = str_replace('%link%', $link, $article['published'] ? $_LANG['MSG_ARTICLE_DELETED'] : $_LANG['MSG_ARTICLE_REJECTED']); cmsUser::sendMessage(USER_UPDATER, $article['user_id'], $message); } else { cmsCore::addSessionMessage($_LANG['ARTICLE_DELETED'], 'info'); } cmsCore::redirect($model->getCategoryURL(null, $article['catseolink'])); } } } ///////////////////////////////////// MY ARTICLES /////////////////////////////////////////////////////////////////////////////////// if ($do == 'my') { if (!cmsUser::isUserCan('content/add')) { cmsCore::error404(); } $inPage->setTitle($_LANG['MY_ARTICLES']); $inPage->addPathway($_LANG['USERS'], '/' . str_replace('/', '', cmsUser::PROFILE_LINK_PREFIX)); $inPage->addPathway($inUser->nickname, cmsUser::getProfileURL($inUser->login)); $inPage->addPathway($_LANG['MY_ARTICLES']); $perpage = 15; // Условия $model->whereUserIs($inUser->id); // Общее количество статей $total = $model->getArticlesCount(false); // Сортировка и разбивка на страницы $inDB->orderBy('con.pubdate', 'DESC'); $inDB->limitPage($page, $perpage); // Получаем статьи $content_list = $total ? $model->getArticlesList(false) : array(); $inDB->resetConditions(); cmsPage::initTemplate('components', 'com_content_my')->assign('articles', $content_list)->assign('total', $total)->assign('user_can_delete', cmsUser::isUserCan('content/delete'))->assign('pagebar', cmsPage::getPagebar($total, $page, $perpage, '/content/my%page%.html'))->display('com_content_my.tpl'); } ///////////////////////////////////// BEST ARTICLES /////////////////////////////////////////////////////////////////////////////////// if ($do == 'best') { $inPage->setTitle($_LANG['ARTICLES_RATING']); $inPage->addPathway($_LANG['ARTICLES_RATING']); // Только статьи, за которые можно голосовать $inDB->where("con.canrate = 1"); // Сортировка и разбивка на страницы $inDB->orderBy('con.rating', 'DESC'); $inDB->limitPage(1, 30); // Получаем статьи $content_list = $model->getArticlesList(); cmsPage::initTemplate('components', 'com_content_rating')->assign('articles', $content_list)->display('com_content_rating.tpl'); } }
/** * contents * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Contents * @author Henry Ruhs */ function contents() { $output = Redaxscript\Hook::trigger(__FUNCTION__ . '_start'); $aliasValidator = new Redaxscript\Validator\Alias(); /* query articles */ $articles = Redaxscript\Db::forTablePrefix('articles')->where('status', 1); $articles->whereIn('language', array(Redaxscript\Registry::get('language'), '')); /* handle sibling */ if (LAST_ID) { $sibling = Redaxscript\Db::forTablePrefix(LAST_TABLE)->where('id', LAST_ID)->findOne()->sibling; /* query sibling collection */ $sibling_array = Redaxscript\Db::forTablePrefix(LAST_TABLE)->whereIn('sibling', array(LAST_ID, $sibling > 0 ? $sibling : null))->where('language', Redaxscript\Registry::get('language'))->select('id')->findArrayFlat(); /* process sibling array */ foreach ($sibling_array as $value) { $id_array[] = $value; } } /* handle article */ if (ARTICLE) { $id_array[] = $sibling; $id_array[] = ARTICLE; $articles->whereIn('id', $id_array); } else { if (CATEGORY) { if (!$id_array) { if ($sibling > 0) { $id_array[] = $sibling; } else { $id_array[] = CATEGORY; } } $articles->whereIn('category', $id_array)->orderGlobal('rank'); /* handle sub parameter */ $result = $articles->findArray(); if ($result) { $num_rows = count($result); $sub_maximum = ceil($num_rows / s('limit')); $sub_active = LAST_SUB_PARAMETER; /* sub parameter */ if (LAST_SUB_PARAMETER > $sub_maximum || LAST_SUB_PARAMETER == '') { $sub_active = 1; } else { $offset_string = ($sub_active - 1) * s('limit') . ', '; } } $articles->limit($offset_string . s('limit')); } else { $articles->limit(0); } } /* query result */ $result = $articles->findArray(); $num_rows_active = count($result); /* handle error */ if (CATEGORY && $num_rows == '') { $error = l('article_no'); } else { if ($result == '' || $num_rows_active == '' || CONTENT_ERROR) { $error = l('content_not_found'); } else { if ($result) { $accessValidator = new Redaxscript\Validator\Access(); foreach ($result as $r) { $access = $r['access']; /* access granted */ if ($accessValidator->validate($access, MY_GROUPS) === Redaxscript\Validator\ValidatorInterface::PASSED) { if ($r) { foreach ($r as $key => $value) { ${$key} = stripslashes($value); } } if (LAST_TABLE == 'categories' || FULL_ROUTE == '' || $aliasValidator->validate(FIRST_PARAMETER, Redaxscript\Validator\Alias::MODE_DEFAULT) == Redaxscript\Validator\ValidatorInterface::PASSED) { $route = build_route('articles', $id); } /* parser object */ $parser = new Redaxscript\Parser(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); $parser->init($text, array('className' => array('readmore' => 'link_read_more', 'codequote' => 'js_code_quote box_code'), 'route' => $route)); /* collect headline output */ $output .= Redaxscript\Hook::trigger('article_start', $r); if ($headline == 1) { $output .= '<h2 class="title_content" id="article-' . $alias . '">'; if (LAST_TABLE == 'categories' || FULL_ROUTE == '' || $aliasValidator->validate(FIRST_PARAMETER, Redaxscript\Validator\Alias::MODE_DEFAULT) == Redaxscript\Validator\ValidatorInterface::PASSED) { $output .= anchor_element('internal', '', '', $title, $route); } else { $output .= $title; } $output .= '</h2>'; } /* collect box output */ $output .= '<div class="box_content">' . $parser->getOutput(); $output .= '</div>' . Redaxscript\Hook::trigger('article_end', $r); /* prepend admin dock */ if (LOGGED_IN == TOKEN && FIRST_PARAMETER != 'logout') { $output .= admin_dock('articles', $id); } /* infoline */ if ($infoline == 1) { $output .= infoline('articles', $id, $author, $date); } } else { $counter++; } } /* handle access */ if (LAST_TABLE == 'categories') { if ($num_rows_active == $counter) { $error = l('access_no'); } } else { if (LAST_TABLE == 'articles' && $counter == 1) { $error = l('access_no'); } } } } } /* handle error */ if ($error) { notification(l('something_wrong'), $error); } else { $output .= Redaxscript\Hook::trigger(__FUNCTION__ . '_end'); echo $output; /* call comments as needed */ if (ARTICLE) { /* comments replace */ if ($comments == 1 && (COMMENTS_REPLACE == 1 || Redaxscript\Registry::get('commentsReplace'))) { Redaxscript\Hook::trigger('comments_replace'); } else { if ($comments > 0) { $route = build_route('articles', ARTICLE); comments(ARTICLE, $route); /* comment form */ if ($comments == 1 || COMMENTS_NEW == 1 && $comments == 3) { comment_form(ARTICLE, $language); } } } } } /* call pagination as needed */ if ($sub_maximum > 1 && s('pagination') == 1) { $route = build_route('categories', CATEGORY); pagination($sub_active, $sub_maximum, $route); } }
#Page title $view->title = $news['name']; #Emoticons if ($news['opt'] & 2) { $news['txt'] = emots($news['txt']); if ($full) { $full = emots($full); } } #Line breaks if ($news['opt'] & 1) { $news['txt'] = nl2br($news['txt']); if ($full) { $full = nl2br($full); } } #Date, author $news['date'] = genDate($news['date'], true); $news['wrote'] = autor($news['author']); #Assign to template $view->add('news', array('news' => &$news, 'full' => &$full, 'path' => catPath($news['cat']), 'edit' => admit($news['cat'], 'CAT') ? url('edit/5/' . $id, 'ref') : false, 'root' => isset($cfg['allCat']) ? $lang['cats'] : $lang['news'], 'cats' => url(isset($cfg['allCat']) ? 'cats' : 'cats/news'))); #Tags if (isset($cfg['tags'])) { include './lib/tags.php'; tags($id, 5); } #Comments if (isset($cfg['ncomm']) && $news['catOpt'] & 2) { require './lib/comm.php'; comments($id, 5); }
function ShowrvwLoop($atts) { extract(shortcode_atts(array( "categories" => null, "class" => "loop", "width" => null, "rows" => null, "columns" => 1, "num_posts" => get_option('posts_per_page'), "pagination" => "yes", "offset" => 0, "content_excerpt" => "excerpt", "num_words" => null ), $atts)); if ((!$width) && ($columns)) { $width = (100/$columns) . "%"; } else { $width = "100%"; $columns = 1; } if ((!$pagination == "yes") && ($rows)) { $num_posts = $rows * $columns; } if (!$rows) { $rows = 9999; } $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $query_args = array ( 'posts_per_page' => $num_posts, 'cat' => $categories, 'offset' => $offset, 'paged' => $paged ); global $wp_query; $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query(); $wp_query->query($query_args); $rt = 0; $return = '<div class="rvw_loop ' . $class . '">'. PHP_EOL; if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); global $post; if ($ct && $ct%$columns==0) { $return .= '<div class="clearcol"></div>'. PHP_EOL; $rt++; } if ($rt >= $rows) { break; } if ($ct >= $num_posts) { break; } $return .= '<div class="col" style="width: ' . $width . ';">'. PHP_EOL; if ( has_post_thumbnail() ) { $return .= ' <a href="' . get_permalink() . '" rel="bookmark">' . get_the_post_thumbnail($post->ID, $class) . '</a>' . PHP_EOL; } $return .= ' <div class="title"><h2><a href="' . get_permalink() . '" rel="bookmark">' . get_the_title() . '</a></h2></div>' . PHP_EOL; $return .= ' <div class="date"><span class="label">Date: </span>' . get_the_time(get_option('date_format' )) . '</div>' . PHP_EOL; $return .= ' <div class="author"><span class="label">By: </span>' . get_the_author_link() . '</div>' . PHP_EOL; $return .= ' <div class="comments"><span class="label">Comments: </span>' . comments() . '</div>' . PHP_EOL; if ($content_excerpt == "content") { $return .= ' <div class="content">' . content($num_words) . '</div>'. PHP_EOL; } else { $return .= ' <div class="content">' . excerpt($num_words) . '</div>'. PHP_EOL; } $return .= ' <div class="categories"><span class="label">Categories: </span>' . get_the_term_list( $post->ID, 'category', '', ', ', ' ' ) . '</div>' . PHP_EOL; $return .= ' <div class="tags"><span class="label">Tags: </span>' . get_the_term_list( $post->ID, 'post_tag', '', ', ', ' ' ) . '</div>' . PHP_EOL; $return .= '</div> <!-- end class col -->'. PHP_EOL; $ct++; endwhile; if ($pagination == "yes") : $return .= '<!-- Previous/Next page navigation -->'. PHP_EOL; $return .= '<div class="paging" style="width: ' . $width . ';">'. PHP_EOL; $return .= '<div class="alignleft">' . get_previous_posts_link('« Previous Page') . '</div>'. PHP_EOL; $return .= '<div class="alignright">' . get_next_posts_link('Next Page »') . '</div>'. PHP_EOL; $return .= '</div>'. PHP_EOL; endif; $wp_query = null; $wp_query = $temp; else : // do not delete $return .= '<div class="post">'. PHP_EOL; $return .= ' no items found'. PHP_EOL; $return .= '</div>'. PHP_EOL; endif; // do not delete $return .= '</div> <!-- end class rvw_loop -->'. PHP_EOL; return $return; }
$view->info(sprintf($lang['NVAL'], $img['name']), null, 'warning'); } #Dimensions $size = strpos($img['size'], '|') ? explode('|', $img['size']) : null; #Data, autor $img['date'] = genDate($img['date'], true); $img['author'] = autor($img['author']); #Ocena if (isset($cfg['irate']) and $img['opt'] & 4) { $view->css(SKIN_DIR . 'rate.css'); $rates = 'vote.php?type=3&id=' . $id; } else { $rates = 0; } #Tag title and meta description - clean temporary $view->title = $img['name']; $view->desc = $img['dsc'] ? clean(substr($img['dsc'], 0, 150)) : $cfg['metaDesc']; #Description $img['dsc'] = nl2br($img['dsc']); #Template $view->add('img', array('img' => &$img, 'size' => &$size, 'rates' => $rates, 'image' => $img['type'] === '1' ? true : false, 'flash' => $img['type'] === '2' ? true : false, 'audio' => $img['type'] === '3' ? true : false, 'video' => $img['type'] === '4' ? true : false, 'path' => catPath($img['cat']), 'edit' => admit($img['cat'], 'CAT') ? url('edit/3/' . $id, 'ref') : false, 'root' => isset($cfg['allCat']) ? $lang['cats'] : $lang['imgs'], 'cats' => url(isset($cfg['allCat']) ? 'cats' : 'cats/images'), 'lightbox' => isset($cfg['lightbox']))); #Tags if (isset($cfg['tags'])) { include './lib/tags.php'; tags($id, 3); } #Comments if (isset($cfg['icomm']) && $img['opt'] & 2) { require 'lib/comm.php'; comments($id, 3); }
?> <hr> <div class="row"> <div class="large-12 columns"> <h4 class="color_green"> <?php echo $language->line('general_blog_leave_replay'); ?> </h4> </div> </div> <div class="row"> <div class="large-12 columns"> <div class="large-12 columns"><?php echo comments($config['disqus_id']); ?> </div> </div> </div> <?php } ?> </article> </div> <!-- News --> <div class="row">
function comments_update() { extract($_REQUEST); if (!empty($n_comment)) { $sql = "\n\t\tINSERT INTO cubit.recon_comments_ct (comment, supid)\n\t\tVALUES ('" . base64_encode($n_comment) . "', '{$supid}')"; db_exec($sql) or errDie("Unable to update comments."); } if (isset($remove)) { foreach ($remove as $id => $value) { $sql = "DELETE FROM cubit.recon_comments_ct WHERE id='{$id}'"; db_exec($sql) or errDie("Unable to remove comments."); } } return comments(); }
challangeImage($dbh, $array); } if ($type == 'challangeCom') { challangeCom($dbh, $array); } if ($type == 'myChall') { challangeSearch($dbh, $array); } if ($type == 'popChall') { popularChallangeSearch($dbh, $array); } if ($type == 'logSearch') { logSearch($dbh, $array); } if ($type == 'comments') { comments($dbh, $array); } if ($type == 'locationSearch') { location($dbh, $array, "", $data); } if ($type == 'topLocation') { location($dbh, $array, "order by likes desc limit 20", $data); } if ($type == 'recentAddLocation') { location($dbh, $array, "order by id desc limit 20", $data); } if ($type == 'allLocation') { location($dbh, $array, "", ""); } if ($type == 'login') { login($dbh, $array);
function single_last_blog($categoryid) { global $wpdb; $f_content = ''; $args = array('showposts' => 1, 'orderby' => 'date', 'order' => 'DESC', 'cat' => $categoryid, 'author' => all_experts()); $query = new WP_Query($args); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $avtor = get_the_author_meta('ID', $post->post_author); $user = get_userdata($avtor); $posada = get_field('posada', 'user_' . $user->ID); $author_posts_url = get_author_posts_url($user->ID); $f_content .= '<div class="gray-bg">'; $f_content .= '<div class="padding top-blog"> <div class="day">' . get_the_date('j.m.Y') . '</div> <div class="title"><a href="' . get_the_permalink() . '" >' . trim_title_chars(45, '...') . '</a></div> </div> <hr /> <div class="img_wrapper padding"> <img src="' . author_img($user->ID) . '" alt="' . $user->user_firstname . ' ' . $user->user_lastname . '" /> </div> <div class="clearfix"></div> <hr /> <div class="padding"> <div class="blog--fio"> <a href="' . $author_posts_url . '">' . $user->user_firstname . ' ' . $user->user_lastname . '</a> </div>' . $posada . '</div>' . comments($post->ID) . '<a class="blog-more" href="' . get_the_permalink() . '" ><i class="sprite-arrow-right"></i> <span id="ua">Детальніше</span><span id="en">More</span></a></div>'; } } wp_reset_postdata(); $f_content .= '<div class="clearfix"></div>'; return $f_content; }
cmsPage::initTemplate('components', 'com_blog_view_post')-> assign('post', $post)-> assign('blog', $blog)-> assign('cat', $cat)-> assign('is_author', $is_author)-> assign('is_writer', $is_member)-> assign('myblog', ($is_admin || $is_moder))-> assign('is_admin', ($is_admin || $is_moder))-> assign('karma_form', cmsKarmaForm($inBlog->getTarget('rating'), $post['id'], $post['rating'], $is_author))-> assign('navigation', $inBlog->getPostNavigation($post['id'], $blog['id'], $model, $club['id']))-> display(); if ($inCore->isComponentEnable('comments') && $post['comments']) { cmsCore::includeComments(); comments($inBlog->getTarget('comments'), $post['id'], array(), $is_author); } } ///////////////////////// УДАЛЕНИЕ ПОСТА /////////////////////////////////////// if ($bdo == 'delpost'){ if (!cmsUser::checkCsrfToken()) { cmsCore::halt(); } if(!cmsCore::isAjax() || !$inUser->id) { return false; } $post = $inBlog->getPost($post_id); if (!$post){ cmsCore::halt(); } $blog = $inBlog->getBlog($post['blog_id']); if (!$blog) { cmsCore::halt(); }
</td> <td valign="top"> <?php echo $form['field']; ?> </td> </tr> <?php } ?> <?php } ?> </table> <?php } ?> </div> </td> </tr> </table> <div class="bd_links"> <?php if ($user_id) { ?> <?php if ($item['user'] && !$item['user_is_deleted'] && $item['user_id'] != $user_id) { ?> <?php cmsCore::c('page')->addHeadJS('components/users/js/profile.js'); ?> <span class="bd_message"><a class="ajaxlink" title="<?php echo $_LANG['WRITE_MESS_TO_AVTOR']; ?>" href="javascript:void(0)" onclick="users.sendMess('<?php echo $item['user_id']; ?>', 0, this);return false;"><?php echo $_LANG['WRITE_MESS_TO_AVTOR']; ?></a></span> <?php } ?> <?php } ?> <?php if ($item['user_login']) { ?> <span class="bd_author"><a href="/board/by_user_<?php echo $item['user_login']; ?>"><?php echo $_LANG['ALL_AVTOR_ADVS']; ?></a></span> <?php } ?> </div> <?php if ($cfg['comments']) { cmsCore::includeComments(); comments('boarditem', $item['id'], array(), ($item.user_id == $user_id)); }
VALUES (:TYPE,:CID,:name,:access,:author,:UID,:IP,:UA,:date,:text)'); #In case of news if ($type == 5) { $db->exec('UPDATE ' . PRE . 'news SET comm=comm+1 WHERE ID=' . $id); } } else { $q = $db->prepare('UPDATE ' . PRE . 'comms SET name=:name, text=:text WHERE ID=' . $id); } $q->execute($c); $db->commit(); #Set anti-flood $_SESSION['post'] = time() + $cfg['antyFlood']; #If AJAX, send all comments if (JS) { include './lib/comm.php'; comments($id, $type); return 1; } else { $view->message($type && $c['access'] != 1 ? $lang['c6'] : $lang['c7']); } } catch (PDOException $e) { $view->info($lang['c10'] . $e->getMessage()); } } } } else { if ($type) { $c = array('name' => '', 'author' => '', 'text' => ''); } else { $c = $db->query('SELECT * FROM ' . PRE . 'comms WHERE ID=' . $id)->fetch(2); }
function news($theme) { include "modules/getcomments.php"; include "includes/smileyparse.php"; if (isset($_GET["article"])) { $article_id = $_GET["article"]; $query = "SELECT * FROM news WHERE id = '{$article_id}'"; $result = mysql_query($query); $num = mysql_numrows($result); if ($num == 0) { echo '<div class="entry">No such article!</div>'; } else { $id = mysql_result($result, 0, "id"); $title = mysql_result($result, 0, "title"); $title = stripslashes($title); $details = mysql_result($result, 0, "details"); $article = mysql_result($result, 0, "short_article"); $article = parseSmiley($article); $article = stripslashes($article); $extended_article = mysql_result($result, 0, "extended_article"); $extended_article = parseSmiley($extended_article); $extended_article = stripslashes($extended_article); ?> <div class="entry"> <h1><a href="index.php?module=news&article=<?php echo $id; ?> " class="h1"><?php echo $title; ?> </a></h1> <?php echo $article; ?> <br /> <?php if ($extended_article != "") { echo "<br />{$extended_article}"; } ?> <hr> <span class="posttime"><?php echo $details; ?> </span><br /> <?php include "modules/comments.php"; comments($id, $title); ?> </div> <?php } } else { $query = "SELECT * FROM news ORDER BY id DESC LIMIT 5"; $result = mysql_query($query); $num = mysql_numrows($result); if ($num == 0) { echo '<div class="entry">No posts in database</div>'; } else { $i = 0; while ($i < $num) { $id = mysql_result($result, $i, "id"); $title = mysql_result($result, $i, "title"); $details = mysql_result($result, $i, "details"); $article = mysql_result($result, $i, "short_article"); $article = parseSmiley($article); $extended_article = mysql_result($result, $i, "extended_article"); ?> <div class="entry"> <h1><a href="index.php?module=news&article=<?php echo $id; ?> " class="h1"><?php echo $title; ?> </a></h1> <span class="posttime"><?php echo $details; ?> </span><br /> <?php echo $article; ?> <br /> <?php if ($extended_article != "") { ?> <br /><a href="index.php?module=news&article=<?php echo $id; ?> ">Read More >></a> <?php } ?> <hr> <span class="rightalign"><?php getcomments($id); ?> </span><br /> </div> <?php $i++; } } } }
function photos() { $inCore = cmsCore::getInstance(); $inPage = cmsPage::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); cmsCore::loadClass('photo'); $inPhoto = cmsPhoto::getInstance(); global $_LANG; $model = new cms_model_photos(); $pagetitle = $inCore->menuTitle(); $root_album_id = $inDB->getNsRootCatId('cms_photo_albums'); $id = cmsCore::request('id', 'int', $root_album_id); $do = $inCore->do; $page = cmsCore::request('page', 'int', 1); $inPage->addPathway($inCore->getComponentTitle(), '/photos'); // только авторизованные пользуются js if ($inUser->id) { $inPage->addHeadJS('components/photos/js/photos.js'); $inPage->addHeadJsLang(array('NO_PUBLISH', 'EDIT_PHOTO', 'YOU_REALLY_DELETE_PHOTO', 'MOVE_PHOTO')); } $inPage->setDescription($model->config['meta_desc'] ? $model->config['meta_desc'] : $pagetitle); $inPage->setKeywords($model->config['meta_keys'] ? $model->config['meta_keys'] : $pagetitle); /////////////////////////////// Просмотр альбома /////////////////////////////////////////////////////////////////////////////////////////// if ($do == 'view') { $album = $inDB->getNsCategory('cms_photo_albums', $id, null); if (!$album && $inCore->menuId() !== 1) { cmsCore::error404(); } // Неопубликованные альбомы показываем только админам if (!$album['published'] && !$inUser->is_admin) { cmsCore::error404(); } $album = cmsCore::callEvent('GET_PHOTO_ALBUM', $album); // если не корневой альбом if ($album['id'] != $root_album_id) { $path_list = $inDB->getNsCategoryPath('cms_photo_albums', $album['NSLeft'], $album['NSRight'], 'id, title, NSLevel'); if ($path_list) { foreach ($path_list as $pcat) { $inPage->addPathway($pcat['title'], '/photos/' . $pcat['id']); } } $pagetitle = $pagetitle && $inCore->isMenuIdStrict() ? $pagetitle : $album['title'] . ' - ' . $_LANG['PHOTOGALLERY']; $inPage->setTitle($album['pagetitle'] ? $album['pagetitle'] : $pagetitle); } else { $pagetitle = $pagetitle && $inCore->isMenuIdStrict() ? $pagetitle : $_LANG['PHOTOGALLERY']; $inPage->setTitle($pagetitle); $album['title'] = $pagetitle; } //Формируем подкатегории альбома $inDB->orderBy('f.' . $model->config['orderby'], $model->config['orderto']); $subcats = $inPhoto->getAlbums($album['id']); // Сортировка фотографий $orderby = cmsCore::getSearchVar('orderby', $album['orderby']); $orderto = cmsCore::getSearchVar('orderto', $album['orderto']); if (!in_array($orderby, array('title', 'pubdate', 'rating', 'hits'))) { $orderby = $album['orderby']; } if (!in_array($orderto, array('desc', 'asc'))) { $orderto = $album['orderto']; } // Устанавливаем альбом $inPhoto->whereAlbumIs($album['id']); // Общее количество фото по заданным выше условиям $total = $inPhoto->getPhotosCount($inUser->is_admin); //устанавливаем сортировку $inDB->orderBy('f.' . $orderby, $orderto); //устанавливаем номер текущей страницы и кол-во фото на странице $inDB->limitPage($page, $album['perpage']); $photos = $inPhoto->getPhotos($inUser->is_admin, $album['showdate']); if (!$photos && $page > 1) { cmsCore::error404(); } if ($album['id'] != $root_album_id) { // meta description if ($album['meta_desc']) { $meta_desc = $album['meta_desc']; } elseif (mb_strlen(strip_tags($album['description'])) >= 250) { $meta_desc = crop($album['description']); } else { $meta_desc = $album['title']; } $inPage->setDescription($meta_desc); // meta keywords if ($album['meta_keys']) { $meta_keys = $album['meta_keys']; } elseif ($photos) { foreach ($photos as $p) { $k[] = $p['title']; } $meta_keys = implode(', ', $k); } else { $meta_keys = $album['title']; } $inPage->setKeywords($meta_keys); } cmsPage::initTemplate('components', 'com_photos_view')->assign('root_album_id', $root_album_id)->assign('cfg', $model->config)->assign('album', $album)->assign('can_add_photo', $album['public'] && $inUser->id || $inUser->is_admin)->assign('subcats', $subcats)->assign('photos', $photos)->assign('pagebar', cmsPage::getPagebar($total, $page, $album['perpage'], '/photos/' . $album['id'] . '-%page%'))->assign('total', $total)->assign('orderby', $orderby)->assign('orderto', $orderto)->display('com_photos_view.tpl'); // если есть фотограйии в альбоме и включены комментарии в альбоме, то показываем их if ($album['is_comments'] && $photos && $inCore->isComponentInstalled('comments')) { cmsCore::includeComments(); comments('palbum', $album['id']); } } /////////////////////////////// VIEW PHOTO /////////////////////////////////////////////////////////////////////////////////////////// if ($do == 'viewphoto') { // получаем фото $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::error404(); } // Если фото клуба редиректим на новый алрес if (mb_strstr($photo['NSDiffer'], 'club')) { cmsCore::redirect('/clubs/photo' . $photo['id'] . '.html', '301'); } $is_author = $photo['user_id'] == $inUser->id && $inUser->id; // неопубликованное фото видно админам и автору if (!$photo['published'] && !$inUser->is_admin && !$is_author) { cmsCore::error404(); } $path_list = $inDB->getNsCategoryPath('cms_photo_albums', $photo['NSLeft'], $photo['NSRight'], 'id, title, NSLevel'); if ($path_list) { foreach ($path_list as $pcat) { $inPage->addPathway($pcat['title'], '/photos/' . $pcat['id']); } } $inPage->addPathway($photo['title']); $inPage->setTitle($photo['pagetitle'] ? $photo['pagetitle'] : $photo['title']); $inPage->setKeywords($photo['meta_keys'] ? $photo['meta_keys'] : $photo['title']); if (!$photo['meta_desc']) { if ($photo['description']) { $inPage->setDescription(crop($photo['description'])); } else { $inPage->setDescription($photo['title']); } } else { $inPage->setDescription($photo['meta_desc']); } // Обновляем количество просмотров фотографии if (!$is_author) { $inDB->setFlag('cms_photo_files', $photo['id'], 'hits', $photo['hits'] + 1); } //навигация if ($photo['album_nav']) { $nextid = $inDB->get_fields('cms_photo_files', 'id<' . $photo['id'] . ' AND album_id = ' . $photo['album_id'] . ' AND published=1', 'id, file', 'id DESC'); $previd = $inDB->get_fields('cms_photo_files', 'id>' . $photo['id'] . ' AND album_id = ' . $photo['album_id'] . ' AND published=1', 'id, file', 'id ASC'); } else { $previd = false; $nextid = false; } $photo['karma_buttons'] = cmsKarmaButtons('photo', $photo['id'], $photo['rating'], $is_author); $photo['genderlink'] = cmsUser::getGenderLink($photo['user_id'], $photo['nickname'], $photo['gender'], $photo['login']); cmsPage::initTemplate('components', 'com_photos_view_photo')->assign('photo', $photo)->assign('bbcode', '[IMG]' . HOST . '/images/photos/medium/' . $photo['file'] . '[/IMG]')->assign('previd', $previd)->assign('nextid', $nextid)->assign('cfg', $model->config)->assign('is_author', $is_author)->assign('is_admin', $inUser->is_admin)->assign('tagbar', $photo['a_tags'] ? cmsTagBar('photo', $photo['id']) : '')->display('com_photos_view_photo.tpl'); //выводим комментарии, если они разрешены и фото опубликовано if ($photo['comments'] && $inCore->isComponentInstalled('comments')) { cmsCore::includeComments(); comments('photo', $photo['id'], array(), $is_author); } } /////////////////////////////// PHOTO UPLOAD //////////////////////////////////////////////////////////////////////////////// if ($do == 'addphoto') { // Неавторизованных просим авторизоваться if (!$inUser->id) { cmsUser::goToLogin(); } $do_photo = cmsCore::request('do_photo', 'str', 'addphoto'); // получаем альбом $album = $inDB->getNsCategory('cms_photo_albums', $id); if (!$album) { cmsCore::error404(); } if (!$album['published'] && !$inUser->is_admin) { cmsCore::error404(); } $album = cmsCore::callEvent('GET_PHOTO_ALBUM', $album); // права доступа // загружаем только в разрешенные альбомы if (!$album['public'] && !$inUser->is_admin) { cmsCore::error404(); } // Смотрим ограничения загрузки в сутки $today_uploaded = $album['uplimit'] ? $model->loadedByUser24h($inUser->id, $album['id']) : 0; if (!$inUser->is_admin && $album['uplimit'] && $today_uploaded >= $album['uplimit']) { cmsCore::addSessionMessage('<strong>' . $_LANG['MAX_UPLOAD_IN_DAY'] . '</strong> ' . $_LANG['CAN_UPLOAD_TOMORROW'], 'error'); cmsCore::redirectBack(); } // глубиномер $path_list = $inDB->getNsCategoryPath('cms_photo_albums', $album['NSLeft'], $album['NSRight'], 'id, title, NSLevel'); if ($path_list) { foreach ($path_list as $pcat) { $inPage->addPathway($pcat['title'], '/photos/' . $pcat['id']); } } include 'components/photos/add_photo.php'; } /////////////////////////////// PHOTO EDIT /////////////////////////////////////////////////////////////////////////////////////////// if ($do == 'editphoto') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } // получаем фото $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::halt(); } if (mb_strstr($photo['NSDiffer'], 'club')) { cmsCore::halt(); } $is_author = $photo['user_id'] == $inUser->id && $inUser->id; if (!$inUser->is_admin && !$is_author) { cmsCore::halt(); } if (cmsCore::inRequest('edit_photo')) { $mod['title'] = cmsCore::request('title', 'str', ''); $mod['title'] = $mod['title'] ? $mod['title'] : $photo['title']; $mod['description'] = cmsCore::request('description', 'str', ''); $mod['tags'] = cmsCore::request('tags', 'str', ''); $mod['comments'] = $inUser->is_admin ? cmsCore::request('comments', 'int') : $photo['comments']; if ($model->config['seo_user_access'] || $inUser->is_admin) { $mod['pagetitle'] = cmsCore::request('pagetitle', 'str', ''); $mod['meta_keys'] = cmsCore::request('meta_keys', 'str', ''); $mod['meta_desc'] = cmsCore::request('meta_desc', 'str', ''); } $file = $model->initUploadClass($inDB->getNsCategory('cms_photo_albums', $photo['album_id']))->uploadPhoto($photo['file']); $mod['file'] = $file['filename'] ? $file['filename'] : $photo['file']; $inPhoto->updatePhoto($mod, $photo['id']); $description = '<a href="/photos/photo' . $photo['id'] . '.html" class="act_photo"><img src="/images/photos/small/' . $mod['file'] . '" alt="' . htmlspecialchars(stripslashes($mod['title'])) . '" /></a>'; cmsActions::updateLog('add_photo', array('object' => $mod['title'], 'description' => $description), $photo['id']); cmsCore::addSessionMessage($_LANG['PHOTO_SAVED'], 'success'); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/photos/photo' . $photo['id'] . '.html')); } else { $photo['tags'] = cmsTagLine('photo', $photo['id'], false); cmsPage::initTemplate('components', 'com_photos_edit')->assign('photo', $photo)->assign('form_action', '/photos/editphoto' . $photo['id'] . '.html')->assign('no_tags', false)->assign('is_admin', $inUser->is_admin)->assign('cfg', $model->config)->display('com_photos_edit.tpl'); cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean())); } } /////////////////////////////// PHOTO MOVE ///////////////////////////////////////////////////////////////////////////////////////// if ($do == 'movephoto') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::halt(); } if (mb_strstr($photo['NSDiffer'], 'club')) { cmsCore::halt(); } if (!$inUser->is_admin) { cmsCore::halt(); } if (!cmsCore::inRequest('move_photo')) { cmsPage::initTemplate('components', 'com_photos_move')->assign('form_action', '/photos/movephoto' . $photo['id'] . '.html')->assign('html', $inPhoto->getAlbumsOption('', $photo['album_id']))->display('com_photos_move.tpl'); cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean())); } else { $album = cmsCore::callEvent('GET_PHOTO_ALBUM', $inDB->getNsCategory('cms_photo_albums', cmsCore::request('album_id', 'int'))); if (!$album) { cmsCore::halt(); } if (!$album['public'] && !$inUser->is_admin) { cmsCore::error404(); } // Смотрим ограничения загрузки в сутки $today_uploaded = $album['uplimit'] ? $model->loadedByUser24h($inUser->id, $album['id']) : 0; if (!$inUser->is_admin && $album['uplimit'] && $today_uploaded >= $album['uplimit']) { cmsCore::jsonOutput(array('error' => true, 'text' => '<strong>' . $_LANG['MAX_UPLOAD_IN_DAY'] . '</strong> ' . $_LANG['CAN_UPLOAD_TOMORROW'])); } $inDB->query("UPDATE cms_photo_files SET album_id = '{$album['id']}' WHERE id = '{$photo['id']}'"); cmsActions::updateLog('add_photo', array('target' => $album['title'], 'target_url' => '/photos/' . $album['id'], 'target_id' => $album['id']), $photo['id']); cmsCore::addSessionMessage($_LANG['PHOTO_MOVED'], 'info'); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/photos/' . $album['id'])); } } /////////////////////////////// PHOTO DELETE ///////////////////////////////////////////////////////////////////////////////////////// if ($do == 'delphoto') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } if (!cmsUser::checkCsrfToken()) { cmsCore::halt(); } $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::halt(); } if (mb_strstr($photo['NSDiffer'], 'club')) { cmsCore::halt(); } $is_author = $photo['user_id'] == $inUser->id && $inUser->id; if (!$inUser->is_admin && !$is_author) { cmsCore::halt(); } $inPhoto->deletePhoto($photo, $model->initUploadClass($inDB->getNsCategory('cms_photo_albums', $photo['album_id']))); cmsCore::addSessionMessage($_LANG['PHOTO_DELETED'], 'success'); cmsUser::clearCsrfToken(); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/photos/' . $photo['album_id'])); } /////////////////////////////// PHOTO PUBLISH ///////////////////////////////////////////////////////////////////////////////////////// if ($do == 'publish_photo') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::halt(); } if (!$inUser->is_admin) { cmsCore::halt(); } $inPhoto->publishPhoto($photo['id']); cmsCore::callEvent('ADD_PHOTO_DONE', $photo); $description = '<a href="/photos/photo' . $photo['id'] . '.html" class="act_photo"><img src="/images/photos/small/' . $photo['file'] . '" alt="' . htmlspecialchars(stripslashes($photo['title'])) . '" /></a>'; cmsActions::log('add_photo', array('object' => $photo['title'], 'object_url' => '/photos/photo' . $photo['id'] . '.html', 'object_id' => $photo['id'], 'user_id' => $photo['user_id'], 'target' => $photo['cat_title'], 'target_id' => $photo['album_id'], 'target_url' => '/photos/' . $photo['album_id'], 'description' => $description)); cmsCore::halt('ok'); } /////////////////////////////// VIEW LATEST/BEST PHOTOS ////////////////////////////////////////////////////////////////////////////// if (in_array($do, array('latest', 'best'))) { if ($do == 'latest') { $inDB->orderBy('f.pubdate', 'DESC'); $pagetitle = $pagetitle && $inCore->isMenuIdStrict() ? $pagetitle : $_LANG['NEW_PHOTO_IN_GALLERY']; } else { $inDB->orderBy('f.rating', 'DESC'); $pagetitle = $pagetitle && $inCore->isMenuIdStrict() ? $pagetitle : $_LANG['BEST_PHOTOS']; } $inDB->limit($model->config['best_latest_perpage']); // выбираем категории фото $inDB->addJoin("INNER JOIN cms_photo_albums a ON a.id = f.album_id AND a.published = 1 AND a.NSDiffer = ''"); $inDB->addSelect('a.title as cat_title'); $photos = $inPhoto->getPhotos(false, 'with_comments'); if (!$photos) { cmsCore::error404(); } $inPage->addPathway($pagetitle); $inPage->setTitle($pagetitle); cmsPage::initTemplate('components', 'com_photos_bl')->assign('maxcols', $model->config['best_latest_maxcols'])->assign('pagetitle', $pagetitle)->assign('photos', $photos)->display('com_photos_bl.tpl'); } /////////////////////////////// /////////////////////////////// //////////////// }
$inPage->addPathway($club['title'], '/clubs/' . $club['id']); $inPage->addPathway($blog['title'], $model->getBlogURL($club['id'])); $inPage->setTitle($post['title']); $inPage->addPathway($post['title']); $inPage->setDescription($post['title']); if ($post['cat_id']) { $cat = $inBlog->getBlogCategory($post['cat_id']); } $post['tags'] = cmsTagBar($inBlog->getTarget('tags'), $post['id']); $is_author = $inUser->id && $inUser->id == $post['user_id']; // меняем сеолинк $blog['seolink'] = $club['id'] . '_blog'; cmsPage::initTemplate('components', 'com_blog_view_post')->assign('post', $post)->assign('blog', $blog)->assign('cat', $cat)->assign('is_author', $is_author)->assign('is_writer', $is_member)->assign('myblog', $is_admin || $is_moder)->assign('is_admin', $is_admin || $is_moder)->assign('karma_form', cmsKarmaForm($inBlog->getTarget('rating'), $post['id'], $post['rating'], $is_author))->assign('navigation', $inBlog->getPostNavigation($post['id'], $blog['id'], $model, $club['id']))->display('com_blog_view_post.tpl'); if ($inCore->isComponentInstalled('comments') && $post['comments']) { cmsCore::includeComments(); comments($inBlog->getTarget('comments'), $post['id']); } } ///////////////////////// УДАЛЕНИЕ ПОСТА ///////////////////////////////////////////////////////////////////////////// if ($bdo == 'delpost') { if (!cmsUser::checkCsrfToken()) { cmsCore::halt(); } if (!cmsCore::isAjax() || !$inUser->id) { return false; } $post = $inBlog->getPost($post_id); if (!$post) { cmsCore::halt(); } $blog = $inBlog->getBlog($post['blog_id']);
$photo['pubdate'] = cmsCore::dateFormat($photo['pubdate'], true, false, false); $photo['genderlink'] = cmsUser::getGenderLink($usr['id'], $usr['nickname'], $photo['gender'], $usr['login']); $photo['filesize'] = round(filesize(PATH . '/images/users/photos/medium/' . $photo['imageurl']) / 1024, 2); //ссылки на предыдущую и следующую фотографии $previd = $inDB->get_fields('cms_user_photos', "id>'{$photo['id']}' AND user_id = '{$usr['id']}' AND album_id='{$photo['album_id']}'", 'id, title, pubdate', 'id ASC'); $nextid = $inDB->get_fields('cms_user_photos', "id<'{$photo['id']}' AND user_id = '{$usr['id']}' AND album_id='{$photo['album_id']}'", 'id, title, pubdate', 'id DESC'); // Проверяем права доступа $is_allow = cmsUser::checkUserContentAccess($photo['allow_who'], $id); // Если видим фото, обновляем просмотры if ($is_allow) { $inDB->query("UPDATE cms_user_photos SET hits = hits + 1 WHERE id = " . $photo['id']); } cmsPage::initTemplate('components', 'com_users_photos_view')->assign('photo', $photo)->assign('bbcode', '[IMG]' . HOST . '/images/users/photos/medium/' . $photo['imageurl'] . '[/IMG]')->assign('previd', $previd)->assign('nextid', $nextid)->assign('usr', $usr)->assign('myprofile', $myprofile)->assign('is_admin', cmsUser::userIsAdmin($inUser->id))->assign('is_allow', $is_allow)->assign('tagbar', $is_allow ? cmsTagBar('userphoto', $photo['id']) : '')->display('com_users_photos_view.tpl'); if ($inCore->isComponentInstalled('comments') && $is_allow) { cmsCore::includeComments(); comments('userphoto', $photo['id']); } } //============================================================================// //============================ Один фотоальбом ===============================// //============================================================================// if ($pdo == 'viewalbum') { if (!$inUser->id && !$model->config['sw_guest']) { cmsUser::goToLogin(); } $usr = cmsUser::getShortUserData($login); if (!$usr) { cmsCore::error404(); } $album_type = cmsCore::request('album_type', 'str', 'private'); $album_id = cmsCore::request('album_id', 'int', '0');
/** * Добавление комментария. * * @param integer id предложения * @param string комментарий * @param integer id комментария на который дается ответ или 0, если комментарий первого уровня вложенности * @param integer уровень вложенности комментария * * @return xajaxResponse */ function CreateComment($oid, $comment, $reply, $level) { global $contest, $stop_words; session_start(); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; $objResponse = new xajaxResponse(); if (!trim($comment)) { $objResponse->alert('Комментарий не может быть пустым'); return $objResponse; } if (!($uid = $_SESSION['uid'])) { $objResponse->call('comment.reset'); $objResponse->alert('Сначала вам необходимо авторизоваться'); return $objResponse; } if (!($offer = contest::GetOfferRow($oid))) { $objResponse->call('comment.reset'); $objResponse->alert('Несуществующее предложение'); return $objResponse; } $contest = new contest($offer['project_id'], $uid, is_emp(), FALSE, hasPermissions('projects')); // если пользователь не про или не верифицирован, то есть смысл проверить, может быть конкурс только для про или только для верифицированных $prj = new projects(); $project = $prj->GetPrjCust($offer['project_id']); if ((!is_pro() || !is_verify()) && $project['user_id'] != get_uid() && !hasPermissions('projects')) { if ($project['pro_only'] == 't' && !is_pro()) { $objResponse->call('comment.reset'); $objResponse->alert('Данная функция доступна только пользователям с аккаунтом PRO.'); return $objResponse; } elseif ($project['verify_only'] == 't' && !is_verify()) { $objResponse->call('comment.reset'); $objResponse->alert('Данная функция доступна только верифицированным пользователям.'); return $objResponse; } } $offer = $contest->GetOffer($oid); $comment = change_q_x(antispam(substr(rtrim(ltrim($comment, "\r\n")), 0, 5000)), false, true, 'b|br|i|p|ul|li|cut|h[1-6]{1}', false, false); if ($error = $contest->CreateComment($oid, $comment, $reply)) { $objResponse->call('comment.reset'); $objResponse->alert($error); } else { define('FUNCTIONS_ONLY', TRUE); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $stop_words = new stop_words(hasPermissions('projects')); require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/contest.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $contest->GetOffer($oid); if ($contest->offer['user_id'] != $uid) { //$smail = new smail; //$smail->ContestNewComment($uid, $contest->offer['id']); } $contest->is_owner = $offer['owner_id'] == $uid; $comment = $contest->GetComment($contest->new_cid); $comment = array($comment); $c_blocked = $contest->offer['comm_blocked'] == 't' && $uid != $contest->offer['user_id'] && $uid != $contest->offer['owner_id']; $objResponse->call('comment.added', $comment[0]['id'], comments($contest->offer['project_id'], '', $comment, $c_blocked, FALSE, $level)); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; } return $objResponse; }
function wishes() { $inCore = cmsCore::getInstance(); $inPage = cmsPage::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); $user_id = $inUser->id; //$inPage->addHeadJS(''); //$inPage->addHeadJS(''); global $_LANG; $inCore->loadModel('wishes'); $model = new cms_model_wishes(); //Загрузка настроек встреч $cfg = $inCore->loadComponentConfig('wishes'); // Проверяем включени ли компонент if (!$cfg['component_enabled']) { cmsCore::error404(); } if (!isset($cfg['perpage'])) { $cfg['perpage'] = 10; } if (!isset($cfg['on_main'])) { $cfg['on_main'] = 5; } //Получаем параметры $id = $inCore->request('id', 'int', 0); $do = $inCore->request('do', 'str', 'view'); $page = $inCore->request('page', 'int', 1); $pagetitle = "Потрібно - Допоможу"; $inPage->addPathway($pagetitle, '/wishes/all.html'); $types = array(); $sql = "select * from `cms_wishes_cat`"; $result = $inDB->query($sql); $j = 1; while ($tinfo = $inDB->fetch_assoc($result)) { $types[$j]["1"] = $tinfo['class']; $types[$j]["2"] = $tinfo['title']; $j++; } $inPage->addHead('<link rel="stylesheet" href="/components/wishes/css/style.css">'); /***********************************************************/ if ($do == 'load') { $n = $inCore->request('n', 'int', 1); $page = $inCore->request('page', 'int', 1); //echo $page." ".$n." дозагрузка данных<br/>"; $t = $types[$n]; $inf = $model->wish_type($n, $t, $user_id, $page, $active = 0, $types = array(), $cfg['on_main']); echo $inf; exit; } if ($do == 'delete') { if ($model->is_author($user_id, $id) or $inUser->is_admin) { $sql = "DELETE FROM `cms_wishes` WHERE `id` = " . $id . ";"; $result = $inDB->query($sql); cmsCore::addSessionMessage("Успішно видалено!", 'success'); } cmsCore::redirect('/wishes/'); } if ($do == 'wish_item') { $sql = "select * from `cms_wishes` where `published`='1' and `id`='" . $id . "' "; //echo $sql; $result = $inDB->query($sql); $sinfo = $inDB->fetch_assoc($result); $us = $inUser->loadUser($sinfo['user_id']); $t = $types[$sinfo['type']]; $inPage->addPathway($t[2], '/wishes/type' . $sinfo['type'] . '.html'); $inPage->addPathway($sinfo['title'], ''); $inPage->setTitle($sinfo['title']); echo "<h2><a href='/wishes/type" . $sinfo['type'] . ".html'>" . $t[2] . "</a> » " . $sinfo['title'] . "</h2>"; echo "<div style='font-size:11px;'><a href='/users/" . $us['login'] . "'>" . $us['nickname'] . "</a> | " . $inCore->dateformat($sinfo['datetime']) . "</div>"; if ($model->is_author($user_id, $id) or $inUser->is_admin) { echo "<div style='float:right;'><a href='/wishes/delete" . $id . ".html'>Видалити</a></div>"; } echo "\n\t\t\t<table width='100%'><tr><td valign='top' width='10%'>\n\t\t\t<a href='/users/" . $us['login'] . "'><img src='" . $us['imageurl'] . "' style='float:left;border-radius:10px;margin:0px 10px 10px 0px;' border='0' /></a>\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t<div style='padding:10px;margin-bottom:50px; background-color:#f2f0f0; border-bottom: 1px solid #DDDDDD;border-top: 1px solid #DDDDDD;'>\n\t\t\t" . $sinfo['info'] . "</div>\n\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t"; if ($inCore->isComponentInstalled('comments')) { cmsCore::includeComments(); comments('wishes', $sinfo['id']); } } /***********************************************************/ if ($do == 'add_item') { $title = $inCore->request('title', 'str', ''); $info = $inCore->request('info', 'str', ''); $send = $inCore->request('send', 'str', ''); $type = $id; $guest_info = $inUser->getGuestInfo(); $user_access = $inUser->id; if ($user_access > 0) { /**/ /**/ /**/ /**/ $inf = "0"; $success = "0"; $tr = strlen($title); if ($send == "ok") { if ($tr > 0) { $ip = $_SERVER['REMOTE_ADDR']; $browser = $_SERVER['HTTP_USER_AGENT']; $sql = "INSERT INTO `cms_wishes` (`id` ,\n`title` ,\n`info` ,\n`published` ,\n`datetime` ,\n`user_id` ,\n`rate` ,\n`type` ,\n`ip` ,\n`browser` \n)\nVALUES (NULL , '" . $title . "', '" . $info . "', '1', NOW(), '" . $user_id . "', '0', '" . $type . "', '" . $ip . "', '" . $browser . "'\n);"; $inDB->query($sql); $msg = "<span style='font-size:10px;'>Інформація успішно додана</span>"; cmsCore::addSessionMessage($msg, 'success'); $inf = "1"; $success = "1"; cmsCore::redirect('/wishes/'); } else { $msg = "<span style='font-size:10px;'>Ви не ввели заголовок!</span>"; cmsCore::addSessionMessage($msg, 'error'); $inf = "1"; } } if ($inf != "1") { $msg = "<span style='font-size:10px;'>Заповніть поля Заголовок та Інформація.</span>"; cmsCore::addSessionMessage($msg, 'info'); } $pagetitle = "Додання в розділ «" . $types[$id][2] . "»"; $inPage->addPathway($pagetitle, ''); if ($success == "0") { echo "<h2>Додання в розділ «" . $types[$id][2] . "»</h2>"; echo "<form action='' method='post'>\n\t\tЗаголовок:<br/>\n\t\t<input type='text' name='title' style='width:400px;' /><br/>\n\t\tІнформація «" . $types[$id][2] . "»<br/>\n\t\t\t<textarea name='info' style='width:400px;height:150px;'></textarea><br/>\n\t\t\t\t<input type='hidden' name='type' value='" . $id . "' />\n\t\t\t\t<input type='hidden' name='send' value='ok' />\n\t\t\t\t<input type='submit' value='Відправити'> <input type='button' value='Відміна' onclick='window.history.back()' />\n\t\t\t\t\t\n\t\t\n\t</form>\n\t"; } else { echo "<a href='/wishes/all.html'>Перейти на початок</a>"; } /**/ /**/ /**/ /**/ } else { $msg = "<span style='font-size:10px;'>Доступно тільки зареєстрованим користувачам</span> <input type='button' value='Вернуться' onclick='window.history.back()' />"; cmsCore::addSessionMessage($msg, 'error'); } } /***********************************************************/ if ($do == 'type') { $n = $id; $t = $types[$n]; $active = '1'; $inf = $model->wish_type($n, $t, $user_id, $page, $active, $types, $cfg['perpage']); if ($n == 0) { $total = $inDB->rows_count("cms_wishes", "`published`=1"); } else { $total = $inDB->rows_count("cms_wishes", "`type`='" . $n . "' and `published`=1"); } if ($user_id <= 0) { $model->modal(); } $name = $t[2]; if ($n == 0) { $name = "Все"; } $inPage->addPathway($name, ''); echo "<h3><a href='/wishes/all.html'>На початок</a> » " . $name . "</h3>"; echo "<a href='/wishes/add" . $n . ".html' class='usr_wall_addlink " . $t["1"] . "'>Допомогти</a>"; echo $inf; if ($n == 0) { $pagination = cmsPage::getPagebar($total, $page, $cfg['perpage'], '/wishes/all-page%page%.html'); } else { $pagination = cmsPage::getPagebar($total, $page, $cfg['perpage'], '/wishes/type' . $n . '-page%page%.html'); } echo $pagination; } /***********************************************************/ if ($do == 'view') { $st = ""; $cntt = count($types); foreach ($types as $n => $t) { $links .= " <span style='border-radius:3px;border:1px dotted #999;color:#333;'><a href='/wishes/type" . intval($n) . ".html'>" . $t[2] . "</a></span> "; $inf = $model->wish_type($n, $t, $user_id, $page = 1, $active = 0, $types = array(), $cfg['on_main']); //print_r($t); $st .= "<tr valign='top' ><div class='wish-type'><span style='font-size:20px;font-weight:bold;color:#333;'>\n\t\t<a href='/wishes/type" . $n . ".html'>" . $t["2"] . "</span> \n\t\t<br/>\n\t\t<div >\n\t\t<a href='/wishes/add" . $n . ".html' class='usr_wall_addlink " . $t["1"] . "'>Допомогти</a>\n\t\t</div></div>\n\t\t<br/>\n\t\t" . $inf . "<br/>\n\t\t" . $inf1 . "\n\t\t<div id='rrr" . $n . "'></div>\n\t\t<div id='temp" . $n . "' style='display:none;'></div>\t\n\t\t<div style='text-align:center;'>\n\t\t<div id='imgload" . $n . "'></div>\n\t\t<input type='hidden' id='page" . $n . "' name='page" . $n . "' value='2'>\n\t\t</div>\n\t\t<input type='button' style='width:100%;' onclick='upload_wish(rrr" . $n . ",page" . $n . ", temp" . $n . "," . $n . ")' value='Завантажити ще'>\n\t\t</tr>"; } } }
cmsPage::initTemplate('components', 'com_users_photos_view')-> assign('photo', $photo)-> assign('bbcode', '[IMG]'.HOST.'/images/users/photos/medium/'.$photo['imageurl'].'[/IMG]')-> assign('previd', $previd)-> assign('nextid', $nextid)-> assign('usr', $usr)-> assign('myprofile', $myprofile)-> assign('is_admin', cmsUser::userIsAdmin($inUser->id))-> assign('is_allow', $is_allow)-> assign('tagbar', ($is_allow ? cmsTagBar('userphoto', $photo['id']) : ''))-> display(); if ($inCore->isComponentEnable('comments') && $is_allow){ cmsCore::includeComments(); comments('userphoto', $photo['id'], array(), $myprofile); } } //============================================================================// //============================ Один фотоальбом ===============================// //============================================================================// if ($pdo=='viewalbum'){ if (!$inUser->id && !$model->config['sw_guest']) { cmsUser::goToLogin(); } $usr = cmsUser::getShortUserData($login); if (!$usr){ cmsCore::error404(); }
function blogs() { $inCore = cmsCore::getInstance(); cmsCore::c('blog')->owner = 'user'; global $_LANG; define('IS_BILLING', $inCore->isComponentInstalled('billing')); if (IS_BILLING) { cmsCore::loadClass('billing'); } //Получаем параметры $id = cmsCore::request('id', 'int', 0); $post_id = cmsCore::request('post_id', 'int', 0); $bloglink = cmsCore::request('bloglink', 'str', ''); $seolink = cmsCore::request('seolink', 'str', ''); $page = cmsCore::request('page', 'int', 1); $cat_id = cmsCore::request('cat_id', 'int', 0); $ownertype = cmsCore::request('ownertype', 'str', ''); $on_moderate = cmsCore::request('on_moderate', 'int', 0); $pagetitle = $inCore->getComponentTitle(); cmsCore::c('page')->addPathway($pagetitle, '/blogs'); cmsCore::c('page')->setTitle($pagetitle); cmsCore::c('page')->setDescription(cmsCore::m('blogs')->config['meta_desc'] ? cmsCore::m('blogs')->config['meta_desc'] : $pagetitle); cmsCore::c('page')->setKeywords(cmsCore::m('blogs')->config['meta_keys'] ? cmsCore::m('blogs')->config['meta_keys'] : $pagetitle); cmsCore::c('page')->addHeadJsLang(array('CONFIG_BLOG','DEL_BLOG','YOU_REALY_DELETE_BLOG','NEW_CAT','RENAME_CAT','YOU_REALY_DELETE_CAT','YOU_REALY_DELETE_POST','NO_PUBLISHED')); ///////////////////////// МОЙ БЛОГ ///////////////////////////////////////// if ($inCore->do == 'my_blog'){ if(!cmsCore::c('user')->id){ cmsCore::error404(); } $my_blog = cmsCore::c('blog')->getBlogByUserId(cmsCore::c('user')->id); if (!$my_blog) { cmsCore::redirect('/blogs/createblog.html'); } else { cmsCore::redirect(cmsCore::m('blogs')->getBlogURL($my_blog['seolink'])); } } ///////////////////////// ПОСЛЕДНИЕ ПОСТЫ ////////////////////////////////// if ($inCore->do=='view'){ cmsCore::c('page')->addHead('<link rel="alternate" type="application/rss+xml" title="'.$_LANG['RSS_BLOGS'].'" href="'.HOST.'/rss/blogs/all/feed.rss">'); // кроме админов в списке только с доступом для всех if(!cmsCore::c('user')->is_admin){ cmsCore::c('blog')->whereOnlyPublic(); } // ограничиваем по рейтингу если надо if(cmsCore::m('blogs')->config['list_min_rating']){ cmsCore::c('blog')->ratingGreaterThan(cmsCore::m('blogs')->config['list_min_rating']); } // всего постов $total = cmsCore::c('blog')->getPostsCount(cmsCore::c('user')->is_admin); //устанавливаем сортировку cmsCore::c('db')->orderBy('p.pubdate', 'DESC'); cmsCore::c('db')->limitPage($page, cmsCore::m('blogs')->config['perpage']); // сами посты $posts = cmsCore::c('blog')->getPosts(cmsCore::c('user')->is_admin, cmsCore::m('blogs')); if(!$posts && $page > 1){ cmsCore::error404(); } cmsPage::initTemplate('components', 'com_blog_view_posts')-> assign('pagetitle', $pagetitle)-> assign('ownertype', $ownertype)-> assign('total', $total)-> assign('posts', $posts)-> assign('pagination', cmsPage::getPagebar($total, $page, cmsCore::m('blogs')->config['perpage'], '/blogs/latest-%page%.html'))-> assign('cfg', cmsCore::m('blogs')->config)-> display(); } ////////// СОЗДАНИЕ БЛОГА ////////////////////////////////////////////////// if ($inCore->do=='create'){ //Проверяем авторизацию if (!cmsCore::c('user')->id){ cmsUser::goToLogin(); } //Если у пользователя уже есть блог, то выходим if (cmsCore::c('blog')->getUserBlogId(cmsCore::c('user')->id)) { cmsCore::redirectBack(); } cmsCore::c('page')->addPathway($_LANG['PATH_CREATING_BLOG']); cmsCore::c('page')->setTitle($_LANG['CREATE_BLOG']); if (IS_BILLING){ cmsBilling::checkBalance('blogs', 'add_blog'); } //Показ формы создания блога if (!cmsCore::inRequest('goadd')){ cmsPage::initTemplate('components', 'com_blog_create')-> assign('is_restrictions', (!cmsCore::c('user')->is_admin && cmsCore::m('blogs')->config['min_karma']))-> assign('cfg', cmsCore::m('blogs')->config)-> display(); } //Сам процесс создания блога if (cmsCore::inRequest('goadd')){ $title = cmsCore::request('title', 'str'); $allow_who = cmsCore::request('allow_who', 'str', 'all'); $ownertype = cmsCore::request('ownertype', 'str', 'single'); //Проверяем название if (mb_strlen($title)<5){ cmsCore::addSessionMessage($_LANG['BLOG_ERR_TITLE'], 'error'); cmsCore::redirect('/blogs/createblog.html'); } //Проверяем хватает ли кармы, но только если это не админ if (cmsCore::m('blogs')->config['min_karma'] && !cmsCore::c('user')->is_admin){ // если персональный блог if ($ownertype=='single' && (cmsCore::c('user')->karma < cmsCore::m('blogs')->config['min_karma_private'])){ cmsCore::addSessionMessage($_LANG['BLOG_YOU_NEED'].' <a href="/users/'.cmsCore::c('user')->id.'/karma.html">'.$_LANG['BLOG_KARMS'].'</a> '.$_LANG['FOR_CREATE_PERSON_BLOG'].' — '.cmsCore::m('blogs')->config['min_karma_private'].', '.$_LANG['BLOG_HEAVING'].' — '.cmsCore::c('user')->karma, 'error'); cmsCore::redirect('/blogs/createblog.html'); } // если коллективный блог if ($ownertype=='multi' && (cmsCore::c('user')->karma < cmsCore::m('blogs')->config['min_karma_public'])){ cmsCore::addSessionMessage($_LANG['BLOG_YOU_NEED'].' <a href="/users/'.cmsCore::c('user')->id.'/karma.html">'.$_LANG['BLOG_KARMS'].'</a> '.$_LANG['FOR_CREATE_TEAM_BLOG'].' — '.cmsCore::m('blogs')->config['min_karma_public'].', '.$_LANG['BLOG_HEAVING'].' — '.cmsCore::c('user')->karma, 'error'); cmsCore::redirect('/blogs/createblog.html'); } } //Добавляем блог в базу $blog_id = cmsCore::c('blog')->addBlog(array('user_id'=>cmsCore::c('user')->id, 'title'=>$title, 'allow_who'=>$allow_who, 'ownertype'=>$ownertype, 'forall'=>1)); $blog_link = cmsCore::c('db')->get_field('cms_blogs', "id='{$blog_id}'", 'seolink'); //регистрируем событие cmsActions::log('add_blog', array( 'object' => $title, 'object_url' => cmsCore::m('blogs')->getBlogURL($blog_link), 'object_id' => $blog_id, 'target' => '', 'target_url' => '', 'target_id' => 0, 'description' => '' )); if (IS_BILLING){ cmsBilling::process('blogs', 'add_blog'); } cmsCore::addSessionMessage($_LANG['BLOG_CREATED_TEXT'], 'info'); cmsCore::redirect(cmsCore::m('blogs')->getBlogURL($blog_link)); } } ////////// НАСТРОЙКИ БЛОГА ///////////////////////////////////////////////// if ($inCore->do=='config'){ if(!cmsCore::c('user')->id) { cmsCore::error404(); } if(!cmsCore::isAjax()) { cmsCore::error404(); } // получаем блог $blog = cmsCore::c('blog')->getBlog($id); if (!$blog) { cmsCore::error404(); } //Проверяем является пользователь хозяином блога или админом if ($blog['user_id'] != cmsCore::c('user')->id && !cmsCore::c('user')->is_admin ) { cmsCore::halt(); } //Если нет запроса на сохранение, показываем форму настроек блога if (!cmsCore::inRequest('goadd')){ //Получаем список авторов блога $authors = cmsCore::c('blog')->getBlogAuthors($blog['id']); cmsPage::initTemplate('components', 'com_blog_config')-> assign('blog', $blog)-> assign('form_action', '/blogs/'.$blog['id'].'/editblog.html')-> assign('authors_list', cmsUser::getAuthorsList($authors))-> assign('users_list', cmsUser::getUsersList(false, $authors))-> assign('is_restrictions', (!cmsCore::c('user')->is_admin && cmsCore::m('blogs')->config['min_karma']))-> assign('cfg', cmsCore::m('blogs')->config)-> assign('is_admin', cmsCore::c('user')->is_admin)-> display(); cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean())); } //Если пришел запрос на сохранение if (cmsCore::inRequest('goadd')){ //Получаем настройки $title = cmsCore::request('title', 'str'); $allow_who = cmsCore::request('allow_who', 'str', 'all'); $ownertype = cmsCore::request('ownertype', 'str', 'single'); $premod = cmsCore::request('premod', 'int', 0); $forall = cmsCore::request('forall', 'int', 1); $showcats = cmsCore::request('showcats', 'int', 1); $authors = cmsCore::request('authorslist', 'array_int', array()); if (cmsCore::m('blogs')->config['seo_user_access'] || cmsCore::c('user')->is_admin) { $page_title = cmsCore::request('pagetitle', 'str', ''); $meta_keys = cmsCore::request('meta_keys', 'str', ''); $meta_desc = cmsCore::request('meta_desc', 'str', ''); } else { $page_title = $meta_keys = $meta_desc = ''; } //Проверяем настройки if (mb_strlen($title)<5) { $title = $blog['title']; } //Проверяем ограничения по карме (для смены типа блога) if (cmsCore::m('blogs')->config['min_karma'] && !cmsCore::c('user')->is_admin){ // если персональный блог if ($ownertype=='single' && (cmsCore::c('user')->karma < cmsCore::m('blogs')->config['min_karma_private'])){ cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['BLOG_YOU_NEED'].' <a href="/users/'.cmsCore::c('user')->id.'/karma.html">'.$_LANG['BLOG_KARMS'].'</a> '.$_LANG['FOR_CREATE_PERSON_BLOG'].' — '.cmsCore::m('blogs')->config['min_karma_private'].', '.$_LANG['BLOG_HEAVING'].' — '.cmsCore::c('user')->karma)); } // если коллективный блог if ($ownertype=='multi' && (cmsCore::c('user')->karma < cmsCore::m('blogs')->config['min_karma_public'])){ cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['BLOG_YOU_NEED'].' <a href="/users/'.cmsCore::c('user')->id.'/karma.html">'.$_LANG['BLOG_KARMS'].'</a> '.$_LANG['FOR_CREATE_TEAM_BLOG'].' — '.cmsCore::m('blogs')->config['min_karma_public'].', '.$_LANG['BLOG_HEAVING'].' — '.cmsCore::c('user')->karma)); } } if(!cmsUser::checkCsrfToken()) { cmsCore::halt(); } //сохраняем авторов cmsCore::c('blog')->updateBlogAuthors($blog['id'], $authors); //сохраняем настройки блога $blog['seolink_new'] = cmsCore::c('blog')->updateBlog($blog['id'], array( 'title' => $title, 'pagetitle' => $page_title, 'meta_keys' => $meta_keys, 'meta_desc' => $meta_desc, 'allow_who' => $allow_who, 'showcats' => $showcats, 'ownertype' => $ownertype, 'premod' => $premod, 'forall' => $forall ), cmsCore::m('blogs')->config['update_seo_link_blog']); $blog['seolink'] = $blog['seolink_new'] ? $blog['seolink_new'] : $blog['seolink']; if(stripslashes($title) != $blog['title']){ // обновляем записи постов cmsActions::updateLog('add_post', array('target' => $title, 'target_url' => cmsCore::m('blogs')->getBlogURL($blog['seolink'])), 0, $blog['id']); // обновляем запись добавления блога cmsActions::updateLog('add_blog', array('object' => $title, 'object_url' => cmsCore::m('blogs')->getBlogURL($blog['seolink'])), $blog['id']); } cmsCore::jsonOutput(array('error' => false, 'redirect' => cmsCore::m('blogs')->getBlogURL($blog['seolink']))); } } ////////// СПИСОК БЛОГОВ /////////////////////////////////////////////////// if ($inCore->do=='view_blogs'){ // rss в адресной строке cmsCore::c('page')->addHead('<link rel="alternate" type="application/rss+xml" title="'.$_LANG['BLOGS'].'" href="'.HOST.'/rss/blogs/all/feed.rss">'); // тип блога if($ownertype && $ownertype != 'all'){ cmsCore::c('blog')->whereOwnerTypeIs($ownertype); } // всего блогов $total = cmsCore::c('blog')->getBlogsCount(); //устанавливаем сортировку cmsCore::c('db')->orderBy('b.rating', 'DESC'); cmsCore::c('db')->limitPage($page, cmsCore::m('blogs')->config['perpage_blog']); //Получаем список блогов $blogs = cmsCore::c('blog')->getBlogs(cmsCore::m('blogs')); if(!$blogs && $page > 1){ cmsCore::error404(); } //Генерируем панель со страницами и устанавливаем заголовки страниц и глубиномера switch ($ownertype){ case 'all': cmsCore::c('page')->setTitle($_LANG['ALL_BLOGS']); cmsCore::c('page')->setDescription($_LANG['BLOGS'] .' - '. $_LANG['ALL_BLOGS']); cmsCore::c('page')->addPathway($_LANG['ALL_BLOGS']); $link = '/blogs/all-%page%.html'; break; case 'single': cmsCore::c('page')->setTitle($_LANG['PERSONALS']); cmsCore::c('page')->setDescription($_LANG['PERSONALS'] .' '. $_LANG['BLOGS']); cmsCore::c('page')->addPathway($_LANG['PERSONALS']); $link = '/blogs/single-%page%.html'; break; case 'multi': cmsCore::c('page')->setTitle($_LANG['COLLECTIVES']); cmsCore::c('page')->setDescription($_LANG['COLLECTIVES'] .' '. $_LANG['BLOGS']); cmsCore::c('page')->addPathway($_LANG['COLLECTIVES']); $link = '/blogs/multi-%page%.html'; break; } if ($blogs) { foreach ($blogs as $b) { $k[] = $b['title']; } cmsCore::c('page')->setKeywords(implode(', ', $k)); } cmsPage::initTemplate('components', 'com_blog_view_all')-> assign('cfg', cmsCore::m('blogs')->config)-> assign('total', $total)-> assign('ownertype', $ownertype)-> assign('blogs', $blogs)-> assign('pagination', cmsPage::getPagebar($total, $page, cmsCore::m('blogs')->config['perpage_blog'], $link))-> display(); } ////////// ПРОСМОТР БЛОГА ////////////////////////////////////////////////// if ($inCore->do == 'blog'){ // получаем блог $blog = cmsCore::c('blog')->getBlog($bloglink); // Совместимость со старыми ссылками на клубные блоги // Пробуем клубный блог получить по ссылке if (!$blog) { $blog_user_id = cmsCore::c('db')->get_field('cms_blogs', "seolink = '$bloglink' AND owner = 'club'", 'user_id'); if($blog_user_id){ cmsCore::redirect('/clubs/'.$blog_user_id.'_blog', '301'); } } if (!$blog) { cmsCore::error404(); } // Права доступа $myblog = (cmsCore::c('user')->id && cmsCore::c('user')->id == $blog['user_id']); // автор блога $is_writer = cmsCore::c('blog')->isUserBlogWriter($blog, cmsCore::c('user')->id); // может ли пользователь писать в блог cmsCore::c('page')->addPathway($blog['title'], cmsCore::m('blogs')->getBlogURL($blog['seolink'])); // rss в адресной строке cmsCore::c('page')->addHead('<link rel="alternate" type="application/rss+xml" title="'.htmlspecialchars(strip_tags($blog['title'])).'" href="'.HOST.'/rss/blogs/'.$blog['id'].'/feed.rss">'); if($myblog || cmsCore::c('user')->is_admin){ cmsCore::c('page')->addHeadJS('components/blogs/js/blog.js'); } //Если доступа нет, возвращаемся и выводим сообщение об ошибке if (!cmsUser::checkUserContentAccess($blog['allow_who'], $blog['user_id'])){ cmsCore::addSessionMessage($_LANG['CLOSED_BLOG'].'<br>'.$_LANG['CLOSED_BLOG_TEXT'], 'error'); cmsCore::redirect('/blogs'); } // Если показываем посты на модерации, если запрашиваем их if($on_moderate){ if(!cmsCore::c('user')->is_admin && !($myblog && $blog['ownertype'] == 'multi' && $blog['premod'])){ cmsCore::error404(); } cmsCore::c('blog')->whereNotPublished(); cmsCore::c('page')->setTitle($_LANG['POSTS_ON_MODERATE']); cmsCore::c('page')->addPathway($_LANG['POSTS_ON_MODERATE']); $blog['title'] .= ' - '.$_LANG['POSTS_ON_MODERATE']; } //Получаем html-код ссылки на автора с иконкой его пола $blog['author'] = cmsUser::getGenderLink($blog['user_id']); // посты данного блога cmsCore::c('blog')->whereBlogIs($blog['id']); // кроме админов автора в списке только с доступом для всех if(!cmsCore::c('user')->is_admin && !$myblog && !cmsCore::c('user')->isFriend($blog['user_id'])){ cmsCore::c('blog')->whereOnlyPublic(); } // если пришла категория if($cat_id){ $all_total = cmsCore::c('blog')->getPostsCount(cmsCore::c('user')->is_admin || $myblog); cmsCore::c('blog')->whereCatIs($cat_id); } // всего постов $total = cmsCore::c('blog')->getPostsCount(cmsCore::c('user')->is_admin || $myblog); //устанавливаем сортировку cmsCore::c('db')->orderBy('p.pubdate', 'DESC'); cmsCore::c('db')->limitPage($page, cmsCore::m('blogs')->config['perpage']); // сами посты $posts = cmsCore::c('blog')->getPosts((cmsCore::c('user')->is_admin || $myblog), cmsCore::m('blogs')); if(!$posts && $page > 1){ cmsCore::error404(); } //Если нужно, получаем список рубрик (категорий) этого блога $blogcats = $blog['showcats'] ? cmsCore::c('blog')->getBlogCats($blog['id']) : false; //Считаем количество постов, ожидающих модерации $on_moderate = (cmsCore::c('user')->is_admin || $myblog) && !$on_moderate ? cmsCore::c('blog')->getModerationCount($blog['id']) : false; // админлинки $blog['moderate_link'] = cmsCore::m('blogs')->getBlogURL($blog['seolink']).'/moderate.html'; $blog['blog_link'] = cmsCore::m('blogs')->getBlogURL($blog['seolink']); $blog['add_post_link'] = '/blogs/'.$blog['id'].'/newpost'.($cat_id ? $cat_id : '').'.html'; //Генерируем панель со страницами if ($cat_id){ $pagination = cmsPage::getPagebar($total, $page, cmsCore::m('blogs')->config['perpage'], $blog['blog_link'].'/page-%page%/cat-'.$cat_id); } else { $pagination = cmsPage::getPagebar($total, $page, cmsCore::m('blogs')->config['perpage'], $blog['blog_link'].'/page-%page%'); } // SEO cmsCore::c('page')->setTitle($blog['pagetitle'] ? $blog['pagetitle'] : $blog['title']); cmsCore::c('page')->setDescription($blog['meta_desc'] ? $blog['meta_desc'] : $blog['title']); // keywords if ($blog['meta_keys']) { $meta_keys = $blog['meta_keys']; } else if ($posts) { foreach ($posts as $p) { $k[] = $p['title']; } $meta_keys = implode(', ', $k); } else { $meta_keys = $blog['title']; } cmsCore::c('page')->setKeywords($meta_keys); cmsPage::initTemplate('components', 'com_blog_view')-> assign('myblog', $myblog)-> assign('is_config', true)-> assign('is_admin', cmsCore::c('user')->is_admin)-> assign('is_writer', $is_writer)-> assign('on_moderate', $on_moderate)-> assign('cat_id', $cat_id)-> assign('blogcats', $blogcats)-> assign('total', $total)-> assign('all_total', (isset($all_total) ? $all_total : 0))-> assign('blog', $blog)->assign('posts', $posts)-> assign('pagination', $pagination)-> display(); } ////////// НОВЫЙ ПОСТ / РЕДАКТИРОВАНИЕ ПОСТА /////////////////////////////// if ($inCore->do == 'newpost' || $inCore->do == 'editpost'){ if (!cmsCore::c('user')->id){ cmsUser::goToLogin(); } // для редактирования сначала получаем пост if($inCore->do == 'editpost'){ $post = cmsCore::c('blog')->getPost($post_id); if (!$post){ cmsCore::error404(); } $id = $post['blog_id']; $post['tags'] = cmsTagLine('blogpost', $post['id'], false); } // получаем блог $blog = cmsCore::c('blog')->getBlog($id); if (!$blog) { cmsCore::error404(); } //Если доступа нет, возвращаемся и выводим сообщение об ошибке if (!cmsUser::checkUserContentAccess($blog['allow_who'], $blog['user_id'])){ cmsCore::addSessionMessage($_LANG['CLOSED_BLOG'].'<br>'.$_LANG['CLOSED_BLOG_TEXT'], 'error'); cmsCore::redirect('/blogs'); } // Права доступа $myblog = (cmsCore::c('user')->id && cmsCore::c('user')->id == $blog['user_id']); // автор блога $is_writer = cmsCore::c('blog')->isUserBlogWriter($blog, cmsCore::c('user')->id); // может ли пользователь писать в блог // если не его блог, пользователь не писатель и не админ, вне зависимости от авторства показываем 404 if (!$myblog && !$is_writer && !cmsCore::c('user')->is_admin ) { cmsCore::error404(); } // проверяем является ли пользователь автором, если редактируем пост if (($inCore->do == 'editpost') && !cmsCore::c('user')->is_admin && $post['user_id'] != cmsCore::c('user')->id) { cmsCore::error404(); } //Если еще не было запроса на сохранение if (!cmsCore::inRequest('goadd')){ cmsCore::c('page')->addPathway($blog['title'], cmsCore::m('blogs')->getBlogURL($blog['seolink'])); //для нового поста if ($inCore->do == 'newpost'){ if (IS_BILLING){ cmsBilling::checkBalance('blogs', 'add_post'); } cmsCore::c('page')->addPathway($_LANG['NEW_POST']); cmsCore::c('page')->setTitle($_LANG['NEW_POST']); $post = cmsUser::sessionGet('mod'); if ($post){ cmsUser::sessionDel('mod'); } else { $post['cat_id'] = $cat_id; $post['comments'] = 1; } } //для редактирования поста if ($inCore->do=='editpost'){ cmsCore::c('page')->addPathway($post['title'], cmsCore::m('blogs')->getPostURL($blog['seolink'], $post['seolink'])); cmsCore::c('page')->addPathway($_LANG['EDIT_POST']); cmsCore::c('page')->setTitle($_LANG['EDIT_POST']); } cmsCore::c('page')->initAutocomplete(); $autocomplete_js = cmsCore::c('page')->getAutocompleteJS('tagsearch', 'tags'); //получаем рубрики блога $cat_list = cmsCore::getListItems('cms_blog_cats', $post['cat_id'], 'id', 'ASC', "blog_id = '{$blog['id']}'"); //получаем код панелей bbcode и смайлов $bb_toolbar = cmsPage::getBBCodeToolbar('message',cmsCore::m('blogs')->config['img_on'], 'blogs', 'blog_post', $post_id); $smilies = cmsPage::getSmilesPanel('message'); $inCore->initAutoGrowText('#message'); //показываем форму cmsPage::initTemplate('components', 'com_blog_edit_post')-> assign('blog', $blog)-> assign('pagetitle', ($inCore->do=='editpost' ? $_LANG['EDIT_POST'] : $_LANG['NEW_POST']))-> assign('mod', $post)-> assign('cat_list', $cat_list)-> assign('bb_toolbar', $bb_toolbar)-> assign('smilies', $smilies)-> assign('is_admin', cmsCore::c('user')->is_admin)-> assign('cfg', cmsCore::m('blogs')->config)-> assign('myblog', $myblog)-> assign('user_can_iscomments', cmsUser::isUserCan('comments/iscomments'))-> assign('autocomplete_js', $autocomplete_js)-> display(); } //Если есть запрос на сохранение if (cmsCore::inRequest('goadd')) { $errors = false; //Получаем параметры $mod['title'] = cmsCore::request('title', 'str'); $mod['content'] = cmsCore::request('content', 'html'); $mod['feel'] = cmsCore::request('feel', 'str', ''); $mod['music'] = cmsCore::request('music', 'str', ''); $mod['cat_id'] = cmsCore::request('cat_id', 'int'); $mod['allow_who']= cmsCore::request('allow_who', 'str', $blog['allow_who']); $mod['tags'] = cmsCore::request('tags', 'str', ''); $mod['comments'] = cmsCore::request('comments', 'int', 1); if (cmsCore::m('blogs')->config['seo_user_access'] || cmsCore::c('user')->is_admin) { $mod['pagetitle'] = cmsCore::request('pagetitle', 'str', ''); $mod['meta_keys'] = cmsCore::request('meta_keys', 'str', ''); $mod['meta_desc'] = cmsCore::request('meta_desc', 'str', ''); } $mod['published']= ($myblog || !$blog['premod']) ? 1 : 0; $mod['blog_id'] = $blog['id']; //Проверяем их if (mb_strlen($mod['title'])<2) { cmsCore::addSessionMessage($_LANG['POST_ERR_TITLE'], 'error'); $errors = true; } if (mb_strlen($mod['content'])<5) { cmsCore::addSessionMessage($_LANG['POST_ERR_TEXT'], 'error'); $errors = true; } // Если есть ошибки, возвращаемся назад if($errors){ cmsUser::sessionPut('mod', $mod); cmsCore::redirectBack(); } //Если нет ошибок //добавляем новый пост... if ($inCore->do=='newpost'){ if (IS_BILLING){ cmsBilling::process('blogs', 'add_post'); } $mod['pubdate'] = date( 'Y-m-d H:i:s'); $mod['user_id'] = cmsCore::c('user')->id; // добавляем пост, получая его id и seolink $added = cmsCore::c('blog')->addPost($mod); $mod = array_merge($mod, $added); if ($mod['published']) { $mod['seolink'] = cmsCore::m('blogs')->getPostURL($blog['seolink'], $mod['seolink']); if ($blog['allow_who'] != 'nobody' && $mod['allow_who'] != 'nobody') { cmsCore::callEvent('ADD_POST_DONE', $mod); cmsActions::log('add_post', array( 'object' => $mod['title'], 'object_url' => $mod['seolink'], 'object_id' => $mod['id'], 'target' => $blog['title'], 'target_url' => cmsCore::m('blogs')->getBlogURL($blog['seolink']), 'target_id' => $blog['id'], 'description' => '', 'is_friends_only' => (int)($blog['allow_who'] == 'friends' || $mod['allow_who'] == 'friends') )); } cmsCore::addSessionMessage($_LANG['POST_CREATED'], 'success'); cmsCore::redirect($mod['seolink']); } if (!$mod['published']) { $message = str_replace('%user%', cmsUser::getProfileLink(cmsCore::c('user')->login, cmsCore::c('user')->nickname), $_LANG['MSG_POST_SUBMIT']); $message = str_replace('%post%', '<a href="'.cmsCore::m('blogs')->getPostURL($blog['seolink'], $added['seolink']).'">'.$mod['title'].'</a>', $message); $message = str_replace('%blog%', '<a href="'.cmsCore::m('blogs')->getBlogURL($blog['seolink']).'">'.$blog['title'].'</a>', $message); cmsUser::sendMessage(USER_UPDATER, $blog['user_id'], $message); cmsCore::addSessionMessage($_LANG['POST_PREMODER_TEXT'], 'info'); cmsCore::redirect(cmsCore::m('blogs')->getBlogURL($blog['seolink'])); } } //...или сохраняем пост после редактирования if ($inCore->do=='editpost') { if (cmsCore::m('blogs')->config['update_date']){ $mod['pubdate'] = date( 'Y-m-d H:i:s'); } $mod['edit_times'] = (int)$post['edit_times']+1; $new_post_seolink = cmsCore::c('blog')->updatePost($post['id'], $mod, cmsCore::m('blogs')->config['update_seo_link']); $post['seolink'] = is_string($new_post_seolink) ? $new_post_seolink : $post['seolink']; cmsActions::updateLog( 'add_post', array( 'object' => $mod['title'], 'pubdate' => cmsCore::m('blogs')->config['update_date'] ? $mod['pubdate'] : $post['pubdate'], 'object_url' => cmsCore::m('blogs')->getPostURL($blog['seolink'], $post['seolink']) ), $post['id'] ); if (!$mod['published']) { $message = str_replace('%user%', cmsUser::getProfileLink(cmsCore::c('user')->login, cmsCore::c('user')->nickname), $_LANG['MSG_POST_UPDATE']); $message = str_replace('%post%', '<a href="'.cmsCore::m('blogs')->getPostURL($blog['seolink'], $post['seolink']).'">'.$mod['title'].'</a>', $message); $message = str_replace('%blog%', '<a href="'.cmsCore::m('blogs')->getBlogURL($blog['seolink']).'">'.$blog['title'].'</a>', $message); cmsUser::sendMessage(USER_UPDATER, $blog['user_id'], $message); cmsCore::addSessionMessage($_LANG['POST_PREMODER_TEXT'], 'info'); } else { cmsCore::addSessionMessage($_LANG['POST_UPDATED'], 'success'); } cmsCore::redirect(cmsCore::m('blogs')->getPostURL($blog['seolink'], $post['seolink'])); } } } ////////// НОВАЯ РУБРИКА / РЕДАКТИРОВАНИЕ РУБРИКИ ////////////////////////// if ($inCore->do == 'newcat' || $inCore->do == 'editcat'){ if(!cmsCore::c('user')->id) { cmsCore::error404(); } if(!cmsCore::isAjax()) { cmsCore::error404(); } $cat = array(); // Для редактирования сначала получаем рубрику if ($inCore->do == 'editcat'){ $cat = cmsCore::c('blog')->getBlogCategory($cat_id); if (!$cat) { cmsCore::halt(); } $id = $cat['blog_id']; } // получаем блог $blog = cmsCore::c('blog')->getBlog($id); if (!$blog) { cmsCore::halt(); } //Проверяем является пользователь хозяином блога или админом if ($blog['user_id'] != cmsCore::c('user')->id && !cmsCore::c('user')->is_admin ) { cmsCore::halt(); } //Если нет запроса на сохранение if (!cmsCore::inRequest('goadd')){ cmsPage::initTemplate('components', 'com_blog_edit_cat')-> assign('mod', $cat)-> assign('form_action', ($inCore->do=='newcat' ? '/blogs/'.$blog['id'].'/newcat.html' : '/blogs/editcat'.$cat['id'].'.html'))-> display(); cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean())); } //Если есть запрос на сохранение if (cmsCore::inRequest('goadd')){ $new_cat['title'] = cmsCore::request('title', 'str', ''); $new_cat['description'] = cmsCore::request('description', 'str', ''); $new_cat['blog_id'] = $blog['id']; if (mb_strlen($new_cat['title'])<3) { cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['CAT_ERR_TITLE'])); } if(!cmsUser::checkCsrfToken()) { cmsCore::halt(); } //новая рубрика if ($inCore->do=='newcat'){ $cat['id'] = cmsCore::c('blog')->addBlogCategory($new_cat); cmsCore::addSessionMessage($_LANG['CAT_IS_ADDED'], 'success'); } //редактирование рубрики if ($inCore->do=='editcat'){ cmsCore::c('blog')->updateBlogCategory($cat['id'], $new_cat); cmsCore::addSessionMessage($_LANG['CAT_IS_UPDATED'], 'success'); } cmsCore::jsonOutput(array('error' => false, 'redirect' => cmsCore::m('blogs')->getBlogURL($blog['seolink'], 1, $cat['id']))); } } ///////////////////////// УДАЛЕНИЕ РУБРИКИ ///////////////////////////////// if ($inCore->do == 'delcat'){ if(!cmsCore::c('user')->id) { cmsCore::error404(); } if(!cmsCore::isAjax()) { cmsCore::error404(); } $cat = cmsCore::c('blog')->getBlogCategory($cat_id); if (!$cat) { cmsCore::halt(); } $blog = cmsCore::c('blog')->getBlog($cat['blog_id']); if (!$blog) { cmsCore::halt(); } if ($blog['user_id'] != cmsCore::c('user')->id && !cmsCore::c('user')->is_admin) { cmsCore::halt(); } if(!cmsUser::checkCsrfToken()) { cmsCore::halt(); } cmsCore::c('blog')->deleteBlogCategory($cat['id']); cmsCore::addSessionMessage($_LANG['CAT_IS_DELETED'], 'success'); cmsCore::jsonOutput(array('error' => false, 'redirect' => cmsCore::m('blogs')->getBlogURL($blog['seolink']))); } ////////////////////////// ПРОСМОТР ПОСТА ////////////////////////////////// if($inCore->do == 'post'){ $post = cmsCore::c('blog')->getPost($seolink); if (!$post){ cmsCore::error404(); } $blog = cmsCore::c('blog')->getBlog($post['blog_id']); // Совместимость со старыми ссылками на клубные посты блога if (!$blog) { $blog_user_id = cmsCore::c('db')->get_field('cms_blogs', "id = '{$post['blog_id']}' AND owner = 'club'", 'user_id'); if($blog_user_id){ cmsCore::redirect('/clubs/'.$blog_user_id.'_'.$post['seolink'].'.html', '301'); } } if (!$blog) { cmsCore::error404(); } // Проверяем сеолинк блога и делаем редирект если он изменился if($bloglink != $blog['seolink']) { cmsCore::redirect(cmsCore::m('blogs')->getPostURL($blog['seolink'], $post['seolink']), '301'); } // право просмотра блога if (!cmsUser::checkUserContentAccess($blog['allow_who'], $blog['user_id'])){ cmsCore::addSessionMessage($_LANG['CLOSED_BLOG'].'<br>'.$_LANG['CLOSED_BLOG_TEXT'], 'error'); cmsCore::redirect('/blogs'); } // право просмотра самого поста if (!cmsUser::checkUserContentAccess($post['allow_who'], $post['user_id'])){ cmsCore::addSessionMessage($_LANG['CLOSED_POST'].'<br>'.$_LANG['CLOSED_POST_TEXT'], 'error'); cmsCore::redirect(cmsCore::m('blogs')->getBlogURL($blog['seolink'])); } if (cmsCore::c('user')->id) { cmsCore::c('page')->addHeadJS('components/blogs/js/blog.js'); } cmsCore::c('page')->addPathway($blog['title'], cmsCore::m('blogs')->getBlogURL($blog['seolink'])); cmsCore::c('page')->addPathway($post['title']); cmsCore::c('page')->setTitle($post['pagetitle'] ? $post['pagetitle'] : $post['title']); cmsCore::c('page')->setDescription($post['meta_desc'] ? $post['meta_desc'] : crop($post['content_html'])); cmsCore::c('page')->setKeywords($post['meta_keys'] ? $post['meta_keys'] : $post['title']); if ($post['cat_id']){ $cat = cmsCore::c('blog')->getBlogCategory($post['cat_id']); } $post['tags'] = cmsTagBar('blogpost', $post['id']); $is_author = (cmsCore::c('user')->id && cmsCore::c('user')->id == $post['user_id']); // увеличиваем кол-во просмотров if (!$is_author) { cmsCore::c('db')->setFlag('cms_blog_posts', $post['id'], 'hits', $post['hits']+1); } cmsPage::initTemplate('components', 'com_blog_view_post')-> assign('post', $post)-> assign('blog', $blog)->assign('cat', $cat)-> assign('is_author', $is_author)-> assign('is_writer', cmsCore::c('blog')->isUserBlogWriter($blog, cmsCore::c('user')->id))-> assign('myblog', (cmsCore::c('user')->id && cmsCore::c('user')->id == $blog['user_id']))-> assign('is_admin', cmsCore::c('user')->is_admin)-> assign('karma_form', cmsKarmaForm('blogpost', $post['id'], $post['rating'], $is_author))-> assign('navigation', cmsCore::c('blog')->getPostNavigation($post['id'], $blog['id'], cmsCore::m('blogs'), $blog['seolink']))-> display(); if ($inCore->isComponentEnable('comments') && $post['comments']) { cmsCore::includeComments(); comments('blog', $post['id'], array(), $is_author); } } ///////////////////////// УДАЛЕНИЕ ПОСТА /////////////////////////////////// if ($inCore->do == 'delpost'){ if(!cmsCore::c('user')->id) { cmsCore::error404(); } if(!cmsCore::isAjax()) { cmsCore::error404(); } $post = cmsCore::c('blog')->getPost($post_id); if (!$post){ cmsCore::halt(); } $blog = cmsCore::c('blog')->getBlog($post['blog_id']); if (!$blog) { cmsCore::halt(); } $myblog = (cmsCore::c('user')->id == $blog['user_id']); // автор блога $is_writer = cmsCore::c('blog')->isUserBlogWriter($blog, cmsCore::c('user')->id); // если не его блог, пользователь не писатель и не админ if (!$myblog && !$is_writer && !cmsCore::c('user')->is_admin ) { cmsCore::halt(); } // проверяем является ли пользователь автором if (!cmsCore::c('user')->is_admin && !$myblog && $post['user_id'] != cmsCore::c('user')->id) { cmsCore::halt(); } if(!cmsUser::checkCsrfToken()) { cmsCore::halt(); } cmsCore::c('blog')->deletePost($post['id']); if (cmsCore::c('user')->id != $post['user_id']){ cmsUser::sendMessage(USER_UPDATER, $post['user_id'], $_LANG['YOUR_POST'].' <b>«'.$post['title'].'»</b> '.$_LANG['WAS_DELETED_FROM_BLOG'].' <b>«<a href="'.cmsCore::m('blogs')->getBlogURL($blog['seolink']).'">'.$blog['title'].'</a>»</b>'); } cmsCore::addSessionMessage($_LANG['POST_IS_DELETED'], 'success'); cmsCore::jsonOutput(array('error' => false, 'redirect' => cmsCore::m('blogs')->getBlogURL($blog['seolink']))); } ///////////////////////// ПУБЛИКАЦИЯ ПОСТА ///////////////////////////////// if ($inCore->do == 'publishpost'){ if(!cmsCore::c('user')->id) { cmsCore::error404(); } if(!cmsCore::isAjax()) { cmsCore::error404(); } $post = cmsCore::c('blog')->getPost($post_id); if (!$post){ cmsCore::halt(); } $blog = cmsCore::c('blog')->getBlog($post['blog_id']); if (!$blog) { cmsCore::halt(); } // публикуют авторы блога и админы if ($blog['user_id'] != cmsCore::c('user')->id && !cmsCore::c('user')->is_admin) { cmsCore::halt(); } cmsCore::c('blog')->publishPost($post_id); $post['seolink'] = cmsCore::m('blogs')->getPostURL($blog['seolink'], $post['seolink']); if ($blog['allow_who'] == 'all' && $post['allow_who'] == 'all') { cmsCore::callEvent('ADD_POST_DONE', $post); } if ($blog['allow_who'] != 'nobody' && $post['allow_who'] != 'nobody'){ cmsActions::log('add_post', array( 'object' => $post['title'], 'user_id' => $post['user_id'], 'object_url' => $post['seolink'], 'object_id' => $post['id'], 'target' => $blog['title'], 'target_url' => cmsCore::m('blogs')->getBlogURL($blog['seolink']), 'target_id' => $blog['id'], 'description' => '', 'is_friends_only' => (int)($blog['allow_who'] == 'friends' || $post['allow_who'] == 'friends') )); } cmsUser::sendMessage(USER_UPDATER, $post['user_id'], $_LANG['YOUR_POST'].' <b>«<a href="'.$post['seolink'].'">'.$post['title'].'</a>»</b> '.$_LANG['PUBLISHED_IN_BLOG'].' <b>«<a href="'.cmsCore::m('blogs')->getBlogURL($blog['seolink']).'">'.$blog['title'].'</a>»</b>'); cmsCore::halt('ok'); } ///////////////////////// УДАЛЕНИЕ БЛОГА /////////////////////////////////// if ($inCore->do == 'delblog'){ if(!cmsCore::c('user')->id) { cmsCore::error404(); } if(!cmsCore::isAjax()) { cmsCore::error404(); } // получаем блог $blog = cmsCore::c('blog')->getBlog($id); if (!$blog) { cmsCore::error404(); } //Проверяем является пользователь хозяином блога или админом if ($blog['user_id'] != cmsCore::c('user')->id && !cmsCore::c('user')->is_admin ) { cmsCore::halt(); } if(!cmsUser::checkCsrfToken()) { cmsCore::halt(); } cmsCore::c('blog')->deleteBlog($blog['id']); cmsCore::addSessionMessage($_LANG['BLOG_IS_DELETED'], 'success'); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/blogs')); } ////////// VIEW POPULAR POSTS ////////////////////////////////////////////// if ($inCore->do=='best'){ cmsCore::c('page')->setTitle($_LANG['POPULAR_IN_BLOGS']); cmsCore::c('page')->addPathway($_LANG['POPULAR_IN_BLOGS']); cmsCore::c('page')->setDescription($_LANG['POPULAR_IN_BLOGS']); // кроме админов в списке только с доступом для всех if(!cmsCore::c('user')->is_admin){ cmsCore::c('blog')->whereOnlyPublic(); } // ограничиваем по рейтингу если надо if(cmsCore::m('blogs')->config['list_min_rating']){ cmsCore::c('blog')->ratingGreaterThan(cmsCore::m('blogs')->config['list_min_rating']); } // всего постов $total = cmsCore::c('blog')->getPostsCount(cmsCore::c('user')->is_admin); //устанавливаем сортировку cmsCore::c('db')->orderBy('p.rating', 'DESC'); cmsCore::c('db')->limitPage($page, cmsCore::m('blogs')->config['perpage']); // сами посты $posts = cmsCore::c('blog')->getPosts(cmsCore::c('user')->is_admin, cmsCore::m('blogs')); if(!$posts && $page > 1){ cmsCore::error404(); } cmsPage::initTemplate('components', 'com_blog_view_posts')-> assign('pagetitle', $_LANG['POPULAR_IN_BLOGS'])-> assign('total', $total)-> assign('ownertype', $ownertype)-> assign('posts', $posts)-> assign('pagination', cmsPage::getPagebar($total, $page, cmsCore::m('blogs')->config['perpage'], '/blogs/popular-%page%.html'))-> assign('cfg', cmsCore::m('blogs')->config)-> display(); } }
/** * Returns the number of approved comments for a particular page. * * @param Page $page The object instance of a particular page. * @return int Number of approved comments for a page. */ function comments_count(&$page) { return (int) count(comments($page)); }
<?php if (!isset($_GET['cmd'])) { $_GET['cmd'] = NULL; } switch ($_GET['cmd']) { default: comments(); break; case 'delete': delete(); break; case 'edit': edit(); break; } function comments() { global $domain, $db, $action; echo '<div class="heading"> <h2>Manage Game Comments</h2> </div> <br clear="all"> <table id="table"> <thead> <tr> <th>ID</th> <th>Game ID</th> <th colspan="2">Comment</th> </tr> </thead>
function usermaps() { $inCore = cmsCore::getInstance(); $inPage = cmsPage::getInstance(); $inUser = cmsUser::getInstance(); $inCore->loadModel('usermaps'); $model = new cms_model_usermaps(); $do = $inCore->request('do', 'str', 'poi_list'); $cfg = $inCore->loadComponentConfig('usermaps'); if ($do == 'mainmap') { $inPage->setTitle("Карта пользователей"); $cfg['maps_engine'] = strtolower($cfg['maps_engine']); if ($cfg['maps_engine'] == "pmap") { $cfg['maps_engine'] = "publicMap"; } if ($cfg['maps_engine'] == "phybrid") { $cfg['maps_engine'] = "publicMapHybrid"; } ////Центр карты $new_center = explode(",", $cfg['maps_center']); $cfg['maps_center'] = $new_center['1'] . " ," . $new_center['0']; // Настройки конкретного пользователя if ($inUser->id != 0) { if ($place = $model->getUserPlace($inUser->id)) { //print_r($place); $cfg['maps_center'] = $place['y'] . " ," . $place['x']; $cfg['main_zoom'] = $cfg['main_zoom'] + 1; $have_userplace = 1; } } //Загружаем структуру точек // $structure = $model->StructureOfPoints(); $smarty = $inCore->initSmarty('modules', 'mod_usermaps_mapview.tpl'); $smarty->assign('cfg', $cfg); $smarty->assign('user_id', $inUser->id); $smarty->assign('structure', $structure); $smarty->assign('have_userplace', $have_userplace); $smarty->display('mod_usermaps_mapview.tpl'); } if ($do == 'imagemap') { $inPage->setTitle("Фото на карте"); $cfg['maps_engine'] = strtolower($cfg['maps_engine']); if ($cfg['maps_engine'] == "pmap") { $cfg['maps_engine'] = "publicMap"; } if ($cfg['maps_engine'] == "phybrid") { $cfg['maps_engine'] = "publicMapHybrid"; } ////Центр карты $new_center = explode(",", $cfg['maps_center']); $cfg['maps_center'] = $new_center['1'] . " ," . $new_center['0']; $photos = $model->ImagesOnMap(); $smarty = $inCore->initSmarty('modules', 'mod_usermaps_imagesview.tpl'); $smarty->assign('cfg', $cfg); $smarty->assign('photos', $photos); $smarty->display('mod_usermaps_imagesview.tpl'); } if ($do == 'add') { $inPage->setTitle("Добавить себя"); $is_send = $inCore->inRequest('coord'); $user_id = $inUser->id; if ($user_id == 0) { $inCore->redirect('/'); return; } $place = $model->getUserPlace($user_id); if ($place) { $inCore->redirect('/usermaps/edit' . $place['id'] . '.html'); return; } if (!$is_send) { $smarty = $inCore->initSmarty('components', 'com_places_add.tpl'); $smarty->assign('cfg', $cfg); $smarty->display('com_places_add.tpl'); return; } if ($is_send) { $coord_raw = $inCore->request('coord', 'str'); $cat_id = $inCore->request('type', 'int'); $coord = explode(",", $coord_raw); $x = $coord[0]; $y = $coord[1]; if ($cat_id == "") { $cat_id = 1; } $place_id = $model->addPlace($user_id, $x, $y, $cat_id); if ($place_id) { if ($cat_id == "1") { cmsActions::log('add_place', array('object' => 'себя на карту', 'object_url' => '/usermaps/view' . $place_id . '.html', 'object_id' => $place_id, 'target' => '', 'target_url' => '/usermaps/view' . $place_id . '.html', 'target_id' => 0, 'description' => '')); } cmsCore::addSessionMessage('Ваше местоположение добавлено!', 'success'); $inCore->redirect('/usermaps/edit' . $place_id . '.html'); return; } else { cmsCore::addSessionMessage('Ошибка добавления! ' . $place_id . ' ', 'error'); } $inCore->redirect('/usermaps/edit' . $place['id'] . '.html'); exit; } } if ($do == 'edit') { $user_id = $inUser->id; $place_id = $inCore->request('id', 'int', 0); $is_send = $inCore->inRequest('coord'); if (!$place_id) { cmsCore::addSessionMessage('Ошибка запроса! ' . $place_id . ' ', 'error'); } else { $place = $model->getPlace($place_id); } if ($inUser->id == 0) { cmsCore::addSessionMessage('Ошибка запроса! ' . $place_id . ' ', 'error'); $inCore->redirect('/'); } if (!$place || $inUser->id != $place['user_id']) { if (!$inUser->is_admin) { cmsCore::addSessionMessage('Ошибка запроса! ' . $place_id . ' ', 'error'); $inCore->redirectBack(); exit; } } //Если редактирующий админ и это не его точка сохраняем автора точки if ($inUser->is_admin and $user_id != $place['user_id']) { $user_id = $place['user_id']; } if ($is_send) { $coord_raw = $inCore->request('coord', 'str'); $title = $inCore->request('title', 'str'); $body = $inCore->request('body', 'str'); $cat_id = $inCore->request('cat_id', 'str'); if ($cat_id == "") { $cat_id = 1; } $coord = explode(",", $coord_raw); $x = $coord[0]; $y = $coord[1]; $point = $model->updatePlace($place['id'], $user_id, $x, $y, $cat_id, $title, $body); if ($point) { if ($place['type_id'] == "1" and mysql_result(mysql_query("SELECT target_url FROM cms_actions_log ORDER BY id DESC LIMIT 1"), 0) != '/usermaps/view' . $place['id'] . '.html') { cmsActions::log('edit_place', array('object' => 'своего местоположения', 'object_url' => '/usermaps/view' . $place['id'] . '.html', 'object_id' => $place['id'], 'target' => '', 'target_url' => '/usermaps/view' . $place['id'] . '.html', 'target_id' => 0, 'description' => '')); } cmsCore::addSessionMessage('Местоположение вашей точки изменено!', 'success'); } else { cmsCore::addSessionMessage('Ошибка добавления! ' . $place['id'] . ' ', 'error'); } $inCore->redirect('/usermaps/edit' . $place['id'] . '.html'); exit; } if (!$is_send) { $poi = $model->getPoi($place['type_id']); if (!$poi) { $icon = "unknow"; } else { $icon = $poi['name'] . "_big"; } $inPage->setTitle("Редактирование"); $categores = $model->getCategores(NULL); $smarty = $inCore->initSmarty('components', 'com_places_edit.tpl'); $smarty->assign('cfg', $cfg); $smarty->assign('place', $place); $smarty->assign('categores', $categores); $smarty->assign('icon', $icon); $smarty->display('com_places_edit.tpl'); return; } } if ($do == "delete") { $id = $inCore->request('id', 'int', 0); $place = $model->getPlace($id); if (!$place) { $inCore->redirectBack(); return; } if ($place['user_id'] == $inUser->id or $inUser->is_admin) { $delete = $model->deletePlace($place['id']); if ($delete) { cmsCore::addSessionMessage('Точка удалена', 'success'); $inCore->redirect('/usermaps/poi.html'); return; } else { cmsCore::addSessionMessage('Ошибка при удалении', 'success'); $inCore->redirectBack(); return; } } else { $inCore->redirectBack(); return; } } if ($do == "view") { $id = $inCore->request('id', 'int', 0); $user_id = $inUser->id; $place = $model->getPlace($id); //Если точки нет отправляем назад if (!$place) { $inCore->redirectBack(); return; } //Получаем описание категории и стиль иконки $poi = $model->getPoi($place['type_id']); if (!$poi) { $icon = "unknow"; } else { $icon = $poi['name'] . "_big"; } //Если нужно чертить треки ищем пользовательскую точку if ($place['type_id'] != "1" and $user_id != 0) { $userplace = $model->getUserPlace($user_id); } //Если пользовательская точка то заголовком делаем имя пользователя if ($place['type_id'] == "1") { $user = $model->getUser($place['user_id']); $title = $user['nickname']; } else { $title = $place['title']; } //Назначаем переменные $author = $model->getUser($place['user_id']); $category = $model->getCategory($place['type_id']); $arround = $model->getArround($place["id"]); //Если валаделец или админ говорим что автор и может редактировать if ($place['user_id'] == $user_id or $inUser->is_admin) { $is_author = TRUE; } //Проверяем чекины if ($cfg['maps_chekin']) { $checkin = $model->getChekin($place['id']); $usercheck = $model->getUserChekin($place['id'], $inUser->id); } /*FOTOLIB*/ include 'fotolib.class.php'; $foto = new FotoLib(); //Проверяем можем ли добавлять фото $allow_add_foto = $foto->addAcces("usermaps"); if ($_FILES) { $foto->uploadFoto($_FILES, "usermaps", $place['id']); } //Для совместимости с YandexMap API v2 $cfg['maps_engine'] = strtolower($cfg['maps_engine']); if ($cfg['maps_engine'] == "pmap") { $cfg['maps_engine'] = "publicMap"; } if ($cfg['maps_engine'] == "phybrid") { $cfg['maps_engine'] = "publicMapHybrid"; } //END $images = $foto->loadImages("usermaps", $place['id']); $inPage->setTitle($title); $smarty = $inCore->initSmarty('components', 'com_places_view.tpl'); $smarty->assign('cfg', $cfg); $smarty->assign('place', $place); $smarty->assign('userplace', $userplace); $smarty->assign('checkin', $checkin); $smarty->assign('usercheck', $usercheck); $smarty->assign('icon', $icon); $smarty->assign('title', $title); $smarty->assign('author', $author); $smarty->assign('category', $category); $smarty->assign('is_author', $is_author); $smarty->assign('images', $images); //fotolib $smarty->assign('allow_add_foto', $allow_add_foto); //fotolib $smarty->assign('user', $model->getUser($inUser->id)); $smarty->assign('arround', $arround); $smarty->display('com_places_view.tpl'); $inCore->includeComments(); comments('point', $id); return; } if ($do == "userpoint") { $user_id = $inUser->id; if ($user_id == 0) { $inCore->redirectBack(); return; } $uid = $inCore->request('uid', 'int', 0); $userplace = $model->getUserPlace($uid); if (!$userplace) { $inCore->redirectBack(); return; } $inCore->redirect("/usermaps/view" . $userplace['id'] . ".html"); return; } // РАБОТА С POI if ($do == "poi_list") { $inPage->setTitle("Последние добавленные точки интересов"); $poi = $model->getAllPoi(NULL); $smarty = $inCore->initSmarty('components', 'com_places_add.tpl'); $smarty->assign('cfg', $cfg); $smarty->assign('poi', $poi); $smarty->display('com_places_view_poi.tpl'); return; } if ($do == "poi_add") { $is_send = $inCore->inRequest('coord'); $user_id = $inUser->id; if ($user_id == 0) { $inCore->redirect("/"); return; } if (!$is_send) { $categores = $model->getCategores(NULL); $inPage->setTitle("Добавить POI"); $smarty = $inCore->initSmarty('components', 'com_places_add_poi.tpl'); $smarty->assign('cfg', $cfg); $smarty->assign('categores', $categores); $smarty->display('com_places_add_poi.tpl'); return; } if ($is_send) { $coord_raw = $inCore->request('coord', 'str'); $cat_id = $inCore->request('cat_id', 'int'); $coord = explode(",", $coord_raw); $x = $coord[0]; $y = $coord[1]; $title = $inCore->request('title', 'str'); $body = $inCore->request('body', 'str'); if ($cat_id == "" or $x == "" or $y == "" or $title == "") { $inCore->redirectBack(); } $place_id = $model->addPoi($user_id, $x, $y, $cat_id, $title, $body); if ($place_id) { if ($place['type_id'] == "1" and mysql_result(mysql_query("SELECT target_url FROM cms_actions_log ORDER BY id DESC LIMIT 1"), 0) != '/usermaps/view' . $place['id'] . '.html') { cmsActions::log('add_place', array('object' => 'себя на карту', 'object_url' => '/usermaps/view' . $place_id . '.html', 'object_id' => $place_id, 'target' => '', 'target_url' => '/usermaps/view' . $place_id . '.html', 'target_id' => 0, 'description' => '')); } cmsCore::addSessionMessage('Ваша точка добавлена!', 'success'); } else { cmsCore::addSessionMessage('Ошибка добавления! ' . $place_id . ' ', 'error'); } $inCore->redirect('/usermaps/poi.html'); exit; } } if ($do == "ajax_checkin") { //INSERT INTO `cms_actions` (`component`, `name`, `title`, `message`, `is_tracked`, `is_visible`) VALUES //('usermaps', 'chekin', 'Добавление отметки', 'отметился в %s', 1, 1); $user_id = $inUser->id; $place_id = $inCore->request('place_id', 'int', 0); $place = $model->getPlace($place_id); if ($user_id != 0 and $place and $place['type_id'] != 1) { if ($model->addChekin($place_id, $user_id, time())) { //INSERT INTO `cms_actions` (`component` ,`name` ,`title` ,`message` ,`is_tracked` ,`is_visible`) //VALUES ('usermaps', 'add_checkin', 'Новая отметка', 'отметился в точке %s|', '1', '1'); $category = $model->getCategory($place['type_id']); cmsActions::log('add_checkin', array('object' => str_replace('""', '"', $category['title'] . ' "' . $place['title'] . '"'), 'object_url' => '/usermaps/view' . $place_id . '.html', 'object_id' => $place_id, 'target' => '', 'target_url' => '/usermaps/view' . $place_id . '.html', 'target_id' => 0, 'description' => '')); echo 'ok'; } else { echo 'Ошибка базы данных'; } } exit; } //Настройки пользователей if ($do == "usersettings") { if ($inUser->id == 0) { $inCore->redirectBack(); return; } $maps_user_del = $inCore->request('maps_user_del', 'str'); $maps_chekin_del = $inCore->request('maps_chekin_del', 'str'); if ($maps_user_del == "on") { $place = $model->getUserPlace($inUser->id); $model->deletePlace($place['id']); cmsCore::addSessionMessage('Ваша точка удалена с карты!', 'success'); } if ($maps_chekin_del == "on") { $model->deleteUserChekin($inUser->id); cmsCore::addSessionMessage('Ваши отметки о посещении удалены с карты!', 'success'); } $inPage->setTitle("Настройки"); $smarty = $inCore->initSmarty('components', 'com_places_usersettings.tpl'); $smarty->assign('cfg', $cfg); $smarty->display('com_places_usersettings.tpl'); } //РАБОТА С КАТЕГОРИЯМИ if ($do == "category_view") { // $cfg['maps_engine'] = strtolower($cfg['maps_engine']); // $cfg['maps_center'] = '['.$cfg['maps_center'].']'; $id = $inCore->request('id', 'int', 0); $category = $model->getCategory($id); if (!$category and $category != 0) { $inCore->redirectBack(); } //Обработка POST if ($inUser->is_admin) { $is_send = $inCore->inRequest('title'); if ($is_send) { $title = $inCore->request('title', 'str'); $name = $inCore->request('name', 'str'); if (!$title || !$name) { cmsCore::addSessionMessage('Что то было не заполнено!', 'error'); } else { if ($id == "0") { $is_root = 1; } $root_id = $id; $add = $model->addCategory($name, $title, $is_root, $root_id); if ($add) { cmsCore::addSessionMessage('Категория добавлена!', 'success'); } else { cmsCore::addSessionMessage('Что то пошло не так!', 'error'); } } } } if ($category['is_root'] == 0 and $category['root_id'] != 0 or $category['id'] == 1) { $inPage->setTitle("Точки в категории " . $category['title']); $categores = $model->getAllCategores(); $pois = $model->getPois($id); $smarty = $inCore->initSmarty('components', 'com_places_mainmap.tpl'); $smarty->assign('cfg', $cfg); $smarty->assign('user_id', "-1"); // $smarty->assign('userplace', $userplace); $smarty->assign('categores', $categores); $smarty->assign('pois', $pois); $smarty->display('com_places_mainmap.tpl'); } elseif ($category['id'] != 0) { $inPage->setTitle("Раздел " . $category['title']); $subcat = $model->getCategores($category['id']); $smarty = $inCore->initSmarty('components', 'com_places_view_category.tpl'); $smarty->assign('root', $category); $smarty->assign('subcat', $subcat); $smarty->assign('is_admin', $inUser->is_admin); $smarty->display('com_places_view_category.tpl'); } else { $inPage->setTitle("Категории"); $subcat = $model->getCategores("0"); $smarty = $inCore->initSmarty('components', 'com_places_view_root.tpl'); $smarty->assign('subcat', $subcat); $smarty->assign('user_id', $inUser->id); $smarty->assign('is_admin', $inUser->is_admin); $smarty->display('com_places_view_root.tpl'); } return; } if ($do == "ajax_eventpoint") { $id = $inCore->request('event_id', 'int', 0); $type = $inCore->request('event_type', 'str'); $coord_raw = explode(",", $inCore->request('new_coord', 'str')); $x = $coord_raw[0]; $y = $coord_raw[1]; if ($type == "photo") { $photo = mysql_fetch_assoc(mysql_query("SELECT * FROM cms_photo_files WHERE id = {$id}")); if ($photo['user_id'] == $inUser->id or $inUser->is_admin) { if (mysql_num_rows(mysql_query("SELECT * FROM cms_places_events WHERE object_id = {$id} AND `object_type` = '{$type}'")) != 0) { $sql = mysql_query("UPDATE cms_places_events SET x = {$x} , y = {$y} WHERE object_id = {$id} AND `object_type` = '{$type}' LIMIT 1"); } else { $sql = mysql_query("INSERT INTO cms_places_events (`object_id`, `object_type`, `x`, `y`) VALUES ('{$id}', '{$type}', '{$x}', '{$y}')"); } if ($sql) { echo "ok"; } else { print mysql_error(); } } else { echo 'Ошибка доступа'; } } exit; } if ($do == "geolocation") { $inPage->setTitle("Геолокация"); $smarty = $inCore->initSmarty('components', 'com_places_geolocation.tpl'); $smarty->assign('cfg', $cfg); $smarty->display('com_places_geolocation.tpl'); } if ($do == "ajax_arround") { $coord_raw = explode(",", $inCore->request('coord', 'str')); $group = $inCore->request('group', 'int'); $objects = $inCore->request('objects', 'int'); $distance = $inCore->request('distance', 'int'); $x = $coord_raw[0]; $y = $coord_raw[1]; $points = $model->getGeoArround($x, $y, $group, $objects, $distance); if ($points) { ob_start(); $smarty = $inCore->initSmarty('components', 'com_places_geo_arround.tpl'); $smarty->assign('points', $points); $smarty->display('com_places_geo_arround.tpl'); $html = ob_get_clean(); } else { $html = "ничего не найдено"; } print $html; exit; } if ($do == "ajax_structure") { $bound = $coord_raw = explode(",", $inCore->request('bound', 'str')); $y_max = $bound[0]; $x_max = $bound[1]; $y_min = $bound[2]; $x_min = $bound[3]; print json_encode($model->StructureOfPoints($y_min, $x_min, $y_max, $x_max)); //print_r($bound); exit; } // FOTOLIB if ($do == "imagerotate") { $side = $md5 = $inCore->request('side', 'str'); $image_id = $inCore->request('image_id', 'int'); include 'fotolib.class.php'; $foto = new FotoLib(); $foto->Rotate($side, $image_id); $inCore->redirectBack(); exit; } }