Пример #1
0
 function prepareItem($item, $view, $task)
 {
     jimport('joomla.filesystem.file');
     JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables');
     $limitstart = JRequest::getInt('limitstart');
     $application = JFactory::getApplication();
     //Initialize params
     if ($view != 'item') {
         if (K2_JVERSION == '30') {
             $params = $application->getParams('com_k2');
         } else {
             $component = JComponentHelper::getComponent('com_k2');
             $params = class_exists('JParameter') ? new JParameter($component->params) : new JRegistry($component->params);
             $itemid = JRequest::getInt('Itemid');
             if ($itemid) {
                 $menu = $application->getMenu();
                 $menuparams = $menu->getParams($itemid);
                 $params->merge($menuparams);
             }
         }
     } else {
         $params = K2HelperUtilities::getParams('com_k2');
     }
     //Category
     $db = JFactory::getDBO();
     $category = JTable::getInstance('K2Category', 'Table');
     $category->load($item->catid);
     $item->category = $category;
     $item->category->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias))));
     //Read more link
     $link = K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->category->alias));
     $item->link = urldecode(JRoute::_($link));
     //Print link
     $item->printLink = urldecode(JRoute::_($link . '&tmpl=component&print=1'));
     //Params
     $cparams = class_exists('JParameter') ? new JParameter($category->params) : new JRegistry($category->params);
     $iparams = class_exists('JParameter') ? new JParameter($item->params) : new JRegistry($item->params);
     $item->params = version_compare(PHP_VERSION, '5.0.0', '>=') ? clone $params : $params;
     if ($cparams->get('inheritFrom')) {
         $masterCategoryID = $cparams->get('inheritFrom');
         $masterCategory = JTable::getInstance('K2Category', 'Table');
         $masterCategory->load((int) $masterCategoryID);
         $cparams = class_exists('JParameter') ? new JParameter($masterCategory->params) : new JRegistry($masterCategory->params);
     }
     $item->params->merge($cparams);
     $item->params->merge($iparams);
     //Edit link
     if (K2HelperPermissions::canEditItem($item->created_by, $item->catid)) {
         $item->editLink = JRoute::_('index.php?option=com_k2&view=item&task=edit&cid=' . $item->id . '&tmpl=component');
     }
     //Tags
     if ($view == 'item' && ($item->params->get('itemTags') || $item->params->get('itemRelated')) || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemTags') || $view == 'itemlist' && $task == 'user' && $item->params->get('userItemTags') || $view == 'latest' && $params->get('latestItemTags')) {
         $tags = $this->getItemTags($item->id);
         for ($i = 0; $i < sizeof($tags); $i++) {
             $tags[$i]->link = JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name));
         }
         $item->tags = $tags;
     }
     //Image
     $item->imageXSmall = '';
     $item->imageSmall = '';
     $item->imageMedium = '';
     $item->imageLarge = '';
     $item->imageXLarge = '';
     $date = JFactory::getDate($item->modified);
     $timestamp = '?t=' . $date->toUnix();
     if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_XS.jpg')) {
         $item->imageXSmall = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $item->id) . '_XS.jpg';
         if ($params->get('imageTimestamp')) {
             $item->imageXSmall .= $timestamp;
         }
     }
     if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_S.jpg')) {
         $item->imageSmall = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $item->id) . '_S.jpg';
         if ($params->get('imageTimestamp')) {
             $item->imageSmall .= $timestamp;
         }
     }
     if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_M.jpg')) {
         $item->imageMedium = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $item->id) . '_M.jpg';
         if ($params->get('imageTimestamp')) {
             $item->imageMedium .= $timestamp;
         }
     }
     if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_L.jpg')) {
         $item->imageLarge = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $item->id) . '_L.jpg';
         if ($params->get('imageTimestamp')) {
             $item->imageLarge .= $timestamp;
         }
     }
     if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_XL.jpg')) {
         $item->imageXLarge = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $item->id) . '_XL.jpg';
         if ($params->get('imageTimestamp')) {
             $item->imageXLarge .= $timestamp;
         }
     }
     if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_Generic.jpg')) {
         $item->imageGeneric = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $item->id) . '_Generic.jpg';
         if ($params->get('imageTimestamp')) {
             $item->imageGeneric .= $timestamp;
         }
     }
     //Extra fields
     if ($view == 'item' && $item->params->get('itemExtraFields') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemExtraFields') || $view == 'itemlist' && $task == 'tag' && $item->params->get('tagItemExtraFields') || $view == 'itemlist' && ($task == 'search' || $task == 'date') && $item->params->get('genericItemExtraFields')) {
         $item->extra_fields = $this->getItemExtraFields($item->extra_fields, $item);
     }
     //Attachments
     if ($view == 'item' && $item->params->get('itemAttachments') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemAttachments')) {
         $item->attachments = $this->getItemAttachments($item->id);
     }
     //Rating
     if ($view == 'item' && $item->params->get('itemRating') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemRating')) {
         $item->votingPercentage = $this->getVotesPercentage($item->id);
         $item->numOfvotes = $this->getVotesNum($item->id);
     }
     //Filtering
     if ($params->get('introTextCleanup')) {
         $filterTags = preg_split('#[,\\s]+#', trim($params->get('introTextCleanupExcludeTags')));
         $filterAttrs = preg_split('#[,\\s]+#', trim($params->get('introTextCleanupTagAttr')));
         $filterAttrs = array_filter($filterAttrs);
         $item->introtext = K2HelperUtilities::cleanTags($item->introtext, $filterTags);
         if (count($filterAttrs)) {
             $item->introtext = K2HelperUtilities::cleanAttributes($item->introtext, $filterTags, $filterAttrs);
         }
     }
     if ($params->get('fullTextCleanup')) {
         $filterTags = preg_split('#[,\\s]+#', trim($params->get('fullTextCleanupExcludeTags')));
         $filterAttrs = preg_split('#[,\\s]+#', trim($params->get('fullTextCleanupTagAttr')));
         $filterAttrs = array_filter($filterAttrs);
         $item->fulltext = K2HelperUtilities::cleanTags($item->fulltext, $filterTags);
         if (count($filterAttrs)) {
             $item->fulltext = K2HelperUtilities::cleanAttributes($item->fulltext, $filterTags, $filterAttrs);
         }
     }
     if ($item->params->get('catItemIntroTextWordLimit') && $task == 'category') {
         $item->introtext = K2HelperUtilities::wordLimit($item->introtext, $item->params->get('catItemIntroTextWordLimit'));
     }
     $item->cleanTitle = $item->title;
     $item->title = htmlspecialchars($item->title, ENT_QUOTES);
     $item->image_caption = htmlspecialchars($item->image_caption, ENT_QUOTES);
     //Author
     if ($view == 'item' && ($item->params->get('itemAuthorBlock') || $item->params->get('itemAuthor')) || $view == 'itemlist' && ($task == '' || $task == 'category') && ($item->params->get('catItemAuthorBlock') || $item->params->get('catItemAuthor')) || $view == 'itemlist' && $task == 'user' || $view == 'relatedByTag') {
         if (!empty($item->created_by_alias)) {
             $item->author = new stdClass();
             $item->author->name = $item->created_by_alias;
             $item->author->avatar = K2HelperUtilities::getAvatar('alias');
             $item->author->link = JURI::root();
         } else {
             $author = JFactory::getUser($item->created_by);
             $item->author = $author;
             $item->author->link = JRoute::_(K2HelperRoute::getUserRoute($item->created_by));
             $item->author->profile = $this->getUserProfile($item->created_by);
             $item->author->avatar = K2HelperUtilities::getAvatar($author->id, $author->email, $params->get('userImageWidth'));
         }
         if (!isset($item->author->profile) || is_null($item->author->profile)) {
             $item->author->profile = new JObject();
             $item->author->profile->gender = NULL;
         }
     }
     //Num of comments
     if ($params->get('comments', 0) > 0) {
         $user = JFactory::getUser();
         if (!$user->guest && $user->id == $item->created_by && $params->get('inlineCommentsModeration')) {
             $item->numOfComments = $this->countItemComments($item->id, false);
         } else {
             $item->numOfComments = $this->countItemComments($item->id);
         }
     }
     return $item;
 }