function display($tpl = null) { $mainframe =& JFactory::getApplication(); $params =& K2HelperUtilities::getParams('com_k2'); $model =& $this->getModel('itemlist'); $limitstart = JRequest::getInt('limitstart'); $view = JRequest::getWord('view'); $task = JRequest::getWord('task'); //Add link if (K2HelperPermissions::canAddItem()) { $addLink = JRoute::_('index.php?option=com_k2&view=item&task=add&tmpl=component'); } $this->assignRef('addLink', $addLink); //Get data depending on task switch ($task) { case 'category': //Get category $id = JRequest::getInt('id'); JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables'); $category =& JTable::getInstance('K2Category', 'Table'); $category->load($id); // State Check if (!$category->published || $category->trash) { JError::raiseError(404, JText::_('K2_CATEGORY_NOT_FOUND')); } //Access check $user =& JFactory::getUser(); if (K2_JVERSION == '16') { if (!in_array($category->access, $user->authorisedLevels())) { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); } $languageFilter = $mainframe->getLanguageFilter(); $languageTag = JFactory::getLanguage()->getTag(); if ($languageFilter && $category->language != $languageTag && $category->language != '*') { return; } } else { if ($category->access > $user->get('aid', 0)) { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); } } // Hide the add new item link if user cannot post in the specific category if (!K2HelperPermissions::canAddItem($id)) { unset($this->addLink); } //Merge params $cparams = new JParameter($category->params); if ($cparams->get('inheritFrom')) { $masterCategory =& JTable::getInstance('K2Category', 'Table'); $masterCategory->load($cparams->get('inheritFrom')); $cparams = new JParameter($masterCategory->params); } $params->merge($cparams); //Category link $category->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias)))); //Category image $category->image = K2HelperUtilities::getCategoryImage($category->image, $params); //Category plugins $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $category->text = $category->description; if (K2_JVERSION == '16') { $dispatcher->trigger('onContentPrepare', array('com_k2.category', &$category, &$params, $limitstart)); } else { $dispatcher->trigger('onPrepareContent', array(&$category, &$params, $limitstart)); } $category->description = $category->text; //Category K2 plugins $category->event->K2CategoryDisplay = ''; JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2CategoryDisplay', array(&$category, &$params, $limitstart)); $category->event->K2CategoryDisplay = trim(implode("\n", $results)); $category->text = $category->description; $dispatcher->trigger('onK2PrepareContent', array(&$category, &$params, $limitstart)); $category->description = $category->text; $this->assignRef('category', $category); $this->assignRef('user', $user); //Category children $ordering = $params->get('subCatOrdering'); $children = $model->getCategoryFirstChildren($id, $ordering); if (count($children)) { foreach ($children as $child) { if ($params->get('subCatTitleItemCounter')) { $child->numOfItems = $model->countCategoryItems($child->id); } $child->image = K2HelperUtilities::getCategoryImage($child->image, $params); $child->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($child->id . ':' . urlencode($child->alias)))); $subCategories[] = $child; } $this->assignRef('subCategories', $subCategories); } //Set limit $limit = $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items') + $params->get('num_links'); //Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); //Set layout $this->setLayout('category'); //Set title $title = $category->name; // Set ordering if ($params->get('singleCatOrdering')) { $ordering = $params->get('singleCatOrdering'); } else { $ordering = $params->get('catOrdering'); } break; case 'user': //Get user $id = JRequest::getInt('id'); $userObject =& JFactory::getUser($id); //Check user status if ($userObject->block) { JError::raiseError(404, JText::_('K2_USER_NOT_FOUND')); } //Get K2 user profile $userObject->profile = $model->getUserProfile(); //User image $userObject->avatar = K2HelperUtilities::getAvatar($userObject->id, $userObject->email, $params->get('userImageWidth')); //User K2 plugins $userObject->event->K2UserDisplay = ''; if (is_object($userObject->profile) && $userObject->profile->id > 0) { $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2UserDisplay', array(&$userObject->profile, &$params, $limitstart)); $userObject->event->K2UserDisplay = trim(implode("\n", $results)); } $this->assignRef('user', $userObject); //Set layout $this->setLayout('user'); //Set limit $limit = $params->get('userItemCount'); //Set title $title = $userObject->name; // Set ordering $ordering = $params->get('userOrdering'); break; case 'tag': //Set layout $this->setLayout('tag'); //Set limit $limit = $params->get('tagItemCount'); //set title $title = JText::_('K2_DISPLAYING_ITEMS_BY_TAG') . ' ' . JRequest::getVar('tag'); // Set ordering $ordering = $params->get('tagOrdering'); break; case 'search': //Set layout $this->setLayout('generic'); $tpl = JRequest::getCmd('tpl', null); //Set limit $limit = $params->get('genericItemCount'); //Set title $title = JText::_('K2_SEARCH_RESULTS_FOR') . ' ' . JRequest::getVar('searchword'); break; case 'date': //Set layout $this->setLayout('generic'); //Set limit $limit = $params->get('genericItemCount'); // Set title if (JRequest::getInt('day')) { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month') . '-' . JRequest::getInt('day')); $dateFormat = K2_JVERSION == '15' ? '%A, %d %B %Y' : 'l, d F Y'; $title = JText::_('K2_ITEMS_FILTERED_BY_DATE') . ' ' . JHTML::_('date', $date, $dateFormat); } else { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month')); $dateFormat = K2_JVERSION == '15' ? '%B %Y' : 'F Y'; $title = JText::_('K2_ITEMS_FILTERED_BY_DATE') . ' ' . JHTML::_('date', $date, $dateFormat); } // Set ordering $ordering = 'rdate'; break; default: //Set layout $this->setLayout('category'); $user =& JFactory::getUser(); $this->assignRef('user', $user); //Set limit $limit = $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items') + $params->get('num_links'); //Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); //Set title $title = $params->get('page_title'); // Set ordering $ordering = $params->get('catOrdering'); break; } //Set limit for model JRequest::setVar('limit', $limit); if (!isset($ordering)) { $items = $model->getData(); } else { $items = $model->getData($ordering); } //Pagination jimport('joomla.html.pagination'); $total = $model->getTotal(); $pagination = new JPagination($total, $limitstart, $limit); //Prepare items $user =& JFactory::getUser(); $cache =& JFactory::getCache('com_k2_extended'); $model =& $this->getModel('item'); for ($i = 0; $i < sizeof($items); $i++) { //Item group if ($task == "category" || $task == "") { if ($i < $params->get('num_links') + $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items')) { $items[$i]->itemGroup = 'links'; } if ($i < $params->get('num_secondary_items') + $params->get('num_leading_items') + $params->get('num_primary_items')) { $items[$i]->itemGroup = 'secondary'; } if ($i < $params->get('num_primary_items') + $params->get('num_leading_items')) { $items[$i]->itemGroup = 'primary'; } if ($i < $params->get('num_leading_items')) { $items[$i]->itemGroup = 'leading'; } } //Check if model should use cache for preparing item even if user is logged in if ($user->guest || $task == 'tag' || $task == 'search' || $task == 'date') { $cacheFlag = true; } else { $cacheFlag = true; if (K2HelperPermissions::canEditItem($items[$i]->created_by, $items[$i]->catid)) { $cacheFlag = false; } } //Prepare item if ($cacheFlag) { $hits = $items[$i]->hits; $items[$i]->hits = 0; JTable::getInstance('K2Category', 'Table'); $items[$i] = $cache->call(array('K2ModelItem', 'prepareItem'), $items[$i], $view, $task); $items[$i]->hits = $hits; } else { $items[$i] = $model->prepareItem($items[$i], $view, $task); } //Plugins $items[$i] = $model->execPlugins($items[$i], $view, $task); //Trigger comments counter event $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2CommentsCounter', array(&$items[$i], &$params, $limitstart)); $items[$i]->event->K2CommentsCounter = trim(implode("\n", $results)); } //Pathway $pathway =& $mainframe->getPathWay(); $pathway->addItem($title); //Feed link $config =& JFactory::getConfig(); $menu =& JSite::getMenu(); $default = $menu->getDefault(); $active = $menu->getActive(); if ($task == 'tag') { $link = K2HelperRoute::getTagRoute(JRequest::getVar('tag')); } else { $link = ''; } if (!is_null($active) && $active->id == $default->id && $config->getValue('config.sef')) { $link .= '&Itemid=' . $active->id . '&format=feed&limitstart='; } else { $link .= '&format=feed&limitstart='; } $feed = JRoute::_($link); $this->assignRef('feed', $feed); //Assign data if ($task == "category" || $task == "") { $leading = @array_slice($items, 0, $params->get('num_leading_items')); $primary = @array_slice($items, $params->get('num_leading_items'), $params->get('num_primary_items')); $secondary = @array_slice($items, $params->get('num_leading_items') + $params->get('num_primary_items'), $params->get('num_secondary_items')); $links = @array_slice($items, $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items'), $params->get('num_links')); $this->assignRef('leading', $leading); $this->assignRef('primary', $primary); $this->assignRef('secondary', $secondary); $this->assignRef('links', $links); } else { $this->assignRef('items', $items); } //Set default values to avoid division by zero if ($params->get('num_leading_columns') == 0) { $params->set('num_leading_columns', 1); } if ($params->get('num_primary_columns') == 0) { $params->set('num_primary_columns', 1); } if ($params->get('num_secondary_columns') == 0) { $params->set('num_secondary_columns', 1); } if ($params->get('num_links_columns') == 0) { $params->set('num_links_columns', 1); } $this->assignRef('params', $params); $this->assignRef('pagination', $pagination); //Look for template files in component folders $this->_addPath('template', JPATH_COMPONENT . DS . 'templates'); $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . 'default'); //Look for overrides in template folder (K2 template structure) $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates'); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . 'default'); //Look for overrides in template folder (Joomla! template structure) $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'default'); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2'); //Look for specific K2 theme files if ($params->get('theme')) { $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . $params->get('theme')); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . $params->get('theme')); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . $params->get('theme')); } $db =& JFactory::getDBO(); $nullDate = $db->getNullDate(); $this->assignRef('nullDate', $nullDate); parent::display($tpl); }
function prepareItem($item, $view, $task) { jimport('joomla.filesystem.file'); JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables'); $limitstart = JRequest::getInt('limitstart'); //Initialize params if ($view != 'item') { $component = JComponentHelper::getComponent('com_k2'); $params = new JParameter($component->params); $itemid = JRequest::getInt('Itemid'); if ($itemid) { $menu = JSite::getMenu(); $menuparams = $menu->getParams($itemid); $params->merge($menuparams); } } else { $params =& JComponentHelper::getParams('com_k2'); } //Category $db =& JFactory::getDBO(); $query = "SELECT * FROM #__k2_categories WHERE id={$item->catid}"; $db->setQuery($query, 0, 1); $category = $db->loadObject(); $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 = new JParameter($category->params); $iparams = new JParameter($item->params); $item->params = $params; if ($cparams->get('inheritFrom')) { $masterCategoryID = $cparams->get('inheritFrom'); $query = "SELECT * FROM #__k2_categories WHERE id={$masterCategoryID}"; $db->setQuery($query, 0, 1); $masterCategory = $db->loadObject(); $cparams = new JParameter($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 = K2ModelItem::getItemTags($item->id); for ($i = 0; $i < sizeof($tags); $i++) { $tags[$i]->link = urldecode(JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name))); } $item->tags = $tags; } //Image $item->imageXSmall = ''; $item->imageSmall = ''; $item->imageMedium = ''; $item->imageLarge = ''; $item->imageXLarge = ''; if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_XS.jpg')) { $item->imageXSmall = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_XS.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_S.jpg')) { $item->imageSmall = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_S.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_M.jpg')) { $item->imageMedium = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_M.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_L.jpg')) { $item->imageLarge = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_L.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_XL.jpg')) { $item->imageXLarge = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_XL.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_Generic.jpg')) { $item->imageGeneric = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_Generic.jpg'; } //Extra fields if ($view == 'item' && $item->params->get('itemExtraFields') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemExtraFields') || $view == 'itemlist' && ($task == 'search' || $task == 'tag' || $task == 'date') && $item->params->get('genericItemExtraFields')) { $item->extra_fields = K2ModelItem::getItemExtraFields($item->extra_fields); } //Attachments if ($view == 'item' && $item->params->get('itemAttachments') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemAttachments')) { $item->attachments = K2ModelItem::getItemAttachments($item->id); } //Import plugins $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); //Gallery if ($view == 'item' && $item->params->get('itemImageGallery') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemImageGallery')) { $params->set('galleries_rootfolder', 'media/k2/galleries'); $params->set('popup_engine', 'mootools_slimbox'); $params->set('enabledownload', '0'); $item->text = $item->gallery; $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); $item->gallery = $item->text; } //Video if ($view == 'item' && $item->params->get('itemVideo') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemVideo') || $view == 'latest' && $item->params->get('latestItemVideo')) { if (!empty($item->video) && JString::substr($item->video, 0, 1) !== '{') { $item->video = $item->video; $item->videoType = 'embedded'; } else { $item->videoType = 'allvideos'; $params->set('vfolder', 'media/k2/videos'); if ($view == 'item') { $params->set('vwidth', $item->params->get('itemVideoWidth')); $params->set('vheight', $item->params->get('itemVideoHeight')); $params->set('autoplay', $item->params->get('itemVideoAutoPlay')); } else { if ($view == 'latest') { $params->set('vwidth', $item->params->get('latestItemVideoWidth')); $params->set('vheight', $item->params->get('latestItemVideoHeight')); $params->set('autoplay', $item->params->get('latestItemVideoAutoPlay')); } else { $params->set('vwidth', $item->params->get('catItemVideoWidth')); $params->set('vheight', $item->params->get('catItemVideoHeight')); $params->set('autoplay', $item->params->get('catItemVideoAutoPlay')); } } $item->text = $item->video; $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); $item->video = $item->text; } } //Rating if ($view == 'item' && $item->params->get('itemRating') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemRating')) { $item->votingPercentage = K2ModelItem::getVotesPercentage($item->id); $item->numOfvotes = K2ModelItem::getVotesNum($item->id); } //Filtering if ($params->get('introTextCleanup')) { $filterTags = preg_split('#[,\\s]+#', trim($params->get('introTextCleanupExcludeTags'))); $filterAttrs = preg_split('#[,\\s]+#', trim($params->get('introTextCleanupTagAttr'))); $filter = new JFilterInput($filterTags, $filterAttrs, 0, 1); $item->introtext = $filter->clean($item->introtext); } if ($params->get('fullTextCleanup')) { $filterTags = preg_split('#[,\\s]+#', trim($params->get('fullTextCleanupExcludeTags'))); $filterAttrs = preg_split('#[,\\s]+#', trim($params->get('fullTextCleanupTagAttr'))); $filter = new JFilterInput($filterTags, $filterAttrs, 0, 1); $item->fulltext = $filter->clean($item->fulltext); } if ($item->params->get('catItemIntroTextWordLimit') && $task == 'category') { $item->introtext = K2HelperUtilities::wordLimit($item->introtext, $item->params->get('catItemIntroTextWordLimit')); } //Plugins $item->text = ''; $params->set('vfolder', NULL); $params->set('vwidth', NULL); $params->set('vheight', NULL); $params->set('autoplay', NULL); $params->set('galleries_rootfolder', NULL); $params->set('popup_engine', NULL); $params->set('enabledownload', NULL); if ($view == 'item') { if ($item->params->get('itemIntroText')) { $item->text .= $item->introtext; } if ($item->params->get('itemFullText')) { $item->text .= '{K2Splitter}' . $item->fulltext; } } else { switch ($task) { case '': case 'category': if ($item->params->get('catItemIntroText')) { $item->text .= $item->introtext; } break; case 'user': if ($item->params->get('userItemIntroText')) { $item->text .= $item->introtext; } break; default: if ($item->params->get('genericItemIntroText')) { $item->text .= $item->introtext; } break; } } $results = $dispatcher->trigger('onBeforeDisplay', array(&$item, &$params, $limitstart)); $item->event->BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplay', array(&$item, &$params, $limitstart)); $item->event->AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayTitle', array(&$item, &$params, $limitstart)); $item->event->AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onBeforeDisplayContent', array(&$item, &$params, $limitstart)); $item->event->BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayContent', array(&$item, &$params, $limitstart)); $item->event->AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); //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') { if (!empty($item->created_by_alias)) { $item->author->name = $item->created_by_alias; $item->author->avatar = K2HelperUtilities::getAvatar('alias'); } else { $author =& JFactory::getUser($item->created_by); $item->author = $author; $item->author->link = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); $item->author->profile = K2ModelItem::getUserProfile($item->created_by); $item->author->avatar = K2HelperUtilities::getAvatar($author->id, $author->email, $params->get('userImageWidth')); } if (!is_object($item->author->profile)) { $item->author->profile = new JObject(); $item->author->profile->gender = NULL; } } //Num of comments $item->numOfComments = K2ModelItem::countItemComments($item->id); //K2 plugins $item->event->K2BeforeDisplay = ''; $item->event->K2AfterDisplay = ''; $item->event->K2AfterDisplayTitle = ''; $item->event->K2BeforeDisplayContent = ''; $item->event->K2AfterDisplayContent = ''; if ($view == 'item' && $item->params->get('itemK2Plugins') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemK2Plugins') || $view == 'itemlist' && $task == 'user' && $item->params->get('userItemK2Plugins')) { JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2BeforeDisplay', array(&$item, &$params, $limitstart)); $item->event->K2BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplay', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayTitle', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2BeforeDisplayContent', array(&$item, &$params, $limitstart)); $item->event->K2BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayContent', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onK2PrepareContent', array(&$item, &$params, $limitstart)); } if ($view == 'item') { @(list($item->introtext, $item->fulltext) = explode('{K2Splitter}', $item->text)); } else { $item->introtext = $item->text; } return $item; }
public function processTagTags($extra) { require_once JPATH_SITE . '/components/com_k2/helpers/route.php'; $tags = $this->getItemTags($this->article->id); foreach ($tags as &$tag) { $tag->link = JRoute::_(K2HelperRoute::getTagRoute($tag->name)); } $extra = explode(':', $extra, 2); $clean = trim(array_shift($extra)); $html = array(); if ($clean != 'clean') { foreach ($tags as $tag) { if (!$tag->published) { continue; } $html[] = '<li><a href="' . $tag->link . '">' . htmlspecialchars($tag->name, ENT_COMPAT, 'UTF-8') . '</a></li>'; } return '<div class="itemTagsBlock">' . '<span>' . JText::_('K2_TAGGED_UNDER') . '</span>' . '<ul class="itemTags">' . implode('', $html) . '</ul>' . '<div class="clr"></div>' . '</div>'; } $separator = array_shift($extra); $separator = $separator != '' ? str_replace('separator=', '', $separator) : ' '; foreach ($tags as $tag) { if (!$tag->published) { continue; } $html[] = '<span class="tag-' . $tag->id . '" itemprop="keywords">' . '<a href = "' . $tag->link . '" class="tag_link">' . htmlspecialchars($tag->name, ENT_COMPAT, 'UTF-8') . '</a>' . '</span>'; } return '<span class="tags">' . implode($separator, $html) . '</span>'; }
public static function tagCloud(&$params) { $mainframe = JFactory::getApplication(); $user = JFactory::getUser(); $aid = (int) $user->get('aid'); $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql(); $nullDate = $db->getNullDate(); $query = "SELECT i.id FROM #__k2_items as i"; $query .= " LEFT JOIN #__k2_categories c ON c.id = i.catid"; $query .= " WHERE i.published=1 "; $query .= " AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " ) "; $query .= " AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )"; $query .= " AND i.trash=0 "; if (K2_JVERSION != '15') { $query .= " AND i.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; } else { $query .= " AND i.access <= {$aid} "; } $query .= " AND c.published=1 "; $query .= " AND c.trash=0 "; if (K2_JVERSION != '15') { $query .= " AND c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; } else { $query .= " AND c.access <= {$aid} "; } $cloudCategory = $params->get('cloud_category'); if (is_array($cloudCategory)) { $cloudCategory = array_filter($cloudCategory); } if ($cloudCategory) { if (!is_array($cloudCategory)) { $cloudCategory = (array) $cloudCategory; } foreach ($cloudCategory as $cloudCategoryID) { $categories[] = $cloudCategoryID; if ($params->get('cloud_category_recursive')) { $children = modK2ToolsHelper::getCategoryChildren($cloudCategoryID); $categories = @array_merge($categories, $children); } } $categories = @array_unique($categories); JArrayHelper::toInteger($categories); if (count($categories) == 1) { $query .= " AND i.catid={$categories[0]}"; } else { $query .= " AND i.catid IN(" . implode(',', $categories) . ")"; } } if (K2_JVERSION != '15') { if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND c.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") AND i.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") "; } } $db->setQuery($query); $IDs = K2_JVERSION == '30' ? $db->loadColumn() : $db->loadResultArray(); if (!is_array($IDs) || !count($IDs)) { return array(); } $query = "SELECT tag.name, tag.id\n FROM #__k2_tags as tag\n LEFT JOIN #__k2_tags_xref AS xref ON xref.tagID = tag.id \n WHERE xref.itemID IN (" . implode(',', $IDs) . ") \n AND tag.published = 1"; $db->setQuery($query); $rows = $db->loadObjectList(); $cloud = array(); if (count($rows)) { foreach ($rows as $tag) { if (@array_key_exists($tag->name, $cloud)) { $cloud[$tag->name]++; } else { $cloud[$tag->name] = 1; } } $max_size = $params->get('max_size'); $min_size = $params->get('min_size'); $max_qty = max(array_values($cloud)); $min_qty = min(array_values($cloud)); $spread = $max_qty - $min_qty; if (0 == $spread) { $spread = 1; } $step = ($max_size - $min_size) / $spread; $counter = 0; arsort($cloud, SORT_NUMERIC); $cloud = @array_slice($cloud, 0, $params->get('cloud_limit'), true); uksort($cloud, "strnatcasecmp"); foreach ($cloud as $key => $value) { $size = $min_size + ($value - $min_qty) * $step; $size = ceil($size); $tmp = new stdClass(); $tmp->tag = $key; $tmp->count = $value; $tmp->size = $size; $tmp->link = urldecode(JRoute::_(K2HelperRoute::getTagRoute($key))); $tags[$counter] = $tmp; $counter++; } return $tags; } }
static function info($config, $item, $num = 1) { // %AUTHOR %DATE %HITS %CATEGORY $news_info = ''; // if ($num == 1) { if ($config['news_content_info_pos'] != 'disabled') { $class = 'nspInfo1 t' . $config['news_content_info_pos'] . ' f' . $config['news_content_info_float']; } } else { if ($config['news_content_info2_pos'] != 'disabled') { $class = 'nspInfo2 t' . $config['news_content_info2_pos'] . ' f' . $config['news_content_info2_float']; } } // if ($config['news_content_info_pos'] != 'disabled' && $num == 1 || $config['news_content_info2_pos'] != 'disabled' && $num == 2) { $news_info = '<p class="nspInfo ' . $class . '">' . $config['info' . ($num == 2 ? '2' : '') . '_format'] . '</p>'; // $author = trim(htmlspecialchars($item['author_alias'])) != '' ? htmlspecialchars($item['author_alias']) : htmlspecialchars($item['author_username']); $info_author = $config['user_avatar'] == 1 ? '<span><img src="' . K2HelperUtilities::getAvatar($item['author_id'], $item['author_email'], $config['avatar_size']) . '" alt="' . $author . ' - avatar" class="nspAvatar" width="' . $config['avatar_size'] . '" height="' . $config['avatar_size'] . '" /> ' . $author . '</span>' : $author; // $info_date = JHTML::_('date', $item['date'], $config['date_format']); // $info_hits = JText::_('MOD_NEWS_PRO_GK5_NHITS') . $item['hits']; $info_rate = $item['rating_count'] > 0 ? '<span class="nspRate">' . JText::_('MOD_NEWS_PRO_GK5_NSP_RATE') . ' ' . number_format($item['rating_sum'] / $item['rating_count'], 2) . '</span>' : ''; $info_category = $config['category_link'] == 1 ? '<a href="' . NSP_GK5_com_k2_View::categoryLink($item) . '" >' . $item['catname'] . '</a>' : $item['catname']; $info_comments = JText::_('MOD_NEWS_PRO_GK5_NO_COMMENTS'); // if (isset($item['comments'])) { if ($item['comments'] == 1) { $info_comments = JText::_('MOD_NEWS_PRO_GK5_1COMMENT'); } else { if ($item['comments'] > 1 && $item['comments'] < 5) { $info_comments = $item['comments'] . ' ' . JText::_('MOD_NEWS_PRO_GK5_MORECOMMENTS'); } else { if ($item['comments'] >= 5) { $info_comments = $item['comments'] . ' ' . JText::_('MOD_NEWS_PRO_GK5_MUCHMORECOMMENTS'); } } } } // $info_tags = ''; if (isset($item['tags']) && count($item['tags']) > 0) { $i = 0; foreach ($item['tags'] as $tag) { $link = urldecode(JRoute::_(K2HelperRoute::getTagRoute($tag))); if ($i == 0) { $info_tags .= '<a href="' . $link . '">' . $tag . '</a>'; } else { $info_tags .= ', <a href="' . $link . '">' . $tag . '</a>'; } // $i++; } } // $news_info = str_replace('%AUTHOR', $info_author, $news_info); $news_info = str_replace('%DATE', $info_date, $news_info); $news_info = str_replace('%HITS', $info_hits, $news_info); $news_info = str_replace('%CATEGORY', $info_category, $news_info); $news_info = str_replace('%RATE', $info_rate, $news_info); $news_info = str_replace('%COMMENTS', $info_comments, $news_info); $news_info = str_replace('%TAGS', $info_tags, $news_info); } else { return ''; } // return $news_info; }
function display($tpl = null) { $mainframe = JFactory::getApplication(); $params = K2HelperUtilities::getParams('com_k2'); $model = $this->getModel('itemlist'); $limitstart = JRequest::getInt('limitstart'); $view = JRequest::getWord('view'); $task = JRequest::getWord('task'); $db = JFactory::getDBO(); // Add link if (K2HelperPermissions::canAddItem()) { $addLink = JRoute::_('index.php?option=com_k2&view=item&task=add&tmpl=component'); } $this->assignRef('addLink', $addLink); // Get data depending on task switch ($task) { case 'category': // Get category $id = JRequest::getInt('id'); JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables'); $category = JTable::getInstance('K2Category', 'Table'); $category->load($id); $category->event = new stdClass(); // State check if (!$category->published || $category->trash) { JError::raiseError(404, JText::_('K2_CATEGORY_NOT_FOUND')); } // Access check $user = JFactory::getUser(); if (K2_JVERSION != '15') { if (!in_array($category->access, $user->getAuthorisedViewLevels())) { if ($user->guest) { $uri = JFactory::getURI(); $url = 'index.php?option=com_users&view=login&return=' . base64_encode($uri->toString()); $mainframe->redirect(JRoute::_($url, false), JText::_('K2_YOU_NEED_TO_LOGIN_FIRST')); } else { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); return; } } $languageFilter = $mainframe->getLanguageFilter(); $languageTag = JFactory::getLanguage()->getTag(); if ($languageFilter && $category->language != $languageTag && $category->language != '*') { return; } } else { if ($category->access > $user->get('aid', 0)) { if ($user->guest) { $uri = JFactory::getURI(); $url = 'index.php?option=com_user&view=login&return=' . base64_encode($uri->toString()); $mainframe->redirect(JRoute::_($url, false), JText::_('K2_YOU_NEED_TO_LOGIN_FIRST')); } else { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); return; } } } // Hide the add new item link if user cannot post in the specific category if (!K2HelperPermissions::canAddItem($id)) { unset($this->addLink); } // Merge params $cparams = class_exists('JParameter') ? new JParameter($category->params) : new JRegistry($category->params); // Get the meta information before merging params since we do not want them to be inherited $category->metaDescription = $cparams->get('catMetaDesc'); $category->metaKeywords = $cparams->get('catMetaKey'); $category->metaRobots = $cparams->get('catMetaRobots'); $category->metaAuthor = $cparams->get('catMetaAuthor'); if ($cparams->get('inheritFrom')) { $masterCategory = JTable::getInstance('K2Category', 'Table'); $masterCategory->load($cparams->get('inheritFrom')); $cparams = class_exists('JParameter') ? new JParameter($masterCategory->params) : new JRegistry($masterCategory->params); } $params->merge($cparams); // Category link $category->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias)))); // Category image $category->image = K2HelperUtilities::getCategoryImage($category->image, $params); // Category plugins $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $category->text = $category->description; if (K2_JVERSION != '15') { $dispatcher->trigger('onContentPrepare', array('com_k2.category', &$category, &$params, $limitstart)); } else { $dispatcher->trigger('onPrepareContent', array(&$category, &$params, $limitstart)); } $category->description = $category->text; // Category K2 plugins $category->event->K2CategoryDisplay = ''; JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2CategoryDisplay', array(&$category, &$params, $limitstart)); $category->event->K2CategoryDisplay = trim(implode("\n", $results)); $category->text = $category->description; $dispatcher->trigger('onK2PrepareContent', array(&$category, &$params, $limitstart)); $category->description = $category->text; $this->assignRef('category', $category); $this->assignRef('user', $user); // Category children $ordering = $params->get('subCatOrdering'); $children = $model->getCategoryFirstChildren($id, $ordering); if (count($children)) { foreach ($children as $child) { if ($params->get('subCatTitleItemCounter')) { $child->numOfItems = $model->countCategoryItems($child->id); } $child->image = K2HelperUtilities::getCategoryImage($child->image, $params); $child->name = htmlspecialchars($child->name, ENT_QUOTES); $child->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($child->id . ':' . urlencode($child->alias)))); $subCategories[] = $child; } $this->assignRef('subCategories', $subCategories); } // Set limit $limit = $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items') + $params->get('num_links'); // Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); // Set layout $this->setLayout('category'); // Set title $title = $category->name; $category->name = htmlspecialchars($category->name, ENT_QUOTES); // Set ordering if ($params->get('singleCatOrdering')) { $ordering = $params->get('singleCatOrdering'); } else { $ordering = $params->get('catOrdering'); } $addHeadFeedLink = $params->get('catFeedLink'); break; case 'user': // Get user $id = JRequest::getInt('id'); $userObject = JFactory::getUser($id); $userObject->event = new stdClass(); // Check user status if ($userObject->block) { JError::raiseError(404, JText::_('K2_USER_NOT_FOUND')); } // Get K2 user profile $userObject->profile = $model->getUserProfile(); // User image $userObject->avatar = K2HelperUtilities::getAvatar($userObject->id, $userObject->email, $params->get('userImageWidth')); // User K2 plugins $userObject->event->K2UserDisplay = ''; if (is_object($userObject->profile) && $userObject->profile->id > 0) { $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2UserDisplay', array(&$userObject->profile, &$params, $limitstart)); $userObject->event->K2UserDisplay = trim(implode("\n", $results)); $userObject->profile->url = htmlspecialchars($userObject->profile->url, ENT_QUOTES, 'UTF-8'); } $this->assignRef('user', $userObject); $date = JFactory::getDate(); $now = K2_JVERSION == '15' ? $date->toMySQL() : $date->toSql(); $this->assignRef('now', $now); // Set layout $this->setLayout('user'); // Set limit $limit = $params->get('userItemCount'); // Set title $title = $userObject->name; $userObject->name = htmlspecialchars($userObject->name, ENT_QUOTES); // Set ordering $ordering = $params->get('userOrdering'); $addHeadFeedLink = $params->get('userFeedLink', 1); break; case 'tag': // Set layout $this->setLayout('tag'); // Set limit $limit = $params->get('tagItemCount'); // Set title $title = JText::_('K2_DISPLAYING_ITEMS_BY_TAG') . ' ' . JRequest::getVar('tag'); // Set ordering $ordering = $params->get('tagOrdering'); $addHeadFeedLink = $params->get('tagFeedLink', 1); break; case 'search': // Set layout $this->setLayout('generic'); // Set limit $limit = $params->get('genericItemCount'); // Set title $title = JText::_('K2_SEARCH_RESULTS_FOR') . ' ' . JRequest::getVar('searchword'); $addHeadFeedLink = $params->get('genericFeedLink', 1); break; case 'date': // Set layout $this->setLayout('generic'); // Set limit $limit = $params->get('genericItemCount'); // Fix wrong timezone if (function_exists('date_default_timezone_get')) { $originalTimezone = date_default_timezone_get(); } if (function_exists('date_default_timezone_set')) { date_default_timezone_set('UTC'); } // Set title if (JRequest::getInt('day')) { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month') . '-' . JRequest::getInt('day')); $dateFormat = K2_JVERSION == '15' ? '%A, %d %B %Y' : 'l, d F Y'; $title = JText::_('K2_ITEMS_FILTERED_BY_DATE') . ' ' . JHTML::_('date', $date, $dateFormat); } else { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month')); $dateFormat = K2_JVERSION == '15' ? '%B %Y' : 'F Y'; $title = JText::_('K2_ITEMS_FILTERED_BY_DATE') . ' ' . JHTML::_('date', $date, $dateFormat); } // Restore the original timezone if (function_exists('date_default_timezone_set') && isset($originalTimezone)) { date_default_timezone_set($originalTimezone); } // Set ordering $ordering = 'rdate'; $addHeadFeedLink = $params->get('genericFeedLink', 1); break; default: // Set layout $this->setLayout('category'); $user = JFactory::getUser(); $this->assignRef('user', $user); // Set limit $limit = $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items') + $params->get('num_links'); // Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); // Set title $title = $params->get('page_title'); // Set ordering $ordering = $params->get('catOrdering'); $addHeadFeedLink = $params->get('catFeedLink', 1); break; } // Set limit for model if (!$limit) { $limit = 10; } JRequest::setVar('limit', $limit); // Get items if (!isset($ordering)) { $items = $model->getData(); } else { $items = $model->getData($ordering); } // Pagination jimport('joomla.html.pagination'); $total = count($items) ? $model->getTotal() : 0; $pagination = new JPagination($total, $limitstart, $limit); //Prepare items $user = JFactory::getUser(); $cache = JFactory::getCache('com_k2_extended'); $model = $this->getModel('item'); for ($i = 0; $i < sizeof($items); $i++) { //Item group if ($task == "category" || $task == "") { if ($i < $params->get('num_links') + $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items')) { $items[$i]->itemGroup = 'links'; } if ($i < $params->get('num_secondary_items') + $params->get('num_leading_items') + $params->get('num_primary_items')) { $items[$i]->itemGroup = 'secondary'; } if ($i < $params->get('num_primary_items') + $params->get('num_leading_items')) { $items[$i]->itemGroup = 'primary'; } if ($i < $params->get('num_leading_items')) { $items[$i]->itemGroup = 'leading'; } } // Check if the model should use the cache for preparing the item even if the user is logged in if ($user->guest || $task == 'tag' || $task == 'search' || $task == 'date') { $cacheFlag = true; } else { $cacheFlag = true; if (K2HelperPermissions::canEditItem($items[$i]->created_by, $items[$i]->catid)) { $cacheFlag = false; } } // Prepare item if ($cacheFlag) { $hits = $items[$i]->hits; $items[$i]->hits = 0; JTable::getInstance('K2Category', 'Table'); $items[$i] = $cache->call(array($model, 'prepareItem'), $items[$i], $view, $task); $items[$i]->hits = $hits; } else { $items[$i] = $model->prepareItem($items[$i], $view, $task); } // Plugins $items[$i] = $model->execPlugins($items[$i], $view, $task); // Trigger comments counter event $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2CommentsCounter', array(&$items[$i], &$params, $limitstart)); $items[$i]->event->K2CommentsCounter = trim(implode("\n", $results)); } // Set title $document = JFactory::getDocument(); $application = JFactory::getApplication(); $menus = $application->getMenu(); $menu = $menus->getActive(); if (is_object($menu)) { if (is_string($menu->params)) { $menu_params = K2_JVERSION == '15' ? new JParameter($menu->params) : new JRegistry($menu->params); } else { $menu_params = $menu->params; } if (!$menu_params->get('page_title')) { $params->set('page_title', $title); } } else { $params->set('page_title', $title); } // We're adding a new variable here which won't get the appended/prepended site title, // when enabled via Joomla!'s SEO/SEF settings $params->set('page_title_clean', $title); if (K2_JVERSION != '15') { if ($mainframe->getCfg('sitename_pagetitles', 0) == 1) { $tmpTitle = JText::sprintf('JPAGETITLE', $mainframe->getCfg('sitename'), $params->get('page_title')); $params->set('page_title', $tmpTitle); } elseif ($mainframe->getCfg('sitename_pagetitles', 0) == 2) { $tmpTitle = JText::sprintf('JPAGETITLE', $params->get('page_title'), $mainframe->getCfg('sitename')); $params->set('page_title', $tmpTitle); } } $document->setTitle($params->get('page_title')); // Search - Update the Google Search results container (K2 v2.6.6+) if ($task == 'search') { $googleSearchContainerID = trim($params->get('googleSearchContainer', 'k2GoogleSearchContainer')); if ($googleSearchContainerID == 'k2Container') { $googleSearchContainerID = 'k2GoogleSearchContainer'; } $params->set('googleSearchContainer', $googleSearchContainerID); } // Set metadata for category if ($task == 'category') { if ($category->metaDescription) { $document->setDescription($category->metaDescription); } else { $metaDescItem = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $this->category->description); $metaDescItem = strip_tags($metaDescItem); $metaDescItem = K2HelperUtilities::characterLimit($metaDescItem, $params->get('metaDescLimit', 150)); $metaDescItem = htmlspecialchars($metaDescItem, ENT_QUOTES, 'UTF-8'); $document->setDescription($metaDescItem); } if ($category->metaKeywords) { $document->setMetadata('keywords', $category->metaKeywords); } if ($category->metaRobots) { $document->setMetadata('robots', $category->metaRobots); } if ($category->metaAuthor) { $document->setMetadata('author', $category->metaAuthor); } } if (K2_JVERSION != '15') { // Menu metadata options if ($params->get('menu-meta_description')) { $document->setDescription($params->get('menu-meta_description')); } if ($params->get('menu-meta_keywords')) { $document->setMetadata('keywords', $params->get('menu-meta_keywords')); } if ($params->get('robots')) { $document->setMetadata('robots', $params->get('robots')); } // Menu page display options if ($params->get('page_heading')) { $params->set('page_title', $params->get('page_heading')); } $params->set('show_page_title', $params->get('show_page_heading')); } // Pathway $pathway = $mainframe->getPathWay(); if (!isset($menu->query['task'])) { $menu->query['task'] = ''; } if ($menu) { switch ($task) { case 'category': if ($menu->query['task'] != 'category' || $menu->query['id'] != JRequest::getInt('id')) { $pathway->addItem($title, ''); } break; case 'user': if ($menu->query['task'] != 'user' || $menu->query['id'] != JRequest::getInt('id')) { $pathway->addItem($title, ''); } break; case 'tag': if ($menu->query['task'] != 'tag' || $menu->query['tag'] != JRequest::getVar('tag')) { $pathway->addItem($title, ''); } break; case 'search': case 'date': $pathway->addItem($title, ''); break; } } // Feed link $config = JFactory::getConfig(); $menu = $application->getMenu(); $default = $menu->getDefault(); $active = $menu->getActive(); if ($task == 'tag') { $link = K2HelperRoute::getTagRoute(JRequest::getVar('tag')); } else { $link = ''; } $sef = K2_JVERSION == '30' ? $config->get('sef') : $config->getValue('config.sef'); if (!is_null($active) && $active->id == $default->id && $sef) { $link .= '&Itemid=' . $active->id . '&format=feed&limitstart='; } else { $link .= '&format=feed&limitstart='; } $feed = JRoute::_($link); $this->assignRef('feed', $feed); // Add head feed link if ($addHeadFeedLink) { $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0'); $document->addHeadLink(JRoute::_($link . '&type=rss'), 'alternate', 'rel', $attribs); $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0'); $document->addHeadLink(JRoute::_($link . '&type=atom'), 'alternate', 'rel', $attribs); } // Assign data if ($task == "category" || $task == "") { $leading = @array_slice($items, 0, $params->get('num_leading_items')); $primary = @array_slice($items, $params->get('num_leading_items'), $params->get('num_primary_items')); $secondary = @array_slice($items, $params->get('num_leading_items') + $params->get('num_primary_items'), $params->get('num_secondary_items')); $links = @array_slice($items, $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items'), $params->get('num_links')); $this->assignRef('leading', $leading); $this->assignRef('primary', $primary); $this->assignRef('secondary', $secondary); $this->assignRef('links', $links); } else { $this->assignRef('items', $items); } // Set default values to avoid division by zero if ($params->get('num_leading_columns') == 0) { $params->set('num_leading_columns', 1); } if ($params->get('num_primary_columns') == 0) { $params->set('num_primary_columns', 1); } if ($params->get('num_secondary_columns') == 0) { $params->set('num_secondary_columns', 1); } if ($params->get('num_links_columns') == 0) { $params->set('num_links_columns', 1); } $this->assignRef('params', $params); $this->assignRef('pagination', $pagination); // Set Facebook meta data $document = JFactory::getDocument(); $uri = JURI::getInstance(); $document->setMetaData('og:url', $uri->toString()); $document->setMetaData('og:title', htmlspecialchars($document->getTitle(), ENT_QUOTES, 'UTF-8')); $document->setMetaData('og:type', 'website'); if ($task == 'category' && $this->category->image && strpos($this->category->image, 'placeholder/category.png') === false) { $image = substr(JURI::root(), 0, -1) . str_replace(JURI::root(true), '', $this->category->image); $document->setMetaData('og:image', $image); $document->setMetaData('image', $image); } $document->setMetaData('og:description', htmlspecialchars(strip_tags($document->getDescription()), ENT_QUOTES, 'UTF-8')); // Look for template files in component folders $this->_addPath('template', JPATH_COMPONENT . DS . 'templates'); $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . 'default'); // Look for overrides in template folder (K2 template structure) $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates'); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . 'default'); // Look for overrides in template folder (Joomla! template structure) $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'default'); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2'); // Look for specific K2 theme files if ($params->get('theme')) { $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . $params->get('theme')); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . $params->get('theme')); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . $params->get('theme')); } $nullDate = $db->getNullDate(); $this->assignRef('nullDate', $nullDate); $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $dispatcher->trigger('onK2BeforeViewDisplay'); // Prevent spammers from using the tag view if ($task == 'tag' && !count($this->items)) { $tag = JRequest::getString('tag'); $db = JFactory::getDBO(); $db->setQuery('SELECT id FROM #__k2_tags WHERE name = ' . $db->quote($tag)); $tagID = $db->loadResult(); if (!$tagID) { JError::raiseError(404, JText::_('K2_NOT_FOUND')); return false; } } parent::display($tpl); }
public function getFeedLink() { if (!isset($this->feedLink)) { $this->feedLink = JRoute::_(K2HelperRoute::getTagRoute($this->id . ':' . $this->alias) . '&format=feed'); } return $this->feedLink; }
function display($tpl = null) { $mainframe =& JFactory::getApplication(); $params =& JComponentHelper::getParams('com_k2'); $model =& $this->getModel('itemlist'); $limitstart = JRequest::getInt('limitstart'); $view = JRequest::getWord('view'); $task = JRequest::getWord('task'); //Add link if (K2HelperPermissions::canAddItem()) { $addLink = JRoute::_('index.php?option=com_k2&view=item&task=add&tmpl=component'); } $this->assignRef('addLink', $addLink); //Get data depending on task switch ($task) { case 'category': //Get category $id = JRequest::getInt('id'); JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables'); $category =& JTable::getInstance('K2Category', 'Table'); $category->load($id); //Access check $user =& JFactory::getUser(); if ($category->access > $user->get('aid', 0)) { JError::raiseError(403, JText::_("ALERTNOTAUTH")); } if (!$category->published || $category->trash) { JError::raiseError(404, JText::_("Category not found")); } //Merge params $cparams = new JParameter($category->params); if ($cparams->get('inheritFrom')) { $masterCategory =& JTable::getInstance('K2Category', 'Table'); $masterCategory->load($cparams->get('inheritFrom')); $cparams = new JParameter($masterCategory->params); } $params->merge($cparams); //Category link $category->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias)))); //Category image if (!empty($category->image)) { $category->image = JURI::root() . 'media/k2/categories/' . $category->image; } else { if ($params->get('catImageDefault')) { $category->image = JURI::root() . 'components/com_k2/images/placeholder/category.png'; } } //Category plugins $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $category->text = $category->description; $dispatcher->trigger('onPrepareContent', array(&$category, &$params, $limitstart)); $category->description = $category->text; //Category K2 plugins $category->event->K2CategoryDisplay = ''; JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2CategoryDisplay', array(&$category, &$params, $limitstart)); $category->event->K2CategoryDisplay = trim(implode("\n", $results)); $category->text = $category->description; $dispatcher->trigger('onK2PrepareContent', array(&$category, &$params, $limitstart)); $category->description = $category->text; $this->assignRef('category', $category); $this->assignRef('user', $user); //Category childs $ordering = $params->get('subCatOrdering'); $childs = $model->getCategoryFirstChilds($id, $ordering); if (count($childs)) { foreach ($childs as $child) { if ($params->get('subCatTitleItemCounter')) { $child->numOfItems = $model->countCategoryItems($child->id); } if (!empty($child->image)) { $child->image = JURI::root() . 'media/k2/categories/' . $child->image; } else { if ($params->get('catImageDefault')) { $child->image = JURI::root() . 'components/com_k2/images/placeholder/category.png'; } } $child->name = htmlspecialchars($child->name, ENT_QUOTES); $child->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($child->id . ':' . urlencode($child->alias)))); $subCategories[] = $child; } $this->assignRef('subCategories', $subCategories); } //Set limit $limit = $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items') + $params->get('num_links'); //Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); //Set layout $this->setLayout('category'); //Set title $title = $category->name; $category->name = htmlspecialchars($category->name, ENT_QUOTES); break; case 'user': //Get user $id = JRequest::getInt('id'); $user =& JFactory::getUser($id); //Check user status if ($user->block) { JError::raiseError(404, JText::_('User not found')); } //Get K2 user profile $user->profile = $model->getUserProfile(); //User image $user->avatar = K2HelperUtilities::getAvatar($user->id, $user->email, $params->get('userImageWidth')); //User K2 plugins $user->event->K2UserDisplay = ''; if (is_object($user->profile) && $user->profile->id > 0) { $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2UserDisplay', array(&$user->profile, &$params, $limitstart)); $user->event->K2UserDisplay = trim(implode("\n", $results)); } $this->assignRef('user', $user); $db =& JFactory::getDBO(); $nullDate = $db->getNullDate(); $date =& JFactory::getDate(); $now = $date->toMySQL(); $this->assignRef('nullDate', $nullDate); $this->assignRef('now', $now); //Set layout $this->setLayout('user'); //Set limit $limit = $params->get('userItemCount'); //Set title $title = $user->name; $user->name = htmlspecialchars($user->name, ENT_QUOTES); break; case 'tag': //Set layout $this->setLayout('generic'); //Set limit $limit = $params->get('genericItemCount'); //set title $title = JText::_('Displaying items by tag:') . ' ' . JRequest::getVar('tag'); break; case 'search': //Set layout $this->setLayout('generic'); //Set limit $limit = $params->get('genericItemCount'); //Set title $title = JText::_('Search results for:') . ' ' . JRequest::getVar('searchword'); break; case 'date': //Set layout $this->setLayout('generic'); //Set limit $limit = $params->get('genericItemCount'); //Set title if (JRequest::getInt('day')) { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month') . '-' . JRequest::getInt('day')); $title = JText::_('Items filtered by date:') . ' ' . JHTML::_('date', $date, '%A, %d %B %Y'); } else { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month')); $title = JText::_('Items filtered by date:') . ' ' . JHTML::_('date', $date, '%B %Y'); } break; default: //Set layout $this->setLayout('category'); $user =& JFactory::getUser(); $this->assignRef('user', $user); //Set limit $limit = $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items') + $params->get('num_links'); //Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); //Set title $title = $params->get('page_title'); break; } //Set limit for model if (!$limit) { $limit = 10; } JRequest::setVar('limit', $limit); //Get ordering if ($task == 'tag') { $ordering = $params->get('tagOrdering'); } else { $ordering = $params->get('catOrdering'); } //Get items $items = $model->getData($ordering); //Pagination jimport('joomla.html.pagination'); $total = $model->getTotal(); $pagination = new JPagination($total, $limitstart, $limit); //Prepare items $user =& JFactory::getUser(); $cache =& JFactory::getCache('com_k2_extended'); $model =& $this->getModel('item'); for ($i = 0; $i < sizeof($items); $i++) { //Item group if ($task == "category" || $task == "") { if ($i < $params->get('num_links') + $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items')) { $items[$i]->itemGroup = 'links'; } if ($i < $params->get('num_secondary_items') + $params->get('num_leading_items') + $params->get('num_primary_items')) { $items[$i]->itemGroup = 'secondary'; } if ($i < $params->get('num_primary_items') + $params->get('num_leading_items')) { $items[$i]->itemGroup = 'primary'; } if ($i < $params->get('num_leading_items')) { $items[$i]->itemGroup = 'leading'; } } if ($user->guest) { $hits = $items[$i]->hits; $items[$i]->hits = 0; $items[$i] = $cache->call(array('K2ModelItem', 'prepareItem'), $items[$i], $view, $task); $items[$i]->hits = $hits; } else { $items[$i] = $model->prepareItem($items[$i], $view, $task); } //Plugins $items[$i] = $model->execPlugins($items[$i], $view, $task); //Trigger comments counter event $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2CommentsCounter', array(&$items[$i], &$params, $limitstart)); $items[$i]->event->K2CommentsCounter = trim(implode("\n", $results)); } //Set title $document =& JFactory::getDocument(); $menus =& JSite::getMenu(); $menu = $menus->getActive(); if (is_object($menu)) { $menu_params = new JParameter($menu->params); if (!$menu_params->get('page_title')) { $params->set('page_title', $title); } } else { $params->set('page_title', $title); } $document->setTitle($params->get('page_title')); //Pathway $pathway =& $mainframe->getPathWay(); if (!isset($menu->query['task'])) { $menu->query['task'] = ''; } if ($menu) { switch ($task) { case 'category': if ($menu->query['task'] != 'category' || $menu->query['id'] != JRequest::getInt('id')) { $pathway->addItem($title, ''); } break; case 'user': if ($menu->query['task'] != 'user' || $menu->query['id'] != JRequest::getInt('id')) { $pathway->addItem($title, ''); } break; case 'tag': if ($menu->query['task'] != 'tag' || $menu->query['tag'] != JRequest::getVar('tag')) { $pathway->addItem($title, ''); } break; case 'search': case 'date': $pathway->addItem($title, ''); break; } } //Feed link $config =& JFactory::getConfig(); $menu =& JSite::getMenu(); $default = $menu->getDefault(); $active = $menu->getActive(); if ($task == 'tag') { $link = K2HelperRoute::getTagRoute(JRequest::getVar('tag')); } else { $link = ''; } if (!is_null($active) && $active->id == $default->id && $config->getValue('config.sef')) { $link .= '&Itemid=' . $active->id . '&format=feed&limitstart='; } else { $link .= '&format=feed&limitstart='; } $feed = JRoute::_($link); $this->assignRef('feed', $feed); //Add head feed link if ($params->get('feedLink', 1)) { $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0'); $document->addHeadLink(JRoute::_($link . '&type=rss'), 'alternate', 'rel', $attribs); $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0'); $document->addHeadLink(JRoute::_($link . '&type=atom'), 'alternate', 'rel', $attribs); } //Assign data if ($task == "category" || $task == "") { $leading = @array_slice($items, 0, $params->get('num_leading_items')); $primary = @array_slice($items, $params->get('num_leading_items'), $params->get('num_primary_items')); $secondary = @array_slice($items, $params->get('num_leading_items') + $params->get('num_primary_items'), $params->get('num_secondary_items')); $links = @array_slice($items, $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items'), $params->get('num_links')); $this->assignRef('leading', $leading); $this->assignRef('primary', $primary); $this->assignRef('secondary', $secondary); $this->assignRef('links', $links); } else { $this->assignRef('items', $items); } //Set default values to avoid division by zero if ($params->get('num_leading_columns') == 0) { $params->set('num_leading_columns', 1); } if ($params->get('num_primary_columns') == 0) { $params->set('num_primary_columns', 1); } if ($params->get('num_secondary_columns') == 0) { $params->set('num_secondary_columns', 1); } if ($params->get('num_links_columns') == 0) { $params->set('num_links_columns', 1); } $this->assignRef('params', $params); $this->assignRef('pagination', $pagination); //Look for template files in component folders $this->_addPath('template', JPATH_COMPONENT . DS . 'templates'); $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . 'default'); //Look for overrides in template folder (K2 template structure) $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates'); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . 'default'); //Look for overrides in template folder (Joomla! template structure) $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'default'); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2'); //Look for specific K2 theme files if ($params->get('theme')) { $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . $params->get('theme')); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . $params->get('theme')); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . $params->get('theme')); } parent::display($tpl); }
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; }
public static function getItems($cid, &$params, $counttotal = false) { jimport('joomla.filesystem.file'); $mainframe = JFactory::getApplication(); $app = JFactory::getApplication(); $appParams = $app->getParams(); $itemCount = ''; $limit = 0; $limitation = $params->get('itemCount'); $start = $app->input->getInt('ajax_reslisting_start', 0); if (isset($limitation) && (int) $limitation >= 0) { $limit = (int) $limitation; } //$limit = $params->get('itemCount', 5); //$cid = $params->get('category_id', NULL); $ordering = $params->get('itemsOrdering', ''); $componentParams = JComponentHelper::getParams('com_k2'); $limitstart = JRequest::getInt('limitstart'); $user = JFactory::getUser(); $aid = $user->get('aid'); $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql(); $nullDate = $db->getNullDate(); $query = "SELECT i.*, CASE WHEN i.modified = 0 THEN i.created ELSE i.modified END as lastChanged, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams"; if ($ordering == 'best') { $query .= ", (r.rating_sum/r.rating_count) AS rating"; } if ($ordering == 'comments') { $query .= ", COUNT(comments.id) AS numOfComments"; } $query .= " FROM #__k2_items as i RIGHT JOIN #__k2_categories c ON c.id = i.catid"; if ($ordering == 'best') { $query .= " LEFT JOIN #__k2_rating r ON r.itemID = i.id"; } if ($ordering == 'comments') { $query .= " LEFT JOIN #__k2_comments comments ON comments.itemID = i.id"; } if (K2_JVERSION != '15') { $query .= " WHERE i.published = 1 AND i.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND i.trash = 0 AND c.published = 1 AND c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND c.trash = 0"; } else { $query .= " WHERE i.published = 1 AND i.access <= {$aid} AND i.trash = 0 AND c.published = 1 AND c.access <= {$aid} AND c.trash = 0"; } $query .= " AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )"; $query .= " AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )"; if (!is_null($cid)) { if (is_array($cid)) { $catidpreload = $params->get('category_preload'); $list = self::getCategoriesFull($cid, $params); $catids = array(); if (!empty($list)) { foreach ($list as $item) { $catids[] = $item->id; } } if (in_array($catidpreload, $catids)) { array_unshift($catids, $catidpreload); } $cids = array_unique($catids); JArrayHelper::toInteger($cids); $query .= " AND i.catid IN(" . implode(',', $cids) . ")"; } } if ($params->get('FeaturedItems') == '0') { $query .= " AND i.featured != 1"; } if ($params->get('FeaturedItems') == '2') { $query .= " AND i.featured = 1"; } if ($params->get('videosOnly')) { $query .= " AND (i.video IS NOT NULL AND i.video!='')"; } if ($ordering == 'comments') { $query .= " AND comments.published = 1"; } if (K2_JVERSION != '15') { if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND c.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") AND i.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ")"; } } switch ($ordering) { case 'date': $orderby = 'i.created ASC'; break; case 'rdate': $orderby = 'i.created DESC'; break; case 'alpha': $orderby = 'i.title'; break; case 'ralpha': $orderby = 'i.title DESC'; break; case 'order': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering'; } else { $orderby = 'i.ordering'; } break; case 'rorder': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering DESC'; } else { $orderby = 'i.ordering DESC'; } break; case 'hits': if ($params->get('popularityRange')) { $datenow = JFactory::getDate(); $date = K2_JVERSION == '15' ? $datenow->toMySQL() : $datenow->toSql(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $orderby = 'i.hits DESC'; break; case 'rand': $orderby = 'RAND()'; break; case 'best': $orderby = 'rating DESC'; break; case 'comments': if ($params->get('popularityRange')) { $datenow = JFactory::getDate(); $date = K2_JVERSION == '15' ? $datenow->toMySQL() : $datenow->toSql(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $query .= " GROUP BY i.id "; $orderby = 'numOfComments DESC'; break; case 'modified': $orderby = 'lastChanged DESC'; break; case 'publishUp': $orderby = 'i.publish_up DESC'; break; default: $orderby = 'i.id DESC'; break; } $query .= " ORDER BY " . $orderby; if ($counttotal) { $db->setQuery($query); $items = $db->loadObjectList(); return count($items); } else { $db->setQuery($query, $start, $limit); $items = $db->loadObjectList(); } $model = K2Model::getInstance('Item', 'K2Model'); if (count($items)) { foreach ($items as $item) { $item->event = new stdClass(); //Clean title $item->title = JFilterOutput::ampReplace($item->title); //Images if ($params->get('itemImage')) { $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 ($componentParams->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 ($componentParams->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 ($componentParams->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 ($componentParams->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 ($componentParams->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 ($componentParams->get('imageTimestamp')) { $item->imageGeneric .= $timestamp; } } $image = 'image' . $params->get('itemImgSize', 'Small'); if (isset($item->{$image})) { $item->image = $item->{$image}; } } //Read more link $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->categoryalias)))); //Tags if ($params->get('itemTags')) { $tags = $model->getItemTags($item->id); for ($i = 0; $i < sizeof($tags); $i++) { $tags[$i]->link = JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name)); } $item->tags = $tags; } //Category link //if ($params->get('itemCategory')) $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); //Extra fields if ($params->get('itemExtraFields')) { $item->extra_fields = $model->getItemExtraFields($item->extra_fields, $item); } //Comments counter //if ($params->get('itemCommentsCounter')) $item->numOfComments = $model->countItemComments($item->id); $item->rating = $model->getRating($item->id); //Attachments if ($params->get('itemAttachments')) { $item->attachments = $model->getItemAttachments($item->id); } //Import plugins // if ($format != 'feed') // { // $dispatcher = JDispatcher::getInstance(); // JPluginHelper::importPlugin('content'); // } //Video if ($params->get('itemVideo') && $format != 'feed') { $params->set('vfolder', 'media/k2/videos'); $params->set('afolder', 'media/k2/audio'); $item->text = $item->video; if (K2_JVERSION == '15') { $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); } else { $dispatcher->trigger('onContentPrepare', array('mod_k2_content.', &$item, &$params, $limitstart)); } $item->video = $item->text; } // Introtext $item->text = $item->introtext; // if ($params->get('itemIntroText')) // { // // Word limit // if ($params->get('itemIntroTextWordLimit')) // { // $item->text .= K2HelperUtilities::wordLimit($item->introtext, $params->get('itemIntroTextWordLimit')); // } // else // { // $item->text .= $item->introtext; // } // } // if ($format != 'feed') // { // $params->set('parsedInModule', 1); // // for plugins to know when they are parsed inside this module // if ($params->get('JPlugins', 1)) // { // //Plugins // if (K2_JVERSION != '15') // { // $item->event->BeforeDisplay = ''; // $item->event->AfterDisplay = ''; // $dispatcher->trigger('onContentPrepare', array('mod_k2_content', &$item, &$params, $limitstart)); // $results = $dispatcher->trigger('onContentAfterTitle', array('mod_k2_content', &$item, &$params, $limitstart)); // $item->event->AfterDisplayTitle = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onContentBeforeDisplay', array('mod_k2_content', &$item, &$params, $limitstart)); // $item->event->BeforeDisplayContent = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onContentAfterDisplay', array('mod_k2_content', &$item, &$params, $limitstart)); // $item->event->AfterDisplayContent = trim(implode("\n", $results)); // } // else // { // $results = $dispatcher->trigger('onBeforeDisplay', array(&$item, &$params, $limitstart)); // $item->event->BeforeDisplay = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onAfterDisplay', array(&$item, &$params, $limitstart)); // $item->event->AfterDisplay = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onAfterDisplayTitle', array(&$item, &$params, $limitstart)); // $item->event->AfterDisplayTitle = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onBeforeDisplayContent', array(&$item, &$params, $limitstart)); // $item->event->BeforeDisplayContent = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onAfterDisplayContent', array(&$item, &$params, $limitstart)); // $item->event->AfterDisplayContent = trim(implode("\n", $results)); // $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); // } // } // //Init K2 plugin events // $item->event->K2BeforeDisplay = ''; // $item->event->K2AfterDisplay = ''; // $item->event->K2AfterDisplayTitle = ''; // $item->event->K2BeforeDisplayContent = ''; // $item->event->K2AfterDisplayContent = ''; // $item->event->K2CommentsCounter = ''; // if ($params->get('K2Plugins', 1)) // { // //K2 plugins // JPluginHelper::importPlugin('k2'); // $results = $dispatcher->trigger('onK2BeforeDisplay', array(&$item, &$params, $limitstart)); // $item->event->K2BeforeDisplay = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onK2AfterDisplay', array(&$item, &$params, $limitstart)); // $item->event->K2AfterDisplay = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onK2AfterDisplayTitle', array(&$item, &$params, $limitstart)); // $item->event->K2AfterDisplayTitle = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onK2BeforeDisplayContent', array(&$item, &$params, $limitstart)); // $item->event->K2BeforeDisplayContent = trim(implode("\n", $results)); // $results = $dispatcher->trigger('onK2AfterDisplayContent', array(&$item, &$params, $limitstart)); // $item->event->K2AfterDisplayContent = trim(implode("\n", $results)); // $dispatcher->trigger('onK2PrepareContent', array(&$item, &$params, $limitstart)); // if ($params->get('itemCommentsCounter')) // { // $results = $dispatcher->trigger('onK2CommentsCounter', array(&$item, &$params, $limitstart)); // $item->event->K2CommentsCounter = trim(implode("\n", $results)); // } // } // } // Restore the intotext variable after plugins execution $item->introtext = $item->text; //Clean the plugin tags $item->introtext = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext); //Author if ($params->get('itemAuthor')) { if (!empty($item->created_by_alias)) { $item->author = $item->created_by_alias; $item->authorGender = NULL; $item->authorDescription = NULL; if ($params->get('itemAuthorAvatar')) { $item->authorAvatar = K2HelperUtilities::getAvatar('alias'); } $item->authorLink = Juri::root(true); } else { $author = JFactory::getUser($item->created_by); $item->author = $author->name; $query = "SELECT `description`, `gender` FROM #__k2_users WHERE userID=" . (int) $author->id; $db->setQuery($query, 0, 1); $result = $db->loadObject(); if ($result) { $item->authorGender = $result->gender; $item->authorDescription = $result->description; } else { $item->authorGender = NULL; $item->authorDescription = NULL; } if ($params->get('itemAuthorAvatar')) { $item->authorAvatar = K2HelperUtilities::getAvatar($author->id, $author->email, $componentParams->get('userImageWidth')); } //Author Link $item->authorLink = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); } } // Extra fields plugins if (is_array($item->extra_fields)) { foreach ($item->extra_fields as $key => $extraField) { if ($extraField->type == 'textarea' || $extraField->type == 'textfield') { $tmp = new JObject(); $tmp->text = $extraField->value; if ($params->get('JPlugins', 1)) { if (K2_JVERSION != '15') { $dispatcher->trigger('onContentPrepare', array('mod_k2_content', &$tmp, &$params, $limitstart)); } else { $dispatcher->trigger('onPrepareContent', array(&$tmp, &$params, $limitstart)); } } if ($params->get('K2Plugins', 1)) { $dispatcher->trigger('onK2PrepareContent', array(&$tmp, &$params, $limitstart)); } $extraField->value = $tmp->text; } } } $rows[] = $item; } return $rows; } }
function prepare($items) { $intros = $links = array(); if (count($items)) { foreach ($items as $index => $item) { $item->slug = $item->id . ':' . urlencode($item->alias); $item->catslug = $item->catid . ':' . urlencode($item->category_alias); $item->link = JRoute::_(K2HelperRoute::getItemRoute($item->slug, $item->catslug)); $item->linkcat = JRoute::_(K2HelperRoute::getCategoryRoute($item->catid)); $item->text = $item->introtext . $item->fulltext; $item->emailLink = JURI::base() . K2HelperRoute::getItemRoute($item->slug, $item->catslug); if ($index < $this->num_intro) { if ((bool) $this->params->get('intro_thumbnail')) { $thumbnail_width = (int) $this->params->get('intro_thumbnail_width', 64); $thumbnail_height = (int) $this->params->get('intro_thumbnail_height', 64); $images = JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_L.jpg'; if (JFile::exists($images)) { $images = 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_L.jpg'; $path = $this->createPath(); $item->thumbnails = $this->createThumb($images, $path, $thumbnail_width, $thumbnail_height, $this->params->get('intro_thumbnail')); } else { $item->thumbnails = $this->getThumbnails($item->text, $this->params->get('intro_thumbnail'), $thumbnail_width, $thumbnail_height, $this->params->get('intro_thumbnail_position') == 'inside'); } if (!$item->thumbnails) { $item->thumbnails = JURI::root() . 'modules/mod_jvlatest_news/tmpl/default/images/noImage.png'; } } else { //$images = json_decode($item->image); //$item->thumbnails = $images[0]; } if ($this->params->get('cut_intro') > 0) { $item->text = cut_html_string($this->clearContentImage($item->introtext), (int) $this->params->get('cut_intro')); } else { $item->text = $this->clearContentImage($item->introtext); } $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onPrepareContent', array(&$item, &$params, 0)); if ($this->params->get('show_tag', 0)) { $model = K2Model::getInstance('Item', 'K2Model'); $tags = $model->getItemTags($item->id); for ($x = 0; $x < sizeof($tags); $x++) { $tags[$x]->link = JRoute::_(K2HelperRoute::getTagRoute($tags[$x]->name)); } $item->tags = $tags; } $intros[] = $item; } elseif ($this->nums_link > 0) { $links[] = $item; } } } $items = new stdClass(); $items->intros = $intros; $items->links = $links; return $items; }
public static function getListItems($cid, &$params) { $mainframe = JFactory::getApplication(); $limit = $params->get('itemCount', 5); $ordering = $params->get('itemsOrdering', ''); $user = JFactory::getUser(); $aid = $user->get('aid'); $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql(); $nullDate = $db->getNullDate(); $query = "SELECT i.*, CASE WHEN i.modified = 0 THEN i.created ELSE i.modified END as lastChanged, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams"; if ($ordering == 'best') { $query .= ", (r.rating_sum/r.rating_count) AS rating"; } if ($ordering == 'comments') { $query .= ", COUNT(comments.id) AS numOfComments"; } $query .= " FROM #__k2_items as i RIGHT JOIN #__k2_categories c ON c.id = i.catid"; if ($ordering == 'best') { $query .= " LEFT JOIN #__k2_rating r ON r.itemID = i.id"; } if ($ordering == 'comments') { $query .= " LEFT JOIN #__k2_comments comments ON comments.itemID = i.id"; } if (K2_JVERSION != '15') { $query .= " WHERE i.published = 1 AND i.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND i.trash = 0 AND c.published = 1 AND c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND c.trash = 0"; } else { $query .= " WHERE i.published = 1 AND i.access <= {$aid} AND i.trash = 0 AND c.published = 1 AND c.access <= {$aid} AND c.trash = 0"; } $query .= " AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )"; $query .= " AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )"; if (!is_null($cid)) { if (is_array($cid)) { if ($params->get('getChildren')) { $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { JArrayHelper::toInteger($cid); $query .= " AND i.catid IN(" . implode(',', $cid) . ")"; } } else { if ($params->get('getChildren')) { $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { $query .= " AND i.catid=" . (int) $cid; } } } if ($params->get('FeaturedItems') == '0') { $query .= " AND i.featured != 1"; } if ($params->get('FeaturedItems') == '2') { $query .= " AND i.featured = 1"; } if ($params->get('videosOnly')) { $query .= " AND (i.video IS NOT NULL AND i.video!='')"; } if ($ordering == 'comments') { $query .= " AND comments.published = 1"; } if (K2_JVERSION != '15') { if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND c.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") AND i.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ")"; } } switch ($ordering) { case 'date': $orderby = 'i.created ASC'; break; case 'rdate': $orderby = 'i.created DESC'; break; case 'alpha': $orderby = 'i.title'; break; case 'ralpha': $orderby = 'i.title DESC'; break; case 'order': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering'; } else { $orderby = 'i.ordering'; } break; case 'rorder': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering DESC'; } else { $orderby = 'i.ordering DESC'; } break; case 'hits': if ($params->get('popularityRange')) { $datenow = JFactory::getDate(); $date = K2_JVERSION == '15' ? $datenow->toMySQL() : $datenow->toSql(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $orderby = 'i.hits DESC'; break; case 'rand': $orderby = 'RAND()'; break; case 'best': $orderby = 'rating DESC'; break; case 'comments': if ($params->get('popularityRange')) { $datenow = JFactory::getDate(); $date = K2_JVERSION == '15' ? $datenow->toMySQL() : $datenow->toSql(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $query .= " GROUP BY i.id "; $orderby = 'numOfComments DESC'; break; case 'modified': $orderby = 'lastChanged DESC'; break; case 'publishUp': $orderby = 'i.publish_up DESC'; break; default: $orderby = 'i.id DESC'; break; } $query .= " ORDER BY " . $orderby; $db->setQuery($query, 0, $limit); $items = $db->loadObjectList(); $model = K2Model::getInstance('Item', 'K2Model'); $show_introtext = $params->get('item_desc_display', 0); $introtext_limit = $params->get('item_desc_max_characs', 100); if (count($items)) { foreach ($items as $item) { //Clean title $item->name = JFilterOutput::ampReplace($item->title); //Read more link $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->categoryalias)))); //Comments counter if ($params->get('itemCommentsCounter')) { $item->numOfComments = $model->countItemComments($item->id); } //author $item->author = JFactory::getUser($item->created_by)->name; //Tags $item->tags = ''; if ($params->get('item_tags_display')) { $tags = $model->getItemTags($item->id); for ($i = 0; $i < sizeof($tags); $i++) { $tags[$i]->link = JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name)); } $item->tags = $tags; } $item->_introtext = self::_cleanText($item->introtext); $item->displayIntrotext = $show_introtext ? self::truncate($item->_introtext, $introtext_limit) : ''; $rows[] = $item; } return $rows; } }
function getItems(&$params, $format = 'html') { jimport('joomla.filesystem.file'); $limit = $params->get('itemCount', 5); $cid = $params->get('category_id', NULL); $ordering = $params->get('itemsOrdering', ''); $componentParams =& JComponentHelper::getParams('com_k2'); $limitstart = JRequest::getInt('limitstart'); $user =& JFactory::getUser(); $aid = $user->get('aid'); $db =& JFactory::getDBO(); $jnow =& JFactory::getDate(); $now = $jnow->toMySQL(); $nullDate = $db->getNullDate(); if ($params->get('source') == 'specific') { $value = $params->get('items'); $current = array(); if (is_string($value) && !empty($value)) { $current[] = $value; } if (is_array($value)) { $current = $value; } $items = array(); foreach ($current as $id) { $query = "SELECT i.*, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams"; $query .= " FROM #__k2_items as i LEFT JOIN #__k2_categories c ON c.id = i.catid"; $query .= " WHERE i.published = 1 AND i.access <= {$aid} AND i.trash = 0 AND c.published = 1 AND c.access <= {$aid} AND c.trash = 0"; $query .= " AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )"; $query .= " AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )"; $query .= " AND i.id={$id}"; $db->setQuery($query); $item = $db->loadObject(); if ($item) { $items[] = $item; } } } else { $query = "SELECT i.*, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams"; if ($ordering == 'best') { $query .= ", (r.rating_sum/r.rating_count) AS rating"; } if ($ordering == 'comments') { $query .= ", COUNT(comments.id) AS numOfComments"; } $query .= " FROM #__k2_items as i LEFT JOIN #__k2_categories c ON c.id = i.catid"; if ($ordering == 'best') { $query .= " LEFT JOIN #__k2_rating r ON r.itemID = i.id"; } if ($ordering == 'comments') { $query .= " LEFT JOIN #__k2_comments comments ON comments.itemID = i.id"; } $query .= " WHERE i.published = 1 AND i.access <= {$aid} AND i.trash = 0 AND c.published = 1 AND c.access <= {$aid} AND c.trash = 0"; $query .= " AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )"; $query .= " AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )"; if ($params->get('catfilter')) { if (!is_null($cid)) { if (is_array($cid)) { if ($params->get('getChildren')) { require_once JPATH_SITE . DS . 'components' . DS . 'com_k2' . DS . 'models' . DS . 'itemlist.php'; $allChildren = array(); foreach ($cid as $id) { $categories = K2ModelItemlist::getCategoryChilds($id, true); $categories[] = $id; $categories = @array_unique($categories); $allChildren = @array_merge($allChildren, $categories); } $allChildren = @array_unique($allChildren); JArrayHelper::toInteger($allChildren); $sql = @implode(',', $allChildren); $query .= " AND i.catid IN ({$sql})"; } else { JArrayHelper::toInteger($cid); $query .= " AND i.catid IN(" . implode(',', $cid) . ")"; } } else { if ($params->get('getChildren')) { require_once JPATH_SITE . DS . 'components' . DS . 'com_k2' . DS . 'models' . DS . 'itemlist.php'; $categories = K2ModelItemlist::getCategoryChilds($cid, true); $categories[] = $cid; $categories = @array_unique($categories); JArrayHelper::toInteger($categories); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { $query .= " AND i.catid=" . (int) $cid; } } } } if ($params->get('FeaturedItems') == '0') { $query .= " AND i.featured != 1"; } if ($params->get('FeaturedItems') == '2') { $query .= " AND i.featured = 1"; } if ($params->get('videosOnly')) { $query .= " AND (i.video IS NOT NULL AND i.video!='')"; } if ($ordering == 'comments') { $query .= " AND comments.published = 1"; } switch ($ordering) { case 'date': $orderby = 'i.created ASC'; break; case 'rdate': $orderby = 'i.created DESC'; break; case 'alpha': $orderby = 'i.title'; break; case 'ralpha': $orderby = 'i.title DESC'; break; case 'order': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering'; } else { $orderby = 'i.ordering'; } break; case 'rorder': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering DESC'; } else { $orderby = 'i.ordering DESC'; } break; case 'hits': if ($params->get('popularityRange')) { $datenow =& JFactory::getDate(); $date = $datenow->toMySQL(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $orderby = 'i.hits DESC'; break; case 'rand': $orderby = 'RAND()'; break; case 'best': $orderby = 'rating DESC'; break; case 'comments': if ($params->get('popularityRange')) { $datenow =& JFactory::getDate(); $date = $datenow->toMySQL(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $query .= " GROUP BY i.id "; $orderby = 'numOfComments DESC'; break; case 'modified': $orderby = 'i.modified DESC'; break; default: $orderby = 'i.id DESC'; break; } $query .= " ORDER BY " . $orderby; $db->setQuery($query, 0, $limit); $items = $db->loadObjectList(); } require_once JPATH_SITE . DS . 'components' . DS . 'com_k2' . DS . 'models' . DS . 'item.php'; $model = new K2ModelItem(); if (count($items)) { foreach ($items as $item) { //Clean title $item->title = JFilterOutput::ampReplace($item->title); //Images if ($params->get('itemImage')) { if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_XS.jpg')) { $item->imageXSmall = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_XS.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_S.jpg')) { $item->imageSmall = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_S.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_M.jpg')) { $item->imageMedium = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_M.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_L.jpg')) { $item->imageLarge = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_L.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_XL.jpg')) { $item->imageXLarge = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_XL.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_Generic.jpg')) { $item->imageGeneric = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_Generic.jpg'; } $image = 'image' . $params->get('itemImgSize', 'Small'); if (isset($item->{$image})) { $item->image = $item->{$image}; } } //Read more link $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->categoryalias)))); //Tags if ($params->get('itemTags')) { $tags = $model->getItemTags($item->id); for ($i = 0; $i < sizeof($tags); $i++) { $tags[$i]->link = JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name)); } $item->tags = $tags; } //Category link if ($params->get('itemCategory')) { $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); } //Extra fields if ($params->get('itemExtraFields')) { $item->extra_fields = $model->getItemExtraFields($item->extra_fields); } //Comments counter if ($params->get('itemCommentsCounter')) { $item->numOfComments = $model->countItemComments($item->id); } //Attachments if ($params->get('itemAttachments')) { $item->attachments = $model->getItemAttachments($item->id); } //Import plugins if ($format != 'feed') { $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); } //Video if ($params->get('itemVideo') && $format != 'feed') { $params->set('vfolder', 'media/k2/videos'); $item->text = $item->video; $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); $item->video = $item->text; } // Introtext $item->text = ''; if ($params->get('itemIntroText')) { // Word limit if ($params->get('itemIntroTextWordLimit')) { $item->text .= K2HelperUtilities::wordLimit($item->introtext, $params->get('itemIntroTextWordLimit')); } else { $item->text .= $item->introtext; } } if ($format != 'feed') { $params->set('parsedInModule', 1); // for plugins to know when they are parsed inside this module if ($params->get('JPlugins', 1)) { //Plugins $results = $dispatcher->trigger('onBeforeDisplay', array(&$item, &$params, $limitstart)); $item->event->BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplay', array(&$item, &$params, $limitstart)); $item->event->AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayTitle', array(&$item, &$params, $limitstart)); $item->event->AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onBeforeDisplayContent', array(&$item, &$params, $limitstart)); $item->event->BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayContent', array(&$item, &$params, $limitstart)); $item->event->AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); $item->introtext = $item->text; } //Init K2 plugin events $item->event->K2BeforeDisplay = ''; $item->event->K2AfterDisplay = ''; $item->event->K2AfterDisplayTitle = ''; $item->event->K2BeforeDisplayContent = ''; $item->event->K2AfterDisplayContent = ''; $item->event->K2CommentsCounter = ''; if ($params->get('K2Plugins', 1)) { //K2 plugins JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2BeforeDisplay', array(&$item, &$params, $limitstart)); $item->event->K2BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplay', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayTitle', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2BeforeDisplayContent', array(&$item, &$params, $limitstart)); $item->event->K2BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayContent', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onK2PrepareContent', array(&$item, &$params, $limitstart)); $item->introtext = $item->text; if ($params->get('itemCommentsCounter')) { $results = $dispatcher->trigger('onK2CommentsCounter', array(&$item, &$params, $limitstart)); $item->event->K2CommentsCounter = trim(implode("\n", $results)); } } } //Clean the plugin tags $item->introtext = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext); //Author if ($params->get('itemAuthor')) { if (!empty($item->created_by_alias)) { $item->author = $item->created_by_alias; $item->authorGender = NULL; if ($params->get('itemAuthorAvatar')) { $item->authorAvatar = K2HelperUtilities::getAvatar('alias'); } } else { $author =& JFactory::getUser($item->created_by); $item->author = $author->name; $query = "SELECT `gender` FROM #__k2_users WHERE userID=" . (int) $author->id; $db->setQuery($query, 0, 1); $item->authorGender = $db->loadResult(); if ($params->get('itemAuthorAvatar')) { $item->authorAvatar = K2HelperUtilities::getAvatar($author->id, $author->email, $componentParams->get('userImageWidth')); } //Author Link $item->authorLink = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); } } $rows[] = $item; } return $rows; } }
static function info($config, $item, $num = 1) { // %AUTHOR %DATE %HITS %CATEGORY $news_info = ''; // if ($num == 1) { if ($config['news_content_info_pos'] != 'disabled') { $class = 'nspInfo1 t' . $config['news_content_info_pos'] . ' f' . $config['news_content_info_float']; } } else { if ($config['news_content_info2_pos'] != 'disabled') { $class = 'nspInfo2 t' . $config['news_content_info2_pos'] . ' f' . $config['news_content_info2_float']; } } // if ($config['news_content_info_pos'] != 'disabled' && $num == 1 || $config['news_content_info2_pos'] != 'disabled' && $num == 2) { $news_info_tag = stripos($config['info' . ($num == 2 ? '2' : '') . '_format'], '%CART') !== FALSE ? 'div' : 'p'; $news_info = '<' . $news_info_tag . ' class="nspInfo ' . $class . '">' . $config['info' . ($num == 2 ? '2' : '') . '_format'] . '</' . $news_info_tag . '>'; // $author = trim(htmlspecialchars($item['author_alias'])) != '' ? htmlspecialchars($item['author_alias']) : htmlspecialchars($item['author_username']); $info_author = $config['user_avatar'] == 1 ? '<span><img src="' . K2HelperUtilities::getAvatar($item['author_id'], $item['author_email'], $config['avatar_size']) . '" alt="' . $author . ' - avatar" class="nspAvatar" width="' . $config['avatar_size'] . '" height="' . $config['avatar_size'] . '" /> ' . $author . '</span>' : $author; // $info_date = JHTML::_('date', $item['date'], $config['date_format']); // $info_hits = JText::_('MOD_NEWS_PRO_GK5_NHITS') . $item['hits']; // case when there is no rates if ($item['rating_count'] == 0) { $item['rating_count'] = 1; } $info_rate = $item['rating_count'] > 0 ? '<span class="nspRate">' . JText::_('MOD_NEWS_PRO_GK5_NSP_RATE') . ' ' . number_format($item['rating_sum'] / $item['rating_count'], 2) . '</span>' : ''; $info_stars = '<span class="nsp-stars">'; $stars_count = floor($item['rating_sum'] / $item['rating_count']); for ($i = 0; $i < 5; $i++) { $info_stars .= $i < $stars_count ? '<span class="nsp-star-1"></span>' : '<span class="nsp-star-0"></span>'; } $info_stars .= '</span>'; $info_category = $config['category_link'] == 1 ? '<a href="' . NSP_GK5_com_k2_View::categoryLink($item) . '" >' . $item['catname'] . '</a>' : $item['catname']; $info_comments = JText::_('MOD_NEWS_PRO_GK5_NO_COMMENTS'); // if (isset($item['comments'])) { if ($item['comments'] == 1) { $info_comments = JText::_('MOD_NEWS_PRO_GK5_1COMMENT'); } else { if ($item['comments'] > 1 && $item['comments'] < 5) { $info_comments = $item['comments'] . ' ' . JText::_('MOD_NEWS_PRO_GK5_MORECOMMENTS'); } else { if ($item['comments'] >= 5) { $info_comments = $item['comments'] . ' ' . JText::_('MOD_NEWS_PRO_GK5_MUCHMORECOMMENTS'); } } } } // $info_comments_short = '0'; $link = NSP_GK5_com_k2_View::itemLink($item); // if (isset($item['comments'])) { $info_comments_short = $item['comments']; } $info_comments_short = '<a href="' . $link . '">' . $info_comments_short . '</a>'; // $info_tags = ''; if (isset($item['tags']) && count($item['tags']) > 0) { $i = 0; foreach ($item['tags'] as $tag) { $link = urldecode(JRoute::_(K2HelperRoute::getTagRoute($tag))); if ($i == 0) { $info_tags .= '<a href="' . $link . '">' . $tag . '</a>'; } else { $info_tags .= ', <a href="' . $link . '">' . $tag . '</a>'; } // $i++; } } // get k2 store data $k2store_data = array('cart' => '', 'price' => ''); // get K2Store data if necessary if (stripos($news_info, '%CART') !== FALSE || stripos($news_info, '%PRICE') !== FALSE) { $k2store_data = NSP_GK5_com_k2_View::k2Store($item); if (stripos($news_info, '%CART') !== FALSE) { // load K2Store scripts $uri = JURI::getInstance(); $document = JFactory::getDocument(); $headData = $document->getHeadData(); // generate keys of script section $headData_keys = array_keys($headData["scripts"]); // set variable for false $engine_founded = false; // searching phrase mootools in scripts paths if (array_search($uri->root() . 'media/k2store/js/k2store.js', $headData_keys) > 0) { $engine_founded = true; } // if engine doesn't exists in the head section if (!$engine_founded) { // add new script tag connected with mootools from module $document->addScript($uri->root() . 'media/k2store/js/k2store.noconflict.js'); $document->addScript($uri->root() . 'media/k2store/js/k2store.js'); } } } // $news_info = str_replace('%AUTHOR', $info_author, $news_info); $news_info = str_replace('%DATE', $info_date, $news_info); $news_info = str_replace('%HITS', $info_hits, $news_info); $news_info = str_replace('%CATEGORY', $info_category, $news_info); $news_info = str_replace('%STARS', $info_stars, $news_info); $news_info = str_replace('%RATE', $info_rate, $news_info); $news_info = str_replace('%COMMENTS_SHORT', $info_comments_short, $news_info); $news_info = str_replace('%COMMENTS', $info_comments, $news_info); $news_info = str_replace('%TAGS', $info_tags, $news_info); $news_info = str_replace('%CART', $k2store_data['cart'], $news_info); $news_info = str_replace('%PRICE', $k2store_data['price'], $news_info); } else { return ''; } // return $news_info; }
function generateLayout($config, $data) { /* Available variables: {TITLE} - article title {TEXT} - article text {URL} - article URL {IMAGE_SRC} - article image URL {AUTHOR_EMAIL} - article autor e-mail {AUTHOR_NAME} - article author name {CATEGORY} - article category name {CATEGORY_URL} - article category URL {HITS} - article hits {DATE} - article date (gets format from the information block settings) {RATING} - article rating K2 specific variables: {TAGS} - article tag lists {VIDEO_HTML} - HTML of the article video {CATEGORY_IMAGE_SRC} - article category image URL */ // // Get the values // // Image $viewClass = 'NSP_GK5_' . $config['source_name'] . '_View'; // Basic data $title = NSP_GK5_Utils::cutText($data['title'], $config, 'title_limit'); $text = NSP_GK5_Utils::cutText($data['text'], $config, 'news_limit'); // URL $url = ''; if (isset($data['url'])) { $url = $data['url']; } else { $url = call_user_func(array($viewClass, 'itemLink'), $data, $config); } // PHP 5.3: //$image_src = $viewClass::image($config, $data, true); $image_src = call_user_func(array($viewClass, 'image'), $config, $data, true); // Author data $author_email = $data['author_email']; $author_name = $data['author']; // Category data $category = $data['catname']; $category_url = ''; if (isset($data['caturl'])) { $category_url = $data['caturl']; } else { $category_url = call_user_func(array($viewClass, 'categoryLink'), $data); } // Other data $hits = $data['hits']; $date = JHTML::_('date', $data['date'], $config['date_format']); $rating = $data['rating_count'] > 0 ? number_format($data['rating_sum'] / $data['rating_count'], 2) : 0; // // Get the layout text // if (is_file(JPATH_ROOT . DS . 'modules' . DS . 'mod_news_pro_gk5' . DS . 'article_formats' . DS . $config['article_format'])) { // read the format file $format_file = file_get_contents(JPATH_ROOT . DS . 'modules' . DS . 'mod_news_pro_gk5' . DS . 'article_formats' . DS . $config['article_format']); // replace values $to_replace = array('{TITLE}', '{TEXT}', '{URL}', '{IMAGE_SRC}', '{AUTHOR_EMAIL}', '{AUTHOR_NAME}', '{CATEGORY}', '{CATEGORY_URL}', '{HITS}', '{DATE}', '{RATING}'); // values for the replacement $replacement = array($title, $text, $url, $image_src, $author_email, $author_name, $category, $category_url, $hits, $date, $rating); // replace values in the format file $format_file = str_replace($to_replace, $replacement, $format_file); // replacements only for K2 if (stripos($config['data_source'], 'k2_') !== FALSE) { // tags list value $tags = ''; // if tags exists if (isset($data['tags']) && count($data['tags']) > 0) { $i = 0; foreach ($data['tags'] as $tag) { $link = urldecode(JRoute::_(K2HelperRoute::getTagRoute($tag))); if ($i == 0) { $tags .= '<a href="' . $link . '">' . $tag . '</a>'; } else { $tags .= ', <a href="' . $link . '">' . $tag . '</a>'; } // $i++; } } // video HTML value $video_html = $data['video']; // category image URL value $category_image_src = ''; // if the category image exists if ($data['cat_image'] != '') { $category_image_src = JURI::root() . 'media/k2/categories/' . $data['cat_image']; } // replace values $to_replace = array('{TAGS}', '{VIDEO_HTML}', '{CATEGORY_IMAGE_SRC}'); // values for the replacement $replacement = array($tags, $video_html, $category_image_src); // replace values in the format file $format_file = str_replace($to_replace, $replacement, $format_file); } // parse lang rules $matches = array(); preg_match_all('@{{.*?}}@', $format_file, $matches); if (count($matches) > 0) { for ($i = 0; $i < count($matches); $i++) { $phrase = $matches[$i][0]; $phrase = JText::_(str_replace(array('{{', '}}'), '', $phrase)); $format_file = str_replace($matches[$i][0], $phrase, $format_file); } } // PARSING PLUGINS if ($config['parse_plugins'] == TRUE) { $format_file = JHtml::_('content.prepare', $format_file); } // CLEANING PLUGINS if ($config['clean_plugins'] == TRUE) { $format_file = preg_replace("/(\\{.+?\\}.+?\\{.+?})|(\\{.+?\\})/", "", $format_file); } return $format_file; } else { return ''; } }
function prepareItem($item, $view, $task){ jimport('joomla.filesystem.file'); JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR.DS.'tables'); $limitstart=JRequest::getInt('limitstart'); //Initialize params if ($view!='item'){ $component = JComponentHelper::getComponent( 'com_k2' ); $params = new JParameter( $component->params ); $itemid = JRequest::getInt( 'Itemid' ); if ($itemid) { $menu = JSite::getMenu(); $menuparams = $menu->getParams( $itemid ); $params->merge( $menuparams ); } } else { $params = & JComponentHelper::getParams('com_k2'); } //Category $db = & JFactory::getDBO(); $query = "SELECT * FROM #__k2_categories WHERE id=".(int)$item->catid; $db->setQuery($query, 0, 1); $category = $db->loadObject(); $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 = new JParameter( $category->params ); $iparams = new JParameter( $item->params ); $item->params= $params; if ($cparams->get('inheritFrom')){ $masterCategoryID = $cparams->get('inheritFrom'); $query = "SELECT * FROM #__k2_categories WHERE id=".(int)$masterCategoryID; $db->setQuery($query, 0, 1); $masterCategory = $db->loadObject(); $cparams = new JParameter( $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 = K2ModelItem::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=''; if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_XS.jpg')) $item->imageXSmall = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_XS.jpg'; if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_S.jpg')) $item->imageSmall = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_S.jpg'; if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_M.jpg')) $item->imageMedium = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_M.jpg'; if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_L.jpg')) $item->imageLarge = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_L.jpg'; if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_XL.jpg')) $item->imageXLarge = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_XL.jpg'; if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_Generic.jpg')) $item->imageGeneric = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_Generic.jpg'; //Extra fields if( ($view=='item' && $item->params->get('itemExtraFields')) || ($view=='itemlist' && ($task=='' || $task=='category') && $item->params->get('catItemExtraFields')) || ($view=='itemlist' && ($task=='search' || $task=='tag' || $task=='date') && $item->params->get('genericItemExtraFields')) ) { $item->extra_fields=K2ModelItem::getItemExtraFields($item->extra_fields); } //Attachments if( ($view=='item' && $item->params->get('itemAttachments')) || ($view=='itemlist' && ($task=='' || $task=='category') && $item->params->get('catItemAttachments')) ) { $item->attachments=K2ModelItem::getItemAttachments($item->id); } //Rating if( ($view=='item' && $item->params->get('itemRating')) || ($view=='itemlist' && ($task=='' || $task=='category') && $item->params->get('catItemRating')) ) { $item->votingPercentage = K2ModelItem::getVotesPercentage($item->id); $item->numOfvotes = K2ModelItem::getVotesNum($item->id); } //Filtering if ($params->get('introTextCleanup')){ $filterTags = preg_split( '#[,\s]+#', trim( $params->get( 'introTextCleanupExcludeTags' ) ) ); $filterAttrs = preg_split( '#[,\s]+#', trim( $params->get( 'introTextCleanupTagAttr' ) ) ); $filter = new JFilterInput( $filterTags, $filterAttrs, 0, 1 ); $item->introtext= $filter->clean( $item->introtext ); } if ($params->get('fullTextCleanup')){ $filterTags = preg_split( '#[,\s]+#', trim( $params->get( 'fullTextCleanupExcludeTags' ) ) ); $filterAttrs = preg_split( '#[,\s]+#', trim( $params->get( 'fullTextCleanupTagAttr' ) ) ); $filter = new JFilterInput( $filterTags, $filterAttrs, 0, 1 ); $item->fulltext= $filter->clean( $item->fulltext ); } 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') ) { if (!empty($item->created_by_alias)){ $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 = K2ModelItem::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 $item->numOfComments = K2ModelItem::countItemComments($item->id); return $item; }
public static function getList($params) { $app = JFactory::getApplication(); $lang = JFactory::getLanguage(); $user = JFactory::getUser(); $db = JFactory::getDbo(); $query = $db->getQuery(true); // Source $source = $params->get('source', 'categories'); $exclude = $params->get('exclude', array()); $articles_k2 = $params->get('articles_k2', array()); $categories_k2 = $params->get('categories_k2', array()); // General $readmore = $params->get('readmore', ''); $ordering = $params->get('ordering', 'random'); $item_counts = $params->get('item_counts', 5); $skip_counts = $params->get('skip_counts', 0); $limit_intro = $params->get('limit_intro', 200); // Display $show_date = $params->get('show_date', 1); $show_hits = $params->get('show_hits', 1); $show_tags = $params->get('show_tags', 1); $show_image = $params->get('show_image', 1); $show_intro = $params->get('show_intro', 1); $show_title = $params->get('show_title', 1); $show_author = $params->get('show_author', 1); $show_avatar = $params->get('show_avatar', 1); $show_rating = $params->get('show_rating', 1); $show_profile = $params->get('show_profile', 1); $show_category = $params->get('show_category', 1); $show_comments = $params->get('show_comments', 1); // Date $date_type = $params->get('date_type', 'created'); $date_format = $params->get('date_format', 'd F Y'); // Image $image_width = $params->get('image_width', 200); $image_height = $params->get('image_height', 100); $image_quality = $params->get('image_quality', 100); $image_link = $params->get('image_link', 'none'); $image_title = $params->get('image_title', 1); $image_resize = $params->get('image_resize', 1); $image_source = $params->get('image_source', 'auto'); // 3rd-party $avatar_width = $params->get('avatar_width', 60); $avatar_height = $params->get('avatar_height', 60); $avatar_system = $params->get('avatar_system', 'kunena'); $profile_system = $params->get('profile_system', 'kunena'); $comments_system = $params->get('comments_system', 'komento'); // User access $authorised = implode(',', $user->getAuthorisedViewLevels()); // Clean HTML tags $clean_intro = $params->get('clean_intro', 1); $allowed_tags = str_replace(' ', '', $params->get('allowed_tags')); $allowed_tags = "<" . str_replace(',', '><', $allowed_tags) . ">"; // Content filtering $tags_k2 = $params->get('tags_k2', array()); $author = $params->get('author', array()); $featured = $params->get('featured', 0); // Featured label/ribbon $featured_label = $params->get('featured_label', 0); $featured_label_text = $params->get('featured_label_text', 'Featured'); $featured_label_color = $params->get('featured_label_color', '#e52626'); // Link $title_link = $params->get('title_link', 1); $category_link = $params->get('category_link', 1); if (JFile::exists(JPATH_SITE . '/components/com_k2/k2.php')) { if ($source == 'categories' && $categories_k2) { if ($categories_k2[0] != '') { $categories_k2 = count($categories_k2) == 1 ? ' = ' . $categories_k2[0] . '' : 'IN (' . implode(',', $categories_k2) . ')'; $query->where('a.catid ' . $categories_k2); } $exclude ? $query->where('a.id NOT IN (' . $exclude . ')') : ''; } else { if ($source == 'articles' && $articles_k2) { $query->where('a.id IN (' . implode(',', $articles_k2) . ')'); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_SOURCE'); return; } } } else { echo JText::_('MOD_GIANTCONTENT_ERROR_TYPE_K2'); return; } // Ordering switch ($ordering) { case 'random': $orderBy = 'RAND()'; break; case 'id_asc': $orderBy = 'a.id ASC'; break; case 'id_desc': $orderBy = 'a.id DESC'; break; case 'title_asc': $orderBy = 'a.title ASC'; break; case 'title_desc': $orderBy = 'a.title DESC'; break; case 'popular_last': $orderBy = 'a.hits ASC'; break; case 'popular_first': $orderBy = 'a.hits DESC'; break; case 'created_oldest': $orderBy = 'date ASC'; break; case 'created_newest': $orderBy = 'date DESC'; break; case 'most_rated': $orderBy = 'rating_total DESC, r.rating_count DESC'; break; case 'least_rated': $orderBy = 'rating_total ASC, r.rating_count ASC'; break; case 'most_commented': $orderBy = 'comments_count DESC, comments_date DESC'; break; case 'latest_commented': $orderBy = 'comments_date DESC, date DESC'; break; } // Content $query->select('a.id, a.title, a.alias, a.introtext, a.fulltext, a.hits'); $query->from('#__k2_items AS a'); // Category $query->select('a.catid AS category_id, c.name AS category_name, c.alias AS category_alias'); $query->join('LEFT', '#__k2_categories AS c ON c.id = a.catid'); // Join user $query->select('u.id AS user_id, u.email AS user_email, u.name AS user_name, a.created_by_alias AS user_alias'); $query->join('LEFT', '#__users AS u ON u.id = a.created_by'); // Join rating $query->select('ROUND(AVG(r.rating_sum / r.rating_count), 2) AS rating_average, r.rating_count'); $query->join('LEFT', '#__k2_rating AS r ON r.itemID = a.id'); // Select date if ($date_type !== 'created') { $query->select('CASE WHEN a.' . $date_type . ' = "0000-00-00 00:00:00" THEN a.created ELSE a.' . $date_type . ' END AS date'); } else { $query->select('a.created AS date'); } // Join avatar for author if ($show_avatar) { switch ($avatar_system) { // K2 avatar integration - http://getk2.org case 'k2': if (JFile::exists(JPATH_SITE . '/components/com_k2/k2.php')) { $query->select('ua.image AS avatar_user'); $query->join('LEFT', '#__k2_users AS ua ON ua.userID = u.id'); $avatar_path = 'media/k2/users/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_K2'); return; } break; // Kunena avatar integration - http://kunena.org // Kunena avatar integration - http://kunena.org case 'kunena': if (JFile::exists(JPATH_SITE . '/components/com_kunena/kunena.php')) { $query->select('ua.avatar AS avatar_user'); $query->join('LEFT', '#__kunena_users AS ua ON ua.userid = u.id'); $avatar_path = 'media/kunena/avatars/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_KUNENA'); return; } break; // JomSocial avatar integration - http://jomsocial.com // JomSocial avatar integration - http://jomsocial.com case 'jomsocial': if (JFile::exists(JPATH_SITE . '/components/com_community/community.php')) { $query->select("ua.avatar AS avatar_user"); $query->join('LEFT', '#__community_users AS ua ON ua.userid = u.id'); $avatar_path = ''; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_JOMSOCIAL'); return; } break; // Comprofiler avatar integration - http://joomlapolis.com // Comprofiler avatar integration - http://joomlapolis.com case 'comprofiler': if (JFile::exists(JPATH_SITE . '/components/com_comprofiler/comprofiler.php')) { $query->select('ua.avatar AS avatar_user'); $query->join('LEFT', '#__comprofiler AS ua ON ua.user_id = u.id'); $avatar_path = 'images/comprofiler/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_COMPROFILER'); return; } break; // EasyBlog avatar integration - http://stackideas.com // EasyBlog avatar integration - http://stackideas.com case 'easyblog': if (JFile::exists(JPATH_SITE . '/components/com_easyblog/easyblog.php')) { $query->select("ua.avatar AS avatar_user"); $query->join('LEFT', '#__easyblog_users AS ua ON ua.id = u.id'); $avatar_path = 'images/easyblog_avatar/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_EASYBLOG'); return; } break; // EasySocial avatar integration - http://stackideas.com // EasySocial avatar integration - http://stackideas.com case 'easysocial': if (JFile::exists(JPATH_SITE . '/components/com_easysocial/easysocial.php')) { $query->select("ua.large AS avatar_user"); $query->join('LEFT', '#__social_avatars AS ua ON ua.uid = u.id'); $avatar_path = 'media/com_easysocial/avatars/users/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_EASYSOCIAL'); return; } break; // EasyDiscuss avatar integration - http://stackideas.com // EasyDiscuss avatar integration - http://stackideas.com case 'easydiscuss': if (JFile::exists(JPATH_SITE . '/components/com_easydiscuss/easydiscuss.php')) { $query->select("ua.avatar AS avatar_user"); $query->join('LEFT', '#__discuss_users AS ua ON ua.id = u.id'); $avatar_path = 'images/discuss_avatar/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_EASYDISCUSS'); return; } break; } } // Join comments for content if ($show_comments || $ordering == 'most_commented' || $ordering == 'latest_commented') { switch ($comments_system) { // Default comment system case 'default': $query->select('COUNT(cm.id) AS comments_count, MAX(cm.commentDate) AS comments_date'); $query->join('LEFT', '#__k2_comments AS cm ON cm.itemID = a.id AND cm.published = 1'); $comments_link = '#itemCommentsAnchor'; break; // Komento comment integration - http://stackideas.com // Komento comment integration - http://stackideas.com case 'komento': if (JFile::exists(JPATH_SITE . '/components/com_komento/komento.php')) { $query->select('COUNT(cm.id) AS comments_count, MAX(cm.created) AS comments_date'); $query->join('LEFT', '#__komento_comments AS cm ON cm.cid = a.id AND cm.component = "com_k2" AND cm.published = 1'); $comments_link = '#section-kmt'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_COMMENTS_SYSTEM_KOMENTO'); return; } break; // CComment comment integration - http://compojoom.com // CComment comment integration - http://compojoom.com case 'ccomment': if (JFile::exists(JPATH_SITE . '/components/com_comment/comment.php')) { $query->select('COUNT(cm.id) AS comments_count, MAX(cm.date) AS comments_date'); $query->join('LEFT', '#__comment AS cm ON cm.contentid = a.id AND cm.component = "com_k2" AND cm.published = 1'); $comments_link = '#!/ccomment'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_COMMENTS_SYSTEM_CCOMMENT'); return; } break; // JComments comment integration - http://joomlatune.com // JComments comment integration - http://joomlatune.com case 'jcomments': if (JFile::exists(JPATH_SITE . '/components/com_jcomments/jcomments.php')) { $query->select('COUNT(cm.id) AS comments_count, MAX(cm.date) AS comments_date'); $query->join('LEFT', '#__jcomments AS cm ON cm.object_id = a.id AND cm.object_group = "com_k2" AND cm.published = 1'); $comments_link = '#comments'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_COMMENTS_SYSTEM_JCOMMENTS'); return; } break; // JA Comment comment integration - http://joomlart.com // JA Comment comment integration - http://joomlart.com case 'jacomment': if (JFile::exists(JPATH_SITE . '/components/com_jacomment/jacomment.php')) { $query->select('COUNT(cm.id) AS comments_count, MAX(cm.date) AS comments_date'); $query->join('LEFT', '#__jacomment_items AS cm ON cm.contentid = a.id AND cm.option = "com_k2" AND cm.published = 1'); $comments_link = '#jac-wrapper'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_COMMENTS_SYSTEM_JACOMMENT'); return; } break; } } // Filter tags if ($tags_k2) { $query->join('INNER', '#__k2_tags_xref AS t ON t.itemID = a.id'); $query->where('t.tagID IN (' . implode(',', $tags_k2) . ')'); } // Filter author if ($author) { $query->where('a.created_by IN (' . implode(',', $author) . ')'); } // Filter featured if ($featured) { $query->where('a.featured = 1'); } // Access or published $query->where('a.trash = 0 AND c.trash = 0 AND a.published = 1 AND c.published = 1 AND a.access IN (' . $authorised . ') AND c.access IN (' . $authorised . ') AND a.publish_up <= "' . JFactory::getDate() . '"'); $query->group('a.id'); $query->order($orderBy); $db->setQuery($query, $skip_counts, $item_counts); $items = $db->loadObjectList(); $lists = array(); foreach ($items as $i => &$item) { $lists[$i] = new stdClass(); $lists[$i]->id = $item->id; $lists[$i]->date = ''; $lists[$i]->hits = ''; $lists[$i]->link = ''; $lists[$i]->tags = ''; $lists[$i]->intro = ''; $lists[$i]->image = ''; $lists[$i]->title = ''; $lists[$i]->author = ''; $lists[$i]->avatar = ''; $lists[$i]->rating = ''; $lists[$i]->featured = ''; $lists[$i]->category = ''; $lists[$i]->comments = ''; $lists[$i]->readmore = ''; $lists[$i]->fulltext = $item->fulltext; $lists[$i]->introtext = $item->introtext; $lists[$i]->category_id = $item->category_id; $lists[$i]->category_alias = $item->category_alias; // Content link $lists[$i]->link = JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . $item->alias, $item->category_id)); // Readmore link $lists[$i]->readmore = $readmore ? '<a href="' . $lists[$i]->link . '"><span>' . $readmore . '</span></a>' : ''; // Show content date $lists[$i]->date = $show_date ? JHtml::_('date', $item->date, $date_format) : ''; // Show content hits $lists[$i]->hits = $show_hits ? '<span>' . $item->hits . '</span>' : ''; // Show content image if ($show_image) { $img = array(); $image = md5("Image" . $item->id); if (JFile::exists(JPATH_SITE . '/media/k2/items/src/' . $image . '.jpg')) { $image = 'media/k2/items/src/' . $image . '.jpg'; } else { $image = ''; } if ($image_source == 'auto') { if (@$image) { $img_source = 'media'; } else { $img_source = 'content'; } } else { $img_source = $image_source; } if ($img_source == 'media') { if (@$image) { $img['src'] = $image; $img['alt'] = $item->title; $img['ttl'] = $item->title; } } else { $pattern = '/<img[^>]+>/i'; preg_match($pattern, $item->introtext, $img_tag); if (!count($img_tag)) { preg_match($pattern, $item->fulltext, $img_tag); } if (count($img_tag)) { preg_match_all('/(src|alt|title)\\s*=\\s*(["\'])(.*?)\\2/i', $img_tag[0], $img_elem); $img_elem = array_combine($img_elem[1], $img_elem[3]); if (@$img_elem['src']) { $img['src'] = trim(@$img_elem['src']); $img['alt'] = trim(@$img_elem['alt']); $img['ttl'] = trim(@$img_elem['title']); $item->introtext = preg_replace($pattern, '', $item->introtext, 1); } } } if (!@$img['src']) { // Default image $img['src'] = 'modules/mod_giantcontent/assets/images/default.png'; $img['alt'] = $item->title; } if ($img['src']) { $img_src = $img_attr = $img_title = ''; // Use timthumb to resize image if ($image_resize) { $img_src = JURI::base(true) . '/modules/mod_giantcontent/assets/libraries/includes/timthumb.php?src='; $img_attr = '&w=' . $image_width . '&h=' . $image_height . '&q=' . $image_quality; } $img_src = $img_src && strncasecmp($img['src'], "http", 4) !== 0 ? $img_src . JURI::base(true) . '/' : $img_src; $img['ttl'] = $image_title ? $item->title : @$img['ttl']; $img_title = $img['ttl'] ? 'title="' . $img['ttl'] . '"' : ''; $lists[$i]->image = '<img src="' . @$img_src . @$img['src'] . @$img_attr . '" alt="' . @$img['alt'] . '" ' . @$img_title . ' />'; switch ($image_link) { case 'none': $lists[$i]->image = $lists[$i]->image; break; case 'content': $lists[$i]->image = '<a href="' . $lists[$i]->link . '">' . $lists[$i]->image . '</a>'; break; case 'shadowbox': $lists[$i]->image = '<a href="' . @$img['src'] . '" rel="shadowbox" ' . @$img_title . '>' . $lists[$i]->image . '</a>'; break; } $lists[$i]->image_src = @$img['src']; $lists[$i]->image_alt = @$img['alt']; $lists[$i]->image_title = @$img['ttl']; } } // Show author profile if ($show_profile) { switch ($profile_system) { // K2 profile integration - http://getk2.org case 'k2': if (JFile::exists(JPATH_SITE . '/components/com_k2/k2.php')) { require_once JPATH_SITE . '/components/com_k2/helpers/route.php'; $profile_link = JRoute::_(K2HelperRoute::getUserRoute($item->user_id)); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_K2'); return; } break; // Kunena profile integration - http://kunena.org // Kunena profile integration - http://kunena.org case 'kunena': if (JFile::exists(JPATH_SITE . '/components/com_kunena/kunena.php')) { $profile_link = KunenaRoute::_('index.php?option=com_kunena&view=profile&userid=' . $item->user_id); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_KUNENA'); return; } break; // JomSocial profile integration - http://jomsocial.com // JomSocial profile integration - http://jomsocial.com case 'jomsocial': if (JFile::exists(JPATH_SITE . '/components/com_community/community.php')) { require_once JPATH_SITE . '/components/com_community/libraries/core.php'; $profile_link = CRoute::_('index.php?option=com_community&view=profile&userid=' . $item->user_id); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_JOMSOCIAL'); return; } break; // Comprofiler profile integration - http://joomlapolis.com // Comprofiler profile integration - http://joomlapolis.com case 'comprofiler': if (JFile::exists(JPATH_SITE . '/components/com_comprofiler/comprofiler.php')) { $profile_link = JRoute::_('index.php?option=com_comprofiler&task=userProfile&user='******'MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_COMPROFILER'); return; } break; // EasyBlog profile integration - http://stackideas.com // EasyBlog profile integration - http://stackideas.com case 'easyblog': if (JFile::exists(JPATH_SITE . '/components/com_easyblog/easyblog.php')) { require_once JPATH_SITE . '/components/com_easyblog/helpers/router.php'; $profile_link = EasyBlogRouter::_('index.php?option=com_easyblog&view=blogger&layout=listings&id=' . $item->user_id); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_EASYBLOG'); return; } break; // EasySocial profile integration - http://stackideas.com // EasySocial profile integration - http://stackideas.com case 'easysocial': if (JFile::exists(JPATH_SITE . '/components/com_easysocial/easysocial.php')) { $profile_link = Foundry::user($item->user_id)->getPermalink(); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_EASYSOCIAL'); return; } break; // EasyDiscuss profile integration - http://stackideas.com // EasyDiscuss profile integration - http://stackideas.com case 'easydiscuss': if (JFile::exists(JPATH_SITE . '/components/com_easydiscuss/easydiscuss.php')) { require_once JPATH_SITE . '/components/com_easydiscuss/helpers/router.php'; $profile_link = DiscussHelper::getTable('Profile')->load($item->user_id)->getLink(); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_EASYDISCUSS'); return; } break; } } // Show content intro if ($show_intro) { // Clean HTML tags if ($clean_intro) { $item->introtext = strip_tags($item->introtext, $allowed_tags); $item->introtext = str_replace(' ', ' ', $item->introtext); $item->introtext = preg_replace('/\\s{2,}/u', ' ', trim($item->introtext)); } $lists[$i]->intro = $limit_intro ? self::truncateText($item->introtext, $limit_intro) : $item->introtext; } // Show content title if ($show_title) { $lists[$i]->title_name = $item->title; $lists[$i]->title = $title_link ? '<a href="' . $lists[$i]->link . '">' . $lists[$i]->title_name . '</a>' : $lists[$i]->title_name; } // Show content category if ($show_category) { $lists[$i]->category_name = $item->category_name; $lists[$i]->category_link = JRoute::_(K2HelperRoute::getCategoryRoute($item->category_id . ':' . $item->category_alias)); $lists[$i]->category = $category_link ? '<a href="' . $lists[$i]->category_link . '">' . $lists[$i]->category_name . '</a>' : $lists[$i]->category_name; } // Show content comments if ($show_comments) { $lists[$i]->comments_count = $item->comments_count; $lists[$i]->comments_link = $lists[$i]->link . $comments_link; $lists[$i]->comments = '<a href="' . $lists[$i]->comments_link . '">' . $item->comments_count . '</a>'; } // Show content author if ($show_author) { $lists[$i]->author_name = $item->user_alias ? $item->user_alias : $item->user_name; $lists[$i]->author = $show_profile ? '<a href="' . $profile_link . '">' . $lists[$i]->author_name . '</a>' : $lists[$i]->author_name; } // Show profile avatar if ($show_avatar) { $avatar_src = 'modules/mod_giantcontent/assets/libraries/includes/timthumb.php?src=' . JURI::base(true) . '/'; $avatar_attr = '&w=' . $avatar_width . '&h=' . $avatar_height; $avatar_default = '<img src="' . $avatar_src . '/modules/mod_giantcontent/assets/images/avatar.png' . $avatar_attr . '" alt="' . $item->user_name . '" />'; $lists[$i]->avatar_user = $item->avatar_user; if ($avatar_system == 'easysocial') { $avatar_img = $avatar_path . $item->user_id . '/' . $item->avatar_user; } else { $avatar_img = $avatar_path . $item->avatar_user; } if (JFile::exists($avatar_img)) { $lists[$i]->avatar = '<img src="' . $avatar_src . $avatar_img . $avatar_attr . '" alt="' . $item->user_name . '" />'; $lists[$i]->avatar = $show_profile ? '<a href="' . $profile_link . '">' . $lists[$i]->avatar . '</a>' : $lists[$i]->avatar; } else { $lists[$i]->avatar = $show_profile ? '<a href="' . $profile_link . '">' . $avatar_default . '</a>' : $avatar_default; } } // Show content rating if ($show_rating) { if ($item->rating_count > 0) { $lists[$i]->rating_count = $item->rating_count; $lists[$i]->rating_average = $item->rating_average; } else { $lists[$i]->rating_count = 0; $lists[$i]->rating_average = 0.0; } $rating_current = $item->rating_average * 20; $lists[$i]->rating = '<span class="gc-rating-list"><span style="width:' . $rating_current . '%;" class="gc-rating-current"></span></span>'; } // Show content tags if ($show_tags) { $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('t.id, t.name AS title'); $query->from('#__k2_tags AS t'); $query->join('LEFT', '#__k2_tags_xref AS tm ON tm.tagID = t.id'); $query->where('t.published = 1 AND tm.itemID = ' . $item->id); $db->setQuery($query); $tags = $db->loadObjectList(); $list_tags = ''; if ($tags) { foreach ($tags as $tag) { $link_tags = JRoute::_(K2HelperRoute::getTagRoute($tag->title)); $list_tags .= '<a class="gc-tag" href="' . $link_tags . '">' . $tag->title . '</a>'; } } $lists[$i]->tags = $list_tags; } // Show featured label if ($featured_label) { $db = JFactory::getDbo(); $db->setQuery('SELECT * FROM #__k2_items WHERE id = ' . $item->id . ' AND featured = 1'); $featured = $db->loadResult(); if ($featured) { $lists[$i]->featured = '<span class="gc-featured" style="background: ' . $featured_label_color . '">' . $featured_label_text . '</span>'; } } } return $lists; }
function tagCloud(&$params) { $user =& JFactory::getUser(); $aid = (int) $user->get('aid'); $db =& JFactory::getDBO(); $jnow =& JFactory::getDate(); $now = $jnow->toMySQL(); $nullDate = $db->getNullDate(); $query = "SELECT t.name, t.id FROM #__k2_tags as t"; $query .= " LEFT JOIN #__k2_tags_xref tags_xref ON tags_xref.tagID = t.id"; $query .= " LEFT JOIN #__k2_items i ON tags_xref.itemID = i.id"; $query .= " LEFT JOIN #__k2_categories c ON c.id = i.catid"; $query .= " WHERE t.published=1 "; $query .= " AND i.published=1 "; $query .= " AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " ) "; $query .= " AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )"; $query .= " AND i.trash=0 "; $query .= " AND i.access <= {$aid}"; $query .= " AND c.published=1 "; $query .= " AND c.trash=0 "; $query .= " AND c.access <= {$aid}"; $cloudCategory = $params->get('cloud_category'); if ($cloudCategory) { if (!is_array($cloudCategory)) { $cloudCategory = (array) $cloudCategory; } foreach ($cloudCategory as $cloudCategoryID) { $categories[] = $cloudCategoryID; if ($params->get('cloud_category_recursive')) { $children = modK2ToolsHelper::getCategoryChildren($cloudCategoryID); $categories = @array_merge($categories, $children); } } $categories = @array_unique($categories); JArrayHelper::toInteger($categories); if (count($categories) == 1) { $query .= " AND i.catid={$categories[0]}"; } else { $query .= " AND i.catid IN(" . implode(',', $categories) . ")"; } } $db->setQuery($query); $rows = $db->loadResultArray(); $cloud = array(); if (count($rows)) { foreach ($rows as $tag) { if (@array_key_exists($tag, $cloud)) { $cloud[$tag]++; } else { $cloud[$tag] = 1; } } $max_size = $params->get('max_size'); $min_size = $params->get('min_size'); $max_qty = max(array_values($cloud)); $min_qty = min(array_values($cloud)); $spread = $max_qty - $min_qty; if (0 == $spread) { $spread = 1; } $step = ($max_size - $min_size) / $spread; $counter = 0; arsort($cloud, SORT_NUMERIC); $cloud = array_slice($cloud, 0, $params->get('cloud_limit')); uksort($cloud, "strnatcasecmp"); foreach ($cloud as $key => $value) { $size = $min_size + ($value - $min_qty) * $step; $size = ceil($size); $tags[$counter]->{'tag'} = $key; $tags[$counter]->{'count'} = $value; $tags[$counter]->{'size'} = $size; $tags[$counter]->{'link'} = urldecode(JRoute::_(K2HelperRoute::getTagRoute($key))); $counter++; } return $tags; } }
public static function getList(&$params) { jimport('joomla.filesystem.file'); $mainframe = JFactory::getApplication(); $limit = $params->get('itemCount', 5); $cid = $params->get('category_id', NULL); $ordering = $params->get('itemsOrdering', ''); $componentParams = JComponentHelper::getParams('com_k2'); $limitstart = JRequest::getInt('limitstart'); $user = JFactory::getUser(); $aid = $user->get('aid'); $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql(); $nullDate = $db->getNullDate(); if ($params->get('source') == 'specific') { $value = $params->get('items'); $current = array(); if (is_string($value) && !empty($value)) { $current[] = $value; } if (is_array($value)) { $current = $value; } $items = array(); foreach ($current as $id) { $query = "SELECT i.*, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams \n\t\t\t\tFROM #__k2_items as i \n\t\t\t\tLEFT JOIN #__k2_categories c ON c.id = i.catid \n\t\t\t\tWHERE i.published = 1 "; if (K2_JVERSION != '15') { $query .= " AND i.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; } else { $query .= " AND i.access<={$aid} "; } $query .= " AND i.trash = 0 AND c.published = 1 "; if (K2_JVERSION != '15') { $query .= " AND c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; } else { $query .= " AND c.access<={$aid} "; } $query .= " AND c.trash = 0 \n\t\t\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " ) \n\t\t\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " ) \n\t\t\t\tAND i.id={$id}"; if (K2_JVERSION != '15') { if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND c.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") AND i.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ")"; } } $db->setQuery($query); $item = $db->loadObject(); if ($item) { $items[] = $item; } } } else { $query = "SELECT i.*, CASE WHEN i.modified = 0 THEN i.created ELSE i.modified END as lastChanged, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams"; if ($ordering == 'best') { $query .= ", (r.rating_sum/r.rating_count) AS rating"; } if ($ordering == 'comments') { $query .= ", COUNT(comments.id) AS numOfComments"; } $query .= " FROM #__k2_items as i RIGHT JOIN #__k2_categories c ON c.id = i.catid"; if ($ordering == 'best') { $query .= " LEFT JOIN #__k2_rating r ON r.itemID = i.id"; } if ($ordering == 'comments') { $query .= " LEFT JOIN #__k2_comments comments ON comments.itemID = i.id"; } if (K2_JVERSION != '15') { $query .= " WHERE i.published = 1 AND i.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND i.trash = 0 AND c.published = 1 AND c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND c.trash = 0"; } else { $query .= " WHERE i.published = 1 AND i.access <= {$aid} AND i.trash = 0 AND c.published = 1 AND c.access <= {$aid} AND c.trash = 0"; } $query .= " AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )"; $query .= " AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )"; if ($params->get('catfilter')) { if (!is_null($cid)) { if (is_array($cid)) { if ($params->get('getChildren')) { $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { JArrayHelper::toInteger($cid); $query .= " AND i.catid IN(" . implode(',', $cid) . ")"; } } else { if ($params->get('getChildren')) { $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { $query .= " AND i.catid=" . (int) $cid; } } } } if ($params->get('FeaturedItems') == '0') { $query .= " AND i.featured != 1"; } if ($params->get('FeaturedItems') == '2') { $query .= " AND i.featured = 1"; } if ($params->get('videosOnly')) { $query .= " AND (i.video IS NOT NULL AND i.video!='')"; } if ($ordering == 'comments') { $query .= " AND comments.published = 1"; } if (K2_JVERSION != '15') { if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND c.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") AND i.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ")"; } } switch ($ordering) { case 'date': $orderby = 'i.created ASC'; break; case 'rdate': $orderby = 'i.created DESC'; break; case 'alpha': $orderby = 'i.title'; break; case 'ralpha': $orderby = 'i.title DESC'; break; case 'order': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering'; } else { $orderby = 'i.ordering'; } break; case 'rorder': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering DESC'; } else { $orderby = 'i.ordering DESC'; } break; case 'hits': if ($params->get('popularityRange')) { $datenow = JFactory::getDate(); $date = K2_JVERSION == '15' ? $datenow->toMySQL() : $datenow->toSql(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $orderby = 'i.hits DESC'; break; case 'rand': $orderby = 'RAND()'; break; case 'best': $orderby = 'rating DESC'; break; case 'comments': if ($params->get('popularityRange')) { $datenow = JFactory::getDate(); $date = K2_JVERSION == '15' ? $datenow->toMySQL() : $datenow->toSql(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $query .= " GROUP BY i.id "; $orderby = 'numOfComments DESC'; break; case 'modified': $orderby = 'lastChanged DESC'; break; case 'publishUp': $orderby = 'i.publish_up DESC'; break; default: $orderby = 'i.id DESC'; break; } $query .= " ORDER BY " . $orderby; // $sql = str_replace('#__','jos_',$query); // echo $sql;die; //var_dump($limit); $db->setQuery($query, 0, $limit); $items = $db->loadObjectList(); } $model = K2Model::getInstance('Item', 'K2Model'); $show_introtext = $params->get('item_desc_display', 0); $introtext_limit = $params->get('item_desc_max_characs', 100); $show_title = $params->get('item_title_display', 1); $title_limit = $params->get('item_title_max_characs', 20); $item_title_ending_char = $params->get('item_title_ending_char', ''); $item_desc_ending_char = $params->get('item_desc_ending_char', ''); if (count($items)) { foreach ($items as $item) { //Clean title $item->title = JFilterOutput::ampReplace($item->title); $item->displaytitle = $show_title ? self::truncate($item->title, $title_limit, $item_title_ending_char) : ''; //Read more link $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->categoryalias)))); //Tags $item->tags = ''; if ($params->get('item_tags_display')) { $tags = $model->getItemTags($item->id); for ($i = 0; $i < sizeof($tags); $i++) { $tags[$i]->link = JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name)); } $item->tags = $tags; } else { $item->tags = ''; } // Restore the intotext variable after plugins execution self::getK2Images($item, $params); //Clean the plugin tags $item->introtext = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext); if ($item->fulltext != '') { $item->fulltext = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->fulltext); $item->introtext = self::_cleanText($item->introtext . $item->fulltext); } else { $item->introtext = self::_cleanText($item->introtext); } $item->displayIntrotext = $show_introtext ? self::truncate($item->introtext, $introtext_limit, $item_desc_ending_char) : ''; $rows[] = $item; } return $rows; } }
public static function getItems($cid, &$params) { jimport('joomla.filesystem.file'); $mainframe = JFactory::getApplication(); $limit = $params->get('itemCount', 5); $start = 0; //$limit*(JRequest::getInt('page',1)-1); $ordering = $params->get('itemsOrdering', ''); $componentParams = JComponentHelper::getParams('com_k2'); $limitstart = JRequest::getInt('limitstart'); $user = JFactory::getUser(); $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = $jnow->toSql(); $nullDate = $db->getNullDate(); if ($params->get('source') == 'specific') { $value = $params->get('items'); $current = array(); if (is_string($value) && !empty($value)) { $current[] = $value; } if (is_array($value)) { $current = $value; } $items = array(); if (count($current) > 0) { $query = "SELECT i.*, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams\n\t\t\t\t\t\t\tFROM #__k2_items as i\n\t\t\t\t\t\t\tLEFT JOIN #__k2_categories c ON c.id = i.catid\n\t\t\t\t\t\t\tWHERE i.published = 1 "; $query .= " AND i.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; $query .= " AND i.trash = 0 AND c.published = 1 "; $query .= " AND c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; $query .= " AND c.trash = 0\n\t\t\t\t\t\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )\n\t\t\t\t\t\t\t\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )\n\t\t\t\t\t\t\t\t\tAND i.id IN(" . implode(',', $current) . ") "; if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND c.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") AND i.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ")"; } $db->setQuery($query); $items = $db->loadObjectList(); } } else { $query = "SELECT i.*, CASE WHEN i.modified = 0 THEN i.created ELSE i.modified END as lastChanged, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams"; if ($ordering == 'best') { $query .= ", (r.rating_sum/r.rating_count) AS rating"; } if ($ordering == 'comments') { $query .= ", COUNT(comments.id) AS numOfComments"; } $query .= " FROM #__k2_items as i LEFT JOIN #__k2_categories c ON c.id = i.catid"; if ($ordering == 'best') { $query .= " LEFT JOIN #__k2_rating r ON r.itemID = i.id"; } if ($ordering == 'comments') { $query .= " LEFT JOIN #__k2_comments comments ON comments.itemID = i.id"; } $query .= " WHERE i.published = 1 AND i.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND i.trash = 0 AND c.published = 1 AND c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND c.trash = 0"; $query .= " AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )"; $query .= " AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )"; if (!is_null($cid)) { if (is_array($cid)) { if ($params->get('getChildren')) { $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { JArrayHelper::toInteger($cid); $query .= " AND i.catid IN(" . implode(',', $cid) . ")"; } } else { if ($params->get('getChildren')) { $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { $query .= " AND i.catid=" . (int) $cid; } } } if ($params->get('FeaturedItems') == '0') { $query .= " AND i.featured != 1"; } if ($params->get('FeaturedItems') == '2') { $query .= " AND i.featured = 1"; } if ($params->get('videosOnly')) { $query .= " AND (i.video IS NOT NULL AND i.video!='')"; } if ($ordering == 'comments') { $query .= " AND comments.published = 1"; } if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND c.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") AND i.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ")"; } switch ($ordering) { case 'date': $orderby = 'i.created ASC'; break; case 'rdate': $orderby = 'i.created DESC'; break; case 'alpha': $orderby = 'i.title'; break; case 'ralpha': $orderby = 'i.title DESC'; break; case 'order': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering'; } else { $orderby = 'i.ordering'; } break; case 'rorder': if ($params->get('FeaturedItems') == '2') { $orderby = 'i.featured_ordering DESC'; } else { $orderby = 'i.ordering DESC'; } break; case 'hits': if ($params->get('popularityRange')) { $datenow = JFactory::getDate(); $date = $datenow->toSql(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $orderby = 'i.hits DESC'; break; case 'rand': $orderby = 'RAND()'; break; case 'best': $orderby = 'rating DESC'; break; case 'comments': if ($params->get('popularityRange')) { $datenow = JFactory::getDate(); $date = $datenow->toSql(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $query .= " GROUP BY i.id "; $orderby = 'numOfComments DESC'; break; case 'modified': $orderby = 'lastChanged DESC'; break; case 'publishUp': $orderby = 'i.publish_up DESC'; break; default: $orderby = 'i.id DESC'; break; } $query .= " ORDER BY " . $orderby; $db->setQuery($query, $start, $limit); $items = $db->loadObjectList(); } $model = K2Model::getInstance('Item', 'K2Model'); if (count($items)) { foreach ($items as $item) { $item->event = new stdClass(); //Clean title $item->title = JFilterOutput::ampReplace($item->title); //Images //Read more link $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->categoryalias)))); //Tags if ($params->get('itemTags')) { $tags = $model->getItemTags($item->id); for ($i = 0; $i < sizeof($tags); $i++) { $tags[$i]->link = JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name)); } $item->tags = $tags; } //Category link if ($params->get('itemCategory')) { $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); } //Extra fields if ($params->get('itemExtraFields')) { $item->extra_fields = $model->getItemExtraFields($item->extra_fields, $item); } //Comments counter if ($params->get('itemCommentsCounter')) { $item->numOfComments = $model->countItemComments($item->id); } //Attachments if ($params->get('itemAttachments')) { $item->attachments = $model->getItemAttachments($item->id); } if ($params->get('JPlugins', 0)) { //Import plugins $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); } //Video if ($params->get('itemVideo') && $format != 'feed') { $params->set('vfolder', 'media/k2/videos'); $params->set('afolder', 'media/k2/audio'); $item->text = $item->video; $dispatcher->trigger('onContentPrepare', array('mod_k2_content.', &$item, &$params, $limitstart)); $item->video = $item->text; } // Introtext $item->text = ''; // if ($params->get('itemIntroText')) // { $item->text .= self::_cleanText($item->introtext); // } $params->set('parsedInModule', 1); // for plugins to know when they are parsed inside this module if ($params->get('JPlugins', 0)) { //Plugins $results = $dispatcher->trigger('onBeforeDisplay', array(&$item, &$params, $limitstart)); $item->event->BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplay', array(&$item, &$params, $limitstart)); $item->event->AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayTitle', array(&$item, &$params, $limitstart)); $item->event->AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onBeforeDisplayContent', array(&$item, &$params, $limitstart)); $item->event->BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayContent', array(&$item, &$params, $limitstart)); $item->event->AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); } //Init K2 plugin events $item->event->K2BeforeDisplay = ''; $item->event->K2AfterDisplay = ''; $item->event->K2AfterDisplayTitle = ''; $item->event->K2BeforeDisplayContent = ''; $item->event->K2AfterDisplayContent = ''; $item->event->K2CommentsCounter = ''; if ($params->get('K2Plugins', 0)) { //K2 plugins JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2BeforeDisplay', array(&$item, &$params, $limitstart)); $item->event->K2BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplay', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayTitle', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2BeforeDisplayContent', array(&$item, &$params, $limitstart)); $item->event->K2BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayContent', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onK2PrepareContent', array(&$item, &$params, $limitstart)); if ($params->get('itemCommentsCounter')) { $results = $dispatcher->trigger('onK2CommentsCounter', array(&$item, &$params, $limitstart)); $item->event->K2CommentsCounter = trim(implode("\n", $results)); } } // Restore the intotext variable after plugins execution $item->displayIntrotext = $item->text; //Clean the plugin tags $item->displayIntrotext = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->displayIntrotext); //Author if ($params->get('itemAuthor')) { if (!empty($item->created_by_alias)) { $item->author = $item->created_by_alias; $item->authorGender = NULL; $item->authorDescription = NULL; if ($params->get('itemAuthorAvatar')) { $item->authorAvatar = K2HelperUtilities::getAvatar('alias'); } $item->authorLink = Juri::root(true); } else { $author = JFactory::getUser($item->created_by); $item->author = $author->name; $query = "SELECT `description`, `gender` FROM #__k2_users WHERE userID=" . (int) $author->id; $db->setQuery($query, 0, 1); $result = $db->loadObject(); if ($result) { $item->authorGender = $result->gender; $item->authorDescription = $result->description; } else { $item->authorGender = NULL; $item->authorDescription = NULL; } if ($params->get('itemAuthorAvatar')) { $item->authorAvatar = K2HelperUtilities::getAvatar($author->id, $author->email, $componentParams->get('userImageWidth')); } //Author Link $item->authorLink = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); } } // Extra fields plugins if (is_array($item->extra_fields)) { foreach ($item->extra_fields as $key => $extraField) { if ($extraField->type == 'textarea' || $extraField->type == 'textfield') { $tmp = new JObject(); $tmp->text = $extraField->value; if ($params->get('JPlugins', 0)) { $dispatcher->trigger('onPrepareContent', array(&$tmp, &$params, $limitstart)); } if ($params->get('K2Plugins', 0)) { $dispatcher->trigger('onK2PrepareContent', array(&$tmp, &$params, $limitstart)); } $extraField->value = $tmp->text; } } } $rows[] = $item; } return $rows; } }