%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.149 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/old/components/com_kunena/views/category/ |
Upload File : |
<?php /** * Kunena Component * @package Kunena.Site * @subpackage Views * * @copyright (C) 2008 - 2014 Kunena Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link http://www.kunena.org **/ defined ( '_JEXEC' ) or die (); /** * Category View */ class KunenaViewCategory extends KunenaView { protected $pagination = null; function displayDefault($tpl = null) { $this->Itemid = $this->get ( 'Itemid' ); $this->category = $this->get ( 'Category' ); if (! $this->category->authorise('read')) { $this->setError($this->category->getError()); } $this->topics = $this->get ( 'Topics' ); $this->total = $this->get ( 'Total' ); $this->topicActions = $this->get ( 'TopicActions' ); $this->actionMove = $this->get ( 'ActionMove' ); $this->moderators = $this->get ( 'Moderators' ); $this->message_ordering = $this->me->getMessageOrdering(); $this->categories = $this->get ( 'Categories' ); $this->pending = $this->get ( 'UnapprovedCount' ); $this->sections = isset($this->categories[0]) ? $this->categories[0] : array(); $errors = $this->getErrors(); if ($errors) { $this->displayNoAccess($errors); return; } $this->parentCategory = $this->category->getParent(); $this->_prepareDocument('default'); $this->display ($tpl); } function displayList($tpl = null) { $this->Itemid = $this->get ( 'Itemid' ); $this->category = $this->get ( 'Category' ); if ($this->category->id && ! $this->category->authorise('read')) { $this->setError($this->category->getError()); } $this->message_ordering = $this->me->getMessageOrdering(); $this->categories = $this->get ( 'Categories' ); $this->pending = $this->get ( 'UnapprovedCount' ); $this->moderators = $this->get ( 'Moderators' ); $this->sections = isset($this->categories[0]) ? $this->categories[0] : array(); if ($this->category->isSection()) { // TODO: turn this on: /* if ($this->me->isAdmin($this->category)) { $url = "index.php?option=com_kunena&view=category&layout=manage&catid={$this->category->id}"; $this->category_manage = $this->getButton($url, 'manage', 'category', 'moderation'); }*/ } if ($this->me->exists()) { $this->markAllReadURL = KunenaRoute::_(); } $errors = $this->getErrors(); if ($errors) { $this->displayNoAccess($errors); return; } $this->_prepareDocument('list'); $this->display ($tpl); } function displayUser($tpl = null) { $this->Itemid = $this->get ( 'Itemid' ); $this->categories = $this->get ( 'LastestCategories' ); $this->categoryActions = $this->get ( 'CategoryActions' ); $errors = $this->getErrors(); if ($errors) { $this->displayNoAccess($errors); } else { $this->_prepareDocument('user'); $this->display ($tpl); } } function displayManage($tpl) { $admin = KunenaForumCategoryHelper::getCategories(false, false, 'admin'); if (empty($admin)) { $this->setError(JText::_('COM_KUNENA_NO_ACCESS')); $this->displayNoAccess($this->getErrors()); return; } KunenaFactory::loadLanguage('com_kunena', 'admin'); $this->categories = $this->get ( 'AdminCategories' ); $this->navigation = $this->get ( 'AdminNavigation' ); $header = JText::_('COM_KUNENA_ADMIN'); $this->header = $header; $this->setTitle ( $header ); $this->display ($tpl); } function displayCreate() { $this->displayEdit(); } function displayEdit() { $this->category = $this->get ( 'AdminCategory' ); if ($this->category === false) { $this->setError(JText::_('COM_KUNENA_NO_ACCESS')); $this->displayNoAccess($this->getErrors()); return; } KunenaFactory::loadLanguage('com_kunena', 'admin'); $this->options = $this->get ( 'AdminOptions' ); $this->moderators = $this->get ( 'AdminModerators' ); $header = $this->category->exists() ? JText::sprintf('COM_KUNENA_CATEGORY_EDIT', $this->escape($this->category->name)) : JText::_('COM_KUNENA_CATEGORY_NEW'); $this->header = $header; $this->setTitle ( $header ); $this->display (); } function getLastPostLink($category, $content = null, $title = null, $class = null) { $lastTopic = $category->getLastTopic(); $channels = $category->getChannels(); if (!isset($channels[$lastTopic->category_id])) $category = $lastTopic->getCategory(); $uri = $lastTopic->getUri($category, 'last'); if (!$content) $content = KunenaHtmlParser::parseText($category->getLastTopic()->subject, 20); if ($title === null) $title = JText::sprintf('COM_KUNENA_TOPIC_LAST_LINK_TITLE', $this->escape($category->getLastTopic()->subject)); return JHtml::_('kunenaforum.link', $uri, $content, $title, $class, 'nofollow'); } public function getCategoryIcon($category, $thumb = false) { if (! $thumb) { if ($category->getNewCount()) { // Check Unread Cat Images if (is_file ( JPATH_ROOT."/media/kunena/{$this->config->catimagepath}/{$category->id}_on.gif" )) { return "<img src=\"" . JUri::root(true) . "/media/kunena/{$this->config->catimagepath}/{$category->id}_on.gif\" border=\"0\" class='kforum-cat-image' alt=\" \" />"; } else { return $this->getIcon ( $this->ktemplate->categoryIcons[1], JText::_ ( 'COM_KUNENA_GEN_FORUM_NEWPOST' ) ); } } else { // Check Read Cat Images if (is_file ( JPATH_ROOT."/media/kunena/{$this->config->catimagepath}/{$category->id}_off.gif" )) { return "<img src=\"" . JUri::root(true) . "/media/kunena/{$this->config->catimagepath}/{$category->id}_off.gif\" border=\"0\" class='kforum-cat-image' alt=\" \" />"; } else { return $this->getIcon ( $this->ktemplate->categoryIcons[0], JText::_ ( 'COM_KUNENA_GEN_FORUM_NOTNEW' ) ); } } } elseif ($this->config->showchildcaticon) { if ($category->getNewCount()) { // Check Unread Cat Images if (is_file ( JPATH_ROOT."/media/kunena/{$this->config->catimagepath}/{$category->id}_on_childsmall.gif" )) { return "<img src=\"" . JUri::root(true) . "/media/kunena/{$this->config->catimagepath}/{$category->id}_on_childsmall.gif\" border=\"0\" class='kforum-cat-image' alt=\" \" />"; } else { return $this->getIcon ( $this->ktemplate->categoryIcons[1].'-sm', JText::_ ( 'COM_KUNENA_GEN_FORUM_NEWPOST' ) ); } } else { // Check Read Cat Images if (is_file ( JPATH_ROOT."/media/kunena/{$this->config->catimagepath}/{$category->id}_off_childsmall.gif" )) { return "<img src=\"" . JUri::root(true) . "/media/kunena/{$this->config->catimagepath}/{$category->id}_off_childsmall.gif\" border=\"0\" class='kforum-cat-image' alt=\" \" />"; } else { return $this->getIcon ( $this->ktemplate->categoryIcons[0].'-sm', JText::_ ( 'COM_KUNENA_GEN_FORUM_NOTNEW' ) ); } } } return ''; } public function displaySectionField($field) { return $this->section->displayField($field); } public function displayCategoryField($field) { return $this->category->displayField($field); } function displayInfoMessage() { $this->common->header = $this->escape($this->category->name); $this->common->body = '<p>'.JText::sprintf('COM_KUNENA_VIEW_CATEGORIES_INFO_EMPTY', $this->escape($this->category->name)).'</p>'; $this->common->html = true; echo $this->common->display('default'); } function displaySection($section) { $this->parentcategory = $this->category; $this->section = $section; $this->sectionURL = KunenaRoute::_("index.php?option=com_kunena&view=category&catid={$this->section->id}"); $this->sectionRssURL = $this->config->enablerss ? KunenaRoute::_("index.php?option=com_kunena&view=category&catid={$this->section->id}&format=feed") : ''; $this->sectionButtons = array(); if ($this->me->exists()) { $token = '&' . JSession::getFormToken() . '=1'; $this->sectionButtons['markread'] = $this->getButton("index.php?option=com_kunena&view=category&task=markread&catid={$this->section->id}{$token}", 'markread', 'section', 'user'); } echo $this->loadTemplateFile('section'); $this->rowno = 0; $this->category = $this->parentcategory; } function displayCategory($category) { KUNENA_PROFILER ? $this->profiler->start('function '.__CLASS__.'::'.__FUNCTION__.'()') : null; $this->rowno++; $this->category = $category; $usertype = $this->me->getType($this->category->id, true); $catid = $category->id; $lastPost = $category->getLastTopic(); // TODO: add context (options, template) to caching $this->cache = true; $cache = JFactory::getCache('com_kunena', 'output'); $cachekey = "list.item.{$this->getTemplateMD5()}.{$usertype}.{$catid}.{$lastPost->last_post_id}"; $cachegroup = 'com_kunena.category'; // FIXME: enable caching after fixing the issues $contents = false; //$cache->get($cachekey, $cachegroup); if (!$contents) { $this->categoryURL = KunenaRoute::_("index.php?option=com_kunena&view=category&catid={$catid}"); $this->categoryRssURL = $this->config->enablerss ? KunenaRoute::_("index.php?option=com_kunena&view=category&catid={$catid}&format=feed") : ''; $this->moderators = $this->config->listcat_show_moderators ? $category->getModerators(false) : array(); $this->subcategories = empty($this->categories [$catid]) ? array() : $this->categories [$catid]; $this->lastPost = $lastPost->exists(); if ($this->lastPost) { $this->lastUser = KunenaFactory::getUser((int) $lastPost->last_post_userid); $this->lastUserName = $lastPost->last_post_guest_name ? $lastPost->last_post_guest_name : $this->lastUser->getName(); $this->lastPostSubject = $lastPost->subject; $this->lastPostTime = $lastPost->last_post_time; } $contents = $this->loadTemplateFile('category'); if ($usertype == 'guest') $contents = preg_replace_callback('|\[K=(\w+)(?:\:(\w+))?\]|', array($this, 'fillCategoryInfo'), $contents); // FIXME: enable caching after fixing the issues //if ($this->cache) $cache->store($contents, $cachekey, $cachegroup); } elseif ($usertype == 'guest') { echo $contents; return; } $contents = preg_replace_callback('|\[K=(\w+)(?:\:(\w+))?\]|', array($this, 'fillCategoryInfo'), $contents); KUNENA_PROFILER ? $this->profiler->stop('function '.__CLASS__.'::'.__FUNCTION__.'()') : null; echo $contents; } function displayTopicActions($attributes='', $id=null) { return JHtml::_('select.genericlist', $this->topicActions, 'task', $attributes, 'value', 'text', null, $id); } function displayCategoryActions() { if (!$this->category->isSection()) { echo $this->getCategoryActions(); } } function getCategoryActions() { $token = '&' . JSession::getFormToken() . '=1'; $this->categoryButtons = array(); // Is user allowed to post new topic? if ($this->category->getNewTopicCategory()->exists()) { $url = "index.php?option=com_kunena&view=topic&layout=create&catid={$this->category->id}"; $this->categoryButtons['create'] = $this->getButton($url, 'create', 'topic', 'communication'); } // Is user allowed to mark forums as read? if ($this->me->exists() && $this->total) { $url = "index.php?option=com_kunena&view=category&task=markread&catid={$this->category->id}{$token}"; $this->categoryButtons['markread'] = $this->getButton($url, 'markread', 'category', 'user'); } // Is user allowed to subscribe category? if ($this->category->authorise ( 'subscribe', null, true )) { $subscribed = $this->category->getSubscribed($this->me->userid); if (!$subscribed) { $url = "index.php?option=com_kunena&view=category&task=subscribe&catid={$this->category->id}{$token}"; $this->categoryButtons['subscribe'] = $this->getButton($url, 'subscribe', 'category', 'user'); } else { $url = "index.php?option=com_kunena&view=category&task=unsubscribe&catid={$this->category->id}{$token}"; $this->categoryButtons['unsubscribe'] = $this->getButton($url, 'unsubscribe', 'category', 'user'); } } $contents = $this->loadTemplateFile('actions'); return $contents; } function fillCategoryInfo($matches) { switch ($matches[1]) { case 'ROW': return $this->rowno & 1 ? 'odd' : 'even'; case 'CATEGORY_ICON': return $this->getCategoryIcon($this->category); case 'CATEGORY_NEW_SUFFIX': $new = empty($matches[2]) ? $this->category->getNewCount() : KunenaForumCategoryHelper::get($matches[2])->getNewCount(); return $new ? '-new' : ''; case 'CATEGORY_NEW_COUNT': $new = empty($matches[2]) ? $this->category->getNewCount() : KunenaForumCategoryHelper::get($matches[2])->getNewCount(); return $new ? '<sup class="knewchar">(' . $new . ' ' . JText::_('COM_KUNENA_A_GEN_NEWCHAR') . ")</sup>" : ''; case 'DATE': $date = new KunenaDate($matches[2]); return $date->toSpan('config_post_dateformat', 'config_post_dateformat_hover'); } } function displayCategories() { if ($this->sections) { $this->subcategories = true; echo $this->loadTemplateFile('subcategories'); } } function displayRows() { $lasttopic = NULL; $this->position = 0; // Run events $params = new JRegistry(); $params->set('ksource', 'kunena'); $params->set('kunena_view', 'category'); $params->set('kunena_layout', 'default'); $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('kunena'); $dispatcher->trigger('onKunenaPrepare', array ('kunena.topics', &$this->topics, &$params, 0)); foreach ( $this->topics as $this->topic ) { $this->position++; $usertype = $this->me->getType($this->category->id, true); // TODO: add context (options, template) to caching $this->cache = true; $cache = JFactory::getCache('com_kunena', 'output'); $cachekey = "{$this->getTemplateMD5()}.{$usertype}.c{$this->category->id}.t{$this->topic->id}.p{$this->topic->last_post_id}"; $cachegroup = 'com_kunena.topics'; // FIXME: enable caching after fixing the issues $contents = false; //$cache->get($cachekey, $cachegroup); if (!$contents) { if ($this->category->id != $this->topic->category_id) { $this->categoryLink = $this->getCategoryLink($this->topic->getCategory()->getParent()) . ' / ' . $this->getCategoryLink($this->topic->getCategory()); } else { $this->categoryLink = null; } $this->firstPostAuthor = $this->topic->getfirstPostAuthor(); $this->firstPostTime = $this->topic->first_post_time; $this->firstUserName = $this->topic->first_post_guest_name; $this->lastPostAuthor = $this->topic->getLastPostAuthor(); $this->lastPostTime = $this->topic->last_post_time; $this->lastUserName = $this->topic->last_post_guest_name; $this->keywords = $this->topic->getKeywords(false, ', '); $this->module = $this->getModulePosition('kunena_topic_' . $this->position); $this->message_position = $this->topic->getTotal() - ($this->topic->unread ? $this->topic->unread - 1 : 0); $this->pages = ceil ( $this->topic->getTotal() / $this->config->messages_per_page ); if ($this->config->avataroncat) { $this->topic->avatar = KunenaFactory::getUser($this->topic->last_post_userid)->getAvatarImage('klist-avatar', 'list'); } if (is_object($lasttopic) && $lasttopic->ordering != $this->topic->ordering) { $this->spacing = 1; } else { $this->spacing = 0; } $contents = $this->loadTemplateFile('row'); if ($usertype == 'guest') $contents = preg_replace_callback('|\[K=(\w+)(?:\:([\w-_]+))?\]|', array($this, 'fillTopicInfo'), $contents); // FIXME: enable caching after fixing the issues //if ($this->cache) $cache->store($contents, $cachekey, $cachegroup); } if ($usertype != 'guest') { $contents = preg_replace_callback('|\[K=(\w+)(?:\:([\w-_]+))?\]|', array($this, 'fillTopicInfo'), $contents); } echo $contents; $lasttopic = $this->topic; } } function fillTopicInfo($matches) { switch ($matches[1]) { case 'ROW': return $matches[2].($this->position & 1 ? 'odd' : 'even').($this->topic->ordering ? " {$matches[2]}sticky" : ''); case 'TOPIC_ICON': return $this->topic->getIcon(); case 'TOPIC_NEW_COUNT': return $this->topic->unread ? $this->getTopicLink ( $this->topic, 'unread', '<sup class="kindicator-new">(' . $this->topic->unread . ' ' . JText::_('COM_KUNENA_A_GEN_NEWCHAR') . ')</sup>' ) : ''; case 'DATE': $date = new KunenaDate($matches[2]); return $date->toSpan('config_post_dateformat', 'config_post_dateformat_hover'); } } function getTopicClass($prefix='k', $class='topic') { $class = $prefix . $class; $txt = $class . (($this->position & 1) + 1); if ($this->topic->ordering) { $txt .= '-stickymsg'; } if ($this->topic->getCategory()->class_sfx) { $txt .= ' ' . $class . (($this->position & 1) + 1); if ($this->topic->ordering) { $txt .= '-stickymsg'; } $txt .= $this->escape($this->topic->getCategory()->class_sfx); } if ($this->topic->hold == 1) $txt .= ' '.$prefix.'unapproved'; else if ($this->topic->hold) $txt .= ' '.$prefix.'deleted'; return $txt; } function displayManageActions($attributes='', $id=null) { $options = array(); $options[] = JHtml::_('select.option', '', JText::_('COM_KUNENA_SELECT_BATCH_OPTION') ); $options[] = JHtml::_('select.option', 'publish', JText::_('COM_KUNENA_PUBLISH') ); $options[] = JHtml::_('select.option', 'unpublish', JText::_('COM_KUNENA_UNPUBLISH') ); $options[] = JHtml::_('select.option', 'lock', JText::_('COM_KUNENA_LOCK') ); $options[] = JHtml::_('select.option', 'unlock', JText::_('COM_KUNENA_UNLOCK') ); $options[] = JHtml::_('select.option', 'review', JText::_('COM_KUNENA_ENABLE_REVIEW') ); $options[] = JHtml::_('select.option', 'unreview', JText::_('COM_KUNENA_DISABLE_REVIEW') ); $options[] = JHtml::_('select.option', 'allow_anomymous', JText::_('COM_KUNENA_ALLOW_ANONYMOUS') ); $options[] = JHtml::_('select.option', 'deny_anonymous', JText::_('COM_KUNENA_DISALLOW_ANONYMOUS') ); $options[] = JHtml::_('select.option', 'allow_polls', JText::_('COM_KUNENA_ALLOW_POLLS') ); $options[] = JHtml::_('select.option', 'deny_polls', JText::_('COM_KUNENA_DISALLOW_POLLS') ); $options[] = JHtml::_('select.option', 'delete', JText::_('COM_KUNENA_DELETE') ); return JHtml::_('select.genericlist', $options, 'batch', $attributes, 'value', 'text', null, $id ); } function getPagination($maxpages) { $pagination = new KunenaPagination($this->total, $this->state->get('list.start'), $this->state->get('list.limit')); $pagination->setDisplayedPages($maxpages); return $pagination->getPagesLinks(); } public function getMarkReadButtonURL($category_id, $numTopics) { // Is user allowed to mark forums as read? if ($this->me->exists() && $numTopics) { $token = '&' . JSession::getFormToken() . '=1'; $url = KunenaRoute::_("index.php?option=com_kunena&view=category&task=markread&catid={$category_id}{$token}"); return $url; } } public function getCategoryRSSURL($catid, $xhtml = true) { if ($this->config->enablerss) { $params = '&catid=' . (int) $catid; return KunenaRoute::_ ( "index.php?option=com_kunena&view=topics&format=feed&layout=default&mode=topics{$params}", $xhtml ); } return; } protected function _prepareDocument($type){ if ( $type=='default' ) { $page = intval ( $this->state->get('list.start') / $this->state->get('list.limit') ) + 1; $pages = intval ( ($this->total-1) / $this->state->get('list.limit') ) + 1; $this->headerText = $this->title = JText::_('COM_KUNENA_THREADS_IN_FORUM').': '. $this->category->name; $title = JText::sprintf('COM_KUNENA_VIEW_CATEGORY_DEFAULT', $this->category->name) . " ({$page}/{$pages})"; $this->setTitle( $title ); $keywords = $this->escape ( JText::_('COM_KUNENA_CATEGORIES') . ", {$this->parentCategory->name}, {$this->category->name}, {$this->config->board_title}" ); $this->setKeywords ( $keywords ); $description = $this->escape ( "{$this->parentCategory->name} - {$this->category->name} ({$page}/{$pages}) - {$this->config->board_title}" ); $this->setDescription ( $description ); } elseif($type=='list'){ $title = JText::_('COM_KUNENA_VIEW_CATEGORIES_DEFAULT'); $this->setTitle ( $title ); $keywords = JText::_('COM_KUNENA_CATEGORIES'); $this->setKeywords ( $keywords ); $description = (JText::_('COM_KUNENA_CATEGORIES') . ' - ' . $this->config->board_title ); $this->setDescription ( $description ); } elseif ($type=='user'){ $this->header = $this->title = JText::_('COM_KUNENA_CATEGORY_SUBSCRIPTIONS'); $title = JText::_('COM_KUNENA_VIEW_CATEGORIES_USER'); $this->setTitle ( $title ); $keywords = JText::_('COM_KUNENA_CATEGORIES'); $this->setKeywords ( $keywords ); $description = (JText::_('COM_KUNENA_CATEGORY_SUBSCRIPTIONS') . ' - ' . $this->config->board_title ); $this->setDescription ( $description ); } } }