Esempio n. 1
0
 /**
  * @param mixed $category
  * @param string $action
  *
  * @return JUri|null
  */
 public function getUri($category = null, $action = null)
 {
     $category = $category ? KunenaForumCategoryHelper::get($category) : $this->getCategory();
     $Itemid = KunenaRoute::getCategoryItemid($category);
     if (!$this->exists() || !$category->exists()) {
         return null;
     }
     if ($action instanceof KunenaForumMessage) {
         $message = $action;
         $action = 'post' . $message->id;
     }
     $uri = JUri::getInstance("index.php?option=com_kunena&view=topic&catid={$category->id}&id={$this->id}&action={$action}&Itemid={$Itemid}");
     if ($uri->getVar('action') !== null) {
         $uri->delVar('action');
         $mesid = 0;
         $limit = max(1, intval(KunenaFactory::getConfig()->messages_per_page));
         if (isset($message)) {
             $mesid = $message->id;
         } elseif ((string) $action === (string) (int) $action) {
             if ($action > 0) {
                 $uri->setVar('limitstart', $action * $limit);
             }
         } else {
             switch ($action) {
                 case 'first':
                     $mesid = $this->first_post_id;
                     break;
                 case 'last':
                     $mesid = $this->last_post_id;
                     break;
                 case 'unread':
                     // Special case, improves caching
                     $uri->setVar('layout', 'unread');
                     // $mesid = $this->lastread ? $this->lastread : $this->last_post_id;
                     break;
             }
         }
         if ($mesid) {
             if (KunenaUserHelper::getMyself()->getTopicLayout() != 'threaded' && $mesid > 0) {
                 $uri->setFragment($mesid);
                 $limitstart = intval($this->getPostLocation($mesid) / $limit) * $limit;
                 if ($limitstart) {
                     $uri->setVar('limitstart', $limitstart);
                 }
             } else {
                 $uri->setVar('mesid', $mesid);
             }
         }
     }
     return $uri;
 }