コード例 #1
0
ファイル: view.html.php プロジェクト: GitIPFire/Homeworks
    function report($tpl = null)
    {
        JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables');
        $row =& JTable::getInstance('K2Comment', 'Table');
        $row->load(JRequest::getInt('commentID'));
        if (!$row->published) {
            JError::raiseError(404, JText::_('K2_NOT_FOUND'));
        }
        $this->assignRef('row', $row);
        $user = JFactory::getUser();
        $this->assignRef('user', $user);
        $params =& K2HelperUtilities::getParams('com_k2');
        if (!$params->get('comments') || !$params->get('commentsReporting') || $params->get('commentsReporting') == '2' && $user->guest) {
            JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
        }
        $this->assignRef('params', $params);
        if ($params->get('recaptcha') && $user->guest) {
            $document = JFactory::getDocument();
            $document->addScript('http://api.recaptcha.net/js/recaptcha_ajax.js');
            $js = '
			function showRecaptcha(){
				Recaptcha.create("' . $params->get('recaptcha_public_key') . '", "recaptcha", {
					theme: "' . $params->get('recaptcha_theme', 'clean') . '"
				});
			}
			$K2(window).load(function() {
				showRecaptcha();
			});
			';
            $document->addScriptDeclaration($js);
        }
        parent::display($tpl);
    }
コード例 #2
0
ファイル: utilities.php プロジェクト: vuchannguyen/dayhoc
 function getAvatar($userID, $email = NULL, $width = 50)
 {
     jimport('joomla.filesystem.folder');
     jimport('joomla.application.component.model');
     $mainframe =& JFactory::getApplication();
     $params =& K2HelperUtilities::getParams('com_k2');
     if (K2_CB && $userID != 'alias') {
         $cbUser = CBuser::getInstance((int) $userID);
         if (is_object($cbUser)) {
             $avatar = $cbUser->getField('avatar', null, 'csv', 'none', 'profile');
             return $avatar;
         }
     }
     /*
     		 // JomSocial Avatar integration
     		 if(JFolder::exists(JPATH_SITE.DS.'components'.DS.'com_community') && $userID>0){
     		 $userInfo = &CFactory::getUser($userID);
     		 return $userInfo->getThumbAvatar();
     		 }
     */
     // Check for placeholder overrides
     if (JFile::exists(JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'images' . DS . 'placeholder' . DS . 'user.png')) {
         $avatarPath = 'templates/' . $mainframe->getTemplate() . '/images/placeholder/user.png';
     } else {
         $avatarPath = 'components/com_k2/images/placeholder/user.png';
     }
     // Continue with default K2 avatar determination
     if ($userID == 'alias') {
         $avatar = JURI::root(true) . '/' . $avatarPath;
     } else {
         if ($userID == 0) {
             if ($params->get('gravatar') && !is_null($email)) {
                 $avatar = 'http://www.gravatar.com/avatar/' . md5($email) . '?s=' . $width . '&default=' . urlencode(JURI::root() . $avatarPath);
             } else {
                 $avatar = JURI::root(true) . '/' . $avatarPath;
             }
         } else {
             if (is_numeric($userID) && $userID > 0) {
                 JModel::addIncludePath(JPATH_SITE . DS . 'components' . DS . 'com_k2' . DS . 'models');
                 $model =& JModel::getInstance('Item', 'K2Model');
                 $profile = $model->getUserProfile($userID);
                 $avatar = is_null($profile) ? '' : $profile->image;
                 if (empty($avatar)) {
                     if ($params->get('gravatar') && !is_null($email)) {
                         $avatar = 'http://www.gravatar.com/avatar/' . md5($email) . '?s=' . $width . '&default=' . urlencode(JURI::root() . $avatarPath);
                     } else {
                         $avatar = JURI::root(true) . '/' . $avatarPath;
                     }
                 } else {
                     $avatar = JURI::root(true) . '/media/k2/users/' . $avatar;
                 }
             }
         }
     }
     if (!$params->get('userImageDefault') && $avatar == JURI::root(true) . '/' . $avatarPath) {
         $avatar = '';
     }
     return $avatar;
 }
コード例 #3
0
ファイル: html.php プロジェクト: Roma48/abazherka_old
 public static function loadjQuery($ui = false, $mediaManager = false)
 {
     JLoader::register('K2HelperUtilities', JPATH_SITE . DS . 'components' . DS . 'com_k2' . DS . 'helpers' . DS . 'utilities.php');
     $application = JFactory::getApplication();
     $document = JFactory::getDocument();
     $params = K2HelperUtilities::getParams('com_k2');
     if ($document->getType() == 'html') {
         if (K2_JVERSION == '15') {
             JHtml::_('behavior.mootools');
         } else {
             if (K2_JVERSION == '25') {
                 JHtml::_('behavior.framework');
             } else {
                 JHtml::_('behavior.framework');
                 if ($application->isAdmin() || $application->isSite() && $params->get('jQueryHandling')) {
                     JHtml::_('jquery.framework');
                 }
             }
         }
         $handling = $application->isAdmin() ? $params->get('backendJQueryHandling', 'remote') : $params->get('jQueryHandling', '1.8remote');
         // jQuery
         if (K2_JVERSION != '30') {
             if ($handling == 'remote') {
                 $document->addScript('//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
             } else {
                 if ($handling == 'local') {
                     $document->addScript(JURI::root(true) . '/media/k2/assets/js/jquery-1.8.3.min.js');
                 } else {
                     if ($handling && JString::strpos($handling, 'remote') !== false) {
                         if ($handling == '1.9remote') {
                             $handling = '1remote';
                         }
                         $document->addScript('//ajax.googleapis.com/ajax/libs/jquery/' . str_replace('remote', '', $handling) . '/jquery.min.js');
                     } else {
                         if ($handling && JString::strpos($handling, 'remote') === false) {
                             $document->addScript(JURI::root(true) . '/media/k2/assets/js/jquery-' . $handling . '.min.js');
                         }
                     }
                 }
             }
         }
         // jQuery UI
         if ($application->isAdmin() || $ui) {
             // No conflict loaded when $ui requested or in the backend.
             // No need to reload for $mediaManager as the latter is always called with $ui
             $document->addScript(JURI::root(true) . '/media/k2/assets/js/k2.noconflict.js');
             if ($handling == 'local') {
                 $document->addScript(JURI::root(true) . '/media/k2/assets/js/jquery-ui-1.8.24.custom.min.js');
             } else {
                 $document->addScript('//ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js');
             }
         }
         if ($mediaManager) {
             $document->addScript(JURI::root(true) . '/media/k2/assets/js/elfinder.min.js?v=2.6.7');
         }
     }
 }
コード例 #4
0
ファイル: route.php プロジェクト: emavro/k2
 public static function getUserRoute($userID)
 {
     if (K2_CB) {
         global $_CB_framework;
         return $_CB_framework->userProfileUrl((int) $userID);
     }
     $key = (int) $userID;
     if (isset(self::$cache['user'][$key])) {
         return self::$cache['user'][$key];
     }
     $needles = array('user' => (int) $userID);
     $user = JFactory::getUser($userID);
     if (K2_JVERSION != '15' && JFactory::getConfig()->get('unicodeslugs') == 1) {
         $alias = JApplication::stringURLSafe($user->name);
     } else {
         if (JPluginHelper::isEnabled('system', 'unicodeslug') || JPluginHelper::isEnabled('system', 'jw_unicodeSlugsExtended')) {
             $alias = JFilterOutput::stringURLSafe($user->name);
         } else {
             mb_internal_encoding("UTF-8");
             mb_regex_encoding("UTF-8");
             $alias = trim(mb_strtolower($user->name));
             $alias = str_replace('-', ' ', $alias);
             $alias = mb_ereg_replace('[[:space:]]+', ' ', $alias);
             $alias = trim(str_replace(' ', '', $alias));
             $alias = str_replace('.', '', $alias);
             $stripthese = ',|~|!|@|%|^|(|)|<|>|:|;|{|}|[|]|&|`|„|‹|’|‘|“|â€�|•|›|«|´|»|°|«|»|…';
             $strips = explode('|', $stripthese);
             foreach ($strips as $strip) {
                 $alias = str_replace($strip, '', $alias);
             }
             $params = K2HelperUtilities::getParams('com_k2');
             $SEFReplacements = array();
             $items = explode(',', $params->get('SEFReplacements', NULL));
             foreach ($items as $item) {
                 if (!empty($item)) {
                     @(list($src, $dst) = explode('|', trim($item)));
                     $SEFReplacements[trim($src)] = trim($dst);
                 }
             }
             foreach ($SEFReplacements as $key => $value) {
                 $alias = str_replace($key, $value, $alias);
             }
             $alias = trim($alias, '-.');
             if (trim(str_replace('-', '', $alias)) == '') {
                 $datenow = JFactory::getDate();
                 $alias = K2_JVERSION == '15' ? $datenow->toFormat("%Y-%m-%d-%H-%M-%S") : $datenow->format("Y-m-d-H-i-s");
             }
         }
     }
     $link = 'index.php?option=com_k2&view=itemlist&task=user&id=' . $userID . ':' . $alias;
     if ($item = K2HelperRoute::_findItem($needles)) {
         $link .= '&Itemid=' . $item->id;
     }
     self::$cache['user'][$key] = $link;
     return $link;
 }
コード例 #5
0
ファイル: comments.php プロジェクト: GitIPFire/Homeworks
 function sendReport()
 {
     JRequest::checkToken() or jexit('Invalid Token');
     $params = K2HelperUtilities::getParams('com_k2');
     $user = JFactory::getUser();
     if (!$params->get('comments') || !$params->get('commentsReporting') || ($params->get('commentsReporting') == '2' && $user->guest))
     {
         JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
     }
     K2Model::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR.DS.'models');
     $model = K2Model::getInstance('Comments', 'K2Model');
     $model->setState('id', JRequest::getInt('id'));
     $model->setState('name', JRequest::getString('name'));
     $model->setState('reportReason', JRequest::getString('reportReason'));
     if (!$model->report())
     {
         echo $model->getError();
     }
     else
     {
         echo JText::_('K2_REPORT_SUBMITTED');
     }
     $mainframe = JFactory::getApplication();
     $mainframe->close();
 }
コード例 #6
0
ファイル: view.raw.php プロジェクト: vuchannguyen/dayhoc
 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);
 }
コード例 #7
0
ファイル: view.html.php プロジェクト: vuchannguyen/dayhoc
    function display($tpl = null)
    {
        $mainframe =& JFactory::getApplication();
        $user =& JFactory::getUser();
        $document =& JFactory::getDocument();
        $params =& K2HelperUtilities::getParams('com_k2');
        $limitstart = JRequest::getInt('limitstart', 0);
        $view = JRequest::getWord('view');
        $task = JRequest::getWord('task');
        $db =& JFactory::getDBO();
        $jnow =& JFactory::getDate();
        $now = $jnow->toMySQL();
        $nullDate = $db->getNullDate();
        $this->setLayout('item');
        // Add link
        if (K2HelperPermissions::canAddItem()) {
            $addLink = JRoute::_('index.php?option=com_k2&view=item&task=add&tmpl=component');
        }
        $this->assignRef('addLink', $addLink);
        // Get item
        $model =& $this->getModel();
        $item = $model->getData();
        // Does the item exists?
        if (!is_object($item) || !$item->id) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        // Prepare item
        $item = $model->prepareItem($item, $view, $task);
        // Plugins
        $item = $model->execPlugins($item, $view, $task);
        // User K2 plugins
        $item->event->K2UserDisplay = '';
        if (isset($item->author) && is_object($item->author->profile) && isset($item->author->profile->id)) {
            $dispatcher =& JDispatcher::getInstance();
            JPluginHelper::importPlugin('k2');
            $results = $dispatcher->trigger('onK2UserDisplay', array(&$item->author->profile, &$params, $limitstart));
            $item->event->K2UserDisplay = trim(implode("\n", $results));
        }
        // Access check
        if ($this->getLayout() == 'form') {
            JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
        }
        if (K2_JVERSION == '16') {
            if (!in_array($item->access, $user->authorisedLevels()) || !in_array($item->category->access, $user->authorisedLevels())) {
                JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
            }
        } else {
            if ($item->access > $user->get('aid', 0) || $item->category->access > $user->get('aid', 0)) {
                JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
            }
        }
        // Published check
        if (!$item->published || $item->trash) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        if ($item->publish_up != $nullDate && $item->publish_up > $now) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        if ($item->publish_down != $nullDate && $item->publish_down < $now) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        if (!$item->category->published || $item->category->trash) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        // Increase hits counter
        $model->hit($item->id);
        // Set default image
        K2HelperUtilities::setDefaultImage($item, $view);
        // Comments
        $item->event->K2CommentsCounter = '';
        $item->event->K2CommentsBlock = '';
        if ($item->params->get('itemComments')) {
            // Trigger comments events
            $dispatcher =& JDispatcher::getInstance();
            JPluginHelper::importPlugin('k2');
            $results = $dispatcher->trigger('onK2CommentsCounter', array(&$item, &$params, $limitstart));
            $item->event->K2CommentsCounter = trim(implode("\n", $results));
            $results = $dispatcher->trigger('onK2CommentsBlock', array(&$item, &$params, $limitstart));
            $item->event->K2CommentsBlock = trim(implode("\n", $results));
            // Load K2 native comments system only if there are no plugins overriding it
            if (empty($item->event->K2CommentsCounter) && empty($item->event->K2CommentsBlock)) {
                // Load reCAPTCHA script
                if (!JRequest::getInt('print') && ($item->params->get('comments') == '1' || $item->params->get('comments') == '2' && K2HelperPermissions::canAddComment($item->catid))) {
                    if ($item->params->get('recaptcha') && $user->guest) {
                        $document->addScript('http://api.recaptcha.net/js/recaptcha_ajax.js');
                        $js = '
						function showRecaptcha(){
							Recaptcha.create("' . $item->params->get('recaptcha_public_key') . '", "recaptcha", {
								theme: "' . $item->params->get('recaptcha_theme', 'clean') . '"
							});
						}
						$K2(window).load(function() {
							showRecaptcha();
						});
						';
                        $document->addScriptDeclaration($js);
                    }
                }
                // Check for inline comment moderation
                if (!$user->guest && $user->id == $item->created_by && $params->get('inlineCommentsModeration')) {
                    $inlineCommentsModeration = true;
                    $commentsPublished = false;
                } else {
                    $inlineCommentsModeration = false;
                    $commentsPublished = true;
                }
                $this->assignRef('inlineCommentsModeration', $inlineCommentsModeration);
                // Flag spammer link
                $reportSpammerFlag = false;
                if (K2_JVERSION == '16') {
                    if ($user->authorise('core.admin', 'com_k2')) {
                        $reportSpammerFlag = true;
                        $document =& JFactory::getDocument();
                        $document->addScriptDeclaration('var K2Language = ["' . JText::_('K2_REPORT_USER_WARNING', true) . '"];');
                    }
                } else {
                    if ($user->gid > 24) {
                        $reportSpammerFlag = true;
                    }
                }
                $limit = $params->get('commentsLimit');
                $comments = $model->getItemComments($item->id, $limitstart, $limit, $commentsPublished);
                $pattern = "@\\b(https?://)?(([0-9a-zA-Z_!~*'().&=+\$%-]+:)?[0-9a-zA-Z_!~*'().&=+\$%-]+\\@)?(([0-9]{1,3}\\.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+\\.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z]\\.[a-zA-Z]{2,6})(:[0-9]{1,4})?((/[0-9a-zA-Z_!~*'().;?:\\@&=+\$,%#-]+)*/?)@";
                for ($i = 0; $i < sizeof($comments); $i++) {
                    $comments[$i]->commentText = nl2br($comments[$i]->commentText);
                    $comments[$i]->commentText = preg_replace($pattern, '<a target="_blank" rel="nofollow" href="\\0">\\0</a>', $comments[$i]->commentText);
                    $comments[$i]->userImage = K2HelperUtilities::getAvatar($comments[$i]->userID, $comments[$i]->commentEmail, $params->get('commenterImgWidth'));
                    if ($comments[$i]->userID > 0) {
                        $comments[$i]->userLink = K2HelperRoute::getUserRoute($comments[$i]->userID);
                    } else {
                        $comments[$i]->userLink = $comments[$i]->commentURL;
                    }
                    if ($reportSpammerFlag && $comments[$i]->userID > 0) {
                        $comments[$i]->reportUserLink = JRoute::_('index.php?option=com_k2&view=comments&task=reportSpammer&id=' . $comments[$i]->userID . '&format=raw');
                    } else {
                        $comments[$i]->reportUserLink = false;
                    }
                }
                $item->comments = $comments;
                jimport('joomla.html.pagination');
                $total = $item->numOfComments;
                $pagination = new JPagination($total, $limitstart, $limit);
            }
        }
        // Author's latest items
        if ($item->params->get('itemAuthorLatest') && $item->created_by_alias == '') {
            $model =& $this->getModel('itemlist');
            $authorLatestItems = $model->getAuthorLatest($item->id, $item->params->get('itemAuthorLatestLimit'), $item->created_by);
            if (count($authorLatestItems)) {
                for ($i = 0; $i < sizeof($authorLatestItems); $i++) {
                    $authorLatestItems[$i]->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($authorLatestItems[$i]->id . ':' . urlencode($authorLatestItems[$i]->alias), $authorLatestItems[$i]->catid . ':' . urlencode($authorLatestItems[$i]->categoryalias))));
                }
                $this->assignRef('authorLatestItems', $authorLatestItems);
            }
        }
        // Related items
        if ($item->params->get('itemRelated') && isset($item->tags) && count($item->tags)) {
            $model =& $this->getModel('itemlist');
            $relatedItems = $model->getRelatedItems($item->id, $item->tags, $item->params);
            if (count($relatedItems)) {
                for ($i = 0; $i < sizeof($relatedItems); $i++) {
                    $relatedItems[$i]->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($relatedItems[$i]->id . ':' . urlencode($relatedItems[$i]->alias), $relatedItems[$i]->catid . ':' . urlencode($relatedItems[$i]->categoryalias))));
                }
                $this->assignRef('relatedItems', $relatedItems);
            }
        }
        // Navigation (previous and next item)
        if ($item->params->get('itemNavigation')) {
            $model =& $this->getModel('item');
            $nextItem = $model->getNextItem($item->id, $item->catid, $item->ordering);
            if (!is_null($nextItem)) {
                $item->nextLink = urldecode(JRoute::_(K2HelperRoute::getItemRoute($nextItem->id . ':' . urlencode($nextItem->alias), $nextItem->catid . ':' . urlencode($item->category->alias))));
                $item->nextTitle = $nextItem->title;
            }
            $previousItem = $model->getPreviousItem($item->id, $item->catid, $item->ordering);
            if (!is_null($previousItem)) {
                $item->previousLink = urldecode(JRoute::_(K2HelperRoute::getItemRoute($previousItem->id . ':' . urlencode($previousItem->alias), $previousItem->catid . ':' . urlencode($item->category->alias))));
                $item->previousTitle = $previousItem->title;
            }
        }
        // Absolute URL
        $uri =& JURI::getInstance();
        $item->absoluteURL = $uri->toString();
        // Email link
        if (K2_JVERSION == '16') {
            require_once JPATH_SITE . '/components/com_mailto/helpers/mailto.php';
            $template = $mainframe->getTemplate();
            $item->emailLink = JRoute::_('index.php?option=com_mailto&tmpl=component&template=' . $template . '&link=' . MailToHelper::addLink($item->absoluteURL));
        } else {
            require_once JPATH_SITE . DS . 'components' . DS . 'com_mailto' . DS . 'helpers' . DS . 'mailto.php';
            $item->emailLink = JRoute::_('index.php?option=com_mailto&tmpl=component&link=' . MailToHelper::addLink($item->absoluteURL));
        }
        // Twitter link (legacy code)
        if ($params->get('twitterUsername')) {
            $item->twitterURL = 'http://twitter.com/intent/tweet?text=' . urlencode($item->title) . '&amp;url=' . urlencode($item->absoluteURL) . '&amp;via=' . $params->get('twitterUsername');
        } else {
            $item->twitterURL = 'http://twitter.com/intent/tweet?text=' . urlencode($item->title) . '&amp;url=' . urlencode($item->absoluteURL);
        }
        // Social link
        $item->socialLink = urlencode($item->absoluteURL);
        // Set page title
        $menus =& JSite::getMenu();
        $menu = $menus->getActive();
        if (is_object($menu) && isset($menu->query['view']) && $menu->query['view'] == 'item' && isset($menu->query['id']) && $menu->query['id'] == $item->id) {
            $menu_params = new JParameter($menu->params);
            if (!$menu_params->get('page_title')) {
                $params->set('page_title', $item->cleanTitle);
            }
        } else {
            $params->set('page_title', $item->cleanTitle);
        }
        if (K2_JVERSION == '16') {
            if ($mainframe->getCfg('sitename_pagetitles', 0) == 1) {
                $title = JText::sprintf('JPAGETITLE', $mainframe->getCfg('sitename'), $params->get('page_title'));
                $params->set('page_title', $title);
            } elseif ($mainframe->getCfg('sitename_pagetitles', 0) == 2) {
                $title = JText::sprintf('JPAGETITLE', $params->get('page_title'), $mainframe->getCfg('sitename'));
                $params->set('page_title', $title);
            }
        }
        $document->setTitle($params->get('page_title'));
        // Set pathway
        $menus =& JSite::getMenu();
        $menu = $menus->getActive();
        $pathway =& $mainframe->getPathWay();
        if ($menu) {
            if ($menu->query['view'] != 'item' || $menu->query['id'] != $item->id) {
                if (!isset($menu->query['task']) || $menu->query['task'] != 'category' || $menu->query['id'] != $item->catid) {
                    $pathway->addItem($item->category->name, $item->category->link);
                }
                $pathway->addItem($item->cleanTitle, '');
            }
        }
        // Set metadata
        if ($item->metadesc) {
            $document->setDescription($item->metadesc);
        } else {
            $metaDescItem = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext . ' ' . $item->fulltext);
            $metaDescItem = K2HelperUtilities::characterLimit($metaDescItem, $params->get('metaDescLimit', 150));
            $metaDescItem = htmlentities($metaDescItem, ENT_QUOTES, 'utf-8');
            $document->setDescription($metaDescItem);
        }
        if ($item->metakey) {
            $document->setMetadata('keywords', $item->metakey);
        } else {
            if (isset($item->tags) && count($item->tags)) {
                $tmp = array();
                foreach ($item->tags as $tag) {
                    $tmp[] = $tag->name;
                }
                $document->setMetadata('keywords', implode(',', $tmp));
            }
        }
        // Menu metadata for Joomla! 1.6/1.7 (Overrides the current metadata if set)
        if (K2_JVERSION == '16') {
            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'));
        }
        if ($mainframe->getCfg('MetaTitle') == '1') {
            $document->setMetadata('title', $item->title);
        }
        if ($mainframe->getCfg('MetaAuthor') == '1' && isset($item->author->name)) {
            $document->setMetadata('author', $item->author->name);
        }
        $mdata = new JParameter($item->metadata);
        $mdata = $mdata->toArray();
        foreach ($mdata as $k => $v) {
            if ($k == 'robots' || $k == 'author') {
                if ($v) {
                    $document->setMetadata($k, $v);
                }
            }
        }
        // Load Facebook meta tag for item image
        $facebookImage = 'image' . $params->get('facebookImage', 'Small');
        if ($item->{$facebookImage}) {
            $document->setMetaData('image', substr(JURI::root(), 0, -1) . str_replace(JURI::root(true), '', $item->{$facebookImage}));
        }
        // 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 ($item->params->get('theme')) {
            $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . $item->params->get('theme'));
            $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . $item->params->get('theme'));
            $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . $item->params->get('theme'));
        }
        // Assign data
        $this->assignRef('item', $item);
        $this->assignRef('user', $user);
        $this->assignRef('params', $item->params);
        $this->assignRef('pagination', $pagination);
        parent::display($tpl);
    }
コード例 #8
0
 /**
  * This method is to load neccessary access
  * for PageBuilder need
  *
  * @return void
  */
 public function onBeforeRender()
 {
     // Check if JoomlaShine extension framework is enabled?
     $framework = JTable::getInstance('Extension');
     $framework->load(array('element' => 'jsnframework', 'type' => 'plugin', 'folder' => 'system'));
     // Do nothing if JSN Extension framework not found.
     if (!$framework->extension_id) {
         return;
     }
     $app = JFactory::getApplication();
     $tpl = $app->input->getInt('tp', 0);
     if ($app->isAdmin() || $tpl) {
         return;
     }
     // Get requested component, view and task
     $option = $app->input->getCmd('option', '');
     $view = $app->input->getCmd('view', '');
     $layout = $app->input->getCmd('layout', '');
     $user = JFactory::getUser();
     if ($app->isSite() && $option == 'com_content' && $view == 'form' && $layout == 'edit' && $user->get('id') > 0) {
         return;
     }
     $doc = JFactory::getDocument();
     if (get_class($doc) != "JDocumentHTML") {
         return;
     }
     if ($app->isSite() && $option == 'com_k2' && $view == 'item' && $app->input->getInt('id', 0)) {
         if (file_exists(JPATH_ROOT . '/administrator/components/com_pagebuilder/helpers/shortcode.php')) {
             if (class_exists('K2HelperUtilities')) {
                 include_once JPATH_ROOT . '/administrator/components/com_pagebuilder/helpers/shortcode.php';
                 $shortCodeRegex = JSNPagebuilderHelpersShortcode::getShortcodeRegex();
                 JModelLegacy::addIncludePath(JPATH_ROOT . '/components/com_k2/models');
                 $K2ModelItem = JModelLegacy::getInstance('k2modelitem');
                 $k2Item = $K2ModelItem->getData();
                 if (count($k2Item)) {
                     $metaDescItem = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $k2Item->introtext . ' ' . $k2Item->fulltext);
                     $metaDescItem = strip_tags($metaDescItem);
                     $k2params = K2HelperUtilities::getParams('com_k2');
                     $metaDescItem = self::removeShortCode($metaDescItem, $shortCodeRegex);
                     $metaDescItem = K2HelperUtilities::characterLimit($metaDescItem, $k2params->get('metaDescLimit', 150));
                     if ($doc->getMetaData('og:description') != null) {
                         $doc->setMetaData('og:description', $metaDescItem);
                     }
                     if ($doc->getDescription() != '') {
                         $doc->setDescription($metaDescItem);
                     }
                 }
             }
         }
     }
     // Get PageBuilder configuration.
     $params = JSNConfigHelper::get('com_pagebuilder');
     // Check if it's enabled or not.
     $isEnabled = $params->get('enable_pagebuilder', 1);
     // Do nothing if PageBuilder not enabled;
     if (!$isEnabled) {
     }
     // Register autoloaded classes
     JSN_Loader::register(JSNPB_ADMIN_ROOT . '/helpers', 'JSNPagebuilderHelpers');
     JSN_Loader::register(JSNPB_ADMIN_ROOT . '/helpers/shortcode', 'JSNPBShortcode');
     //JSN_Loader::register(JPATH_ROOT . '/plugins/pagebuilder/' , 'JSNPBShortcode');
     //JSN_Loader::register(JPATH_ROOT . '/administrator/components/com_pagebuilder/elements/' , 'JSNPBShortcode');
     JSN_Loader::register(JPATH_ROOT . '/plugins/jsnpagebuilder/defaultelements/', 'JSNPBShortcode');
     //load ElementAssets
     self::loadElementAssets();
     /*
      * Move all css files of PageBuilder
      * to the end of css list
      *
      */
     $data = $doc->getHeadData();
     $styleSheetList = $data['styleSheets'];
     $_tmpList = array();
     if (count($styleSheetList)) {
         foreach ($styleSheetList as $cssUrl => $css) {
             // Check if the file belongs to PageBuilder
             if (strpos($cssUrl, 'plugins/pagebuilder/') !== false || strpos($cssUrl, 'com_pagebuilder') !== false) {
                 $_tmpList[$cssUrl] = $css;
                 unset($styleSheetList[$cssUrl]);
             }
         }
     }
     $styleSheetList = array_merge($styleSheetList, $_tmpList);
     $data['styleSheets'] = $styleSheetList;
     $doc->setHeadData($data);
 }
コード例 #9
0
ファイル: comments.php プロジェクト: Roma48/abazherka_old
 function report()
 {
     $id = $this->getState('id');
     $name = JString::trim($this->getState('name'));
     $reportReason = JString::trim($this->getState('reportReason'));
     $params =& K2HelperUtilities::getParams('com_k2');
     $user = JFactory::getUser();
     $row = JTable::getInstance('K2Comment', 'Table');
     $row->load($id);
     if (!$row->published) {
         $this->setError(JText::_('K2_COMMENT_NOT_FOUND'));
         return false;
     }
     if (empty($name)) {
         $this->setError(JText::_('K2_PLEASE_TYPE_YOUR_NAME'));
         return false;
     }
     if (empty($reportReason)) {
         $this->setError(JText::_('K2_PLEASE_TYPE_THE_REPORT_REASON'));
         return false;
     }
     if (($params->get('antispam') == 'recaptcha' || $params->get('antispam') == 'both') && $user->guest) {
         if (!function_exists('_recaptcha_qsencode')) {
             require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_k2' . DS . 'lib' . DS . 'recaptchalib.php';
         }
         $privatekey = $params->get('recaptcha_private_key');
         $resp = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
         if (!$resp->is_valid) {
             $this->setError(JText::_('K2_THE_WORDS_YOU_TYPED_DID_NOT_MATCH_THE_ONES_DISPLAYED_PLEASE_TRY_AGAIN'));
             return false;
         }
     }
     $mainframe = JFactory::getApplication();
     $mail = JFactory::getMailer();
     $senderEmail = $mainframe->getCfg('mailfrom');
     $senderName = $mainframe->getCfg('fromname');
     $mail->setSender(array($senderEmail, $senderName));
     $mail->setSubject(JText::_('K2_COMMENT_REPORT'));
     $mail->IsHTML(true);
     switch (substr(strtoupper(PHP_OS), 0, 3)) {
         case 'WIN':
             $mail->LE = "\r\n";
             break;
         case 'MAC':
         case 'DAR':
             $mail->LE = "\r";
         default:
             break;
     }
     $body = "\n        <strong>" . JText::_('K2_NAME') . "</strong>: " . $name . " <br/>\n        <strong>" . JText::_('K2_REPORT_REASON') . "</strong>: " . $reportReason . " <br/>\n        <strong>" . JText::_('K2_COMMENT') . "</strong>: " . nl2br($row->commentText) . " <br/>\n        ";
     $mail->setBody($body);
     $mail->ClearAddresses();
     $mail->AddAddress($params->get('commentsReportRecipient', $mainframe->getCfg('mailfrom')));
     $mail->Send();
     return true;
 }
コード例 #10
0
ファイル: item.php プロジェクト: educakanchay/educa
 function media()
 {
     K2HelperHTML::loadjQuery(true, true);
     JRequest::setVar('tmpl', 'component');
     $params = K2HelperUtilities::getParams('com_k2');
     $document = JFactory::getDocument();
     $language = JFactory::getLanguage();
     $language->load('com_k2', JPATH_ADMINISTRATOR);
     $user = JFactory::getUser();
     if ($user->guest) {
         $uri = JFactory::getURI();
         if (K2_JVERSION != '15') {
             $url = 'index.php?option=com_users&view=login&return=' . base64_encode($uri->toString());
         } else {
             $url = 'index.php?option=com_user&view=login&return=' . base64_encode($uri->toString());
         }
         $mainframe = JFactory::getApplication();
         $mainframe->enqueueMessage(JText::_('K2_YOU_NEED_TO_LOGIN_FIRST'), 'notice');
         $mainframe->redirect(JRoute::_($url, false));
     }
     // CSS
     $document->addStyleSheet(JURI::root(true) . '/media/k2/assets/css/k2.css?v=2.6.8');
     // JS
     K2HelperHTML::loadjQuery(true);
     $document->addScript(JURI::root(true) . '/media/k2/assets/js/k2.js?v=2.6.8&amp;sitepath=' . JURI::root(true) . '/');
     $this->addViewPath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'views');
     $view = $this->getView('media', 'html');
     $view->addTemplatePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'views' . DS . 'media' . DS . 'tmpl');
     $view->setLayout('default');
     $view->display();
 }
コード例 #11
0
ファイル: view.json.php プロジェクト: grchis/Site-Auto
 function display($tpl = null)
 {
     $mainframe = JFactory::getApplication();
     $user = JFactory::getUser();
     $document = JFactory::getDocument();
     if (K2_JVERSION == '15') {
         $document->setMimeEncoding('application/json');
         $document->setType('json');
     }
     $params = K2HelperUtilities::getParams('com_k2');
     $view = JRequest::getWord('view');
     $task = JRequest::getWord('task');
     $db = JFactory::getDBO();
     $jnow = JFactory::getDate();
     $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql();
     $nullDate = $db->getNullDate();
     // Get item
     $model = $this->getModel();
     $item = $model->getData();
     // Does the item exists?
     if (!is_object($item) || !$item->id) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     // Override some params because we want to show all elements in JSON
     $itemParams = class_exists('JParameter') ? new JParameter($item->params) : new JRegistry($item->params);
     $itemParams->set('itemIntroText', true);
     $itemParams->set('itemFullText', true);
     $itemParams->set('itemTags', true);
     $itemParams->set('itemExtraFields', true);
     $itemParams->set('itemAttachments', true);
     $itemParams->set('itemRating', true);
     $itemParams->set('itemAuthor', true);
     $itemParams->set('itemImageGallery', true);
     $itemParams->set('itemVideo', true);
     $item->params = $itemParams->toString();
     // Prepare item
     $item = $model->prepareItem($item, $view, $task);
     // Plugins
     $item = $model->execPlugins($item, $view, $task);
     // Access check
     if (K2_JVERSION != '15') {
         if (!in_array($item->access, $user->getAuthorisedViewLevels()) || !in_array($item->category->access, $user->getAuthorisedViewLevels())) {
             JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
         }
     } else {
         if ($item->access > $user->get('aid', 0) || $item->category->access > $user->get('aid', 0)) {
             JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
         }
     }
     // Published check
     if (!$item->published || $item->trash) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     if ($item->publish_up != $nullDate && $item->publish_up > $now) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     if ($item->publish_down != $nullDate && $item->publish_down < $now) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     if (!$item->category->published || $item->category->trash) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     // Set default image
     K2HelperUtilities::setDefaultImage($item, $view);
     // Build the output object
     $row = $model->prepareJSONItem($item);
     // Output
     $response = new stdClass();
     // Site
     $response->site = new stdClass();
     $uri = JURI::getInstance();
     $response->site->url = $uri->toString(array('scheme', 'host', 'port'));
     $config = JFactory::getConfig();
     $response->site->name = K2_JVERSION == '30' ? $config->get('sitename') : $config->getValue('config.sitename');
     $response->item = $row;
     $json = json_encode($response);
     $callback = JRequest::getCmd('callback');
     if ($callback) {
         $document->setMimeEncoding('application/javascript');
         echo $callback . '(' . $json . ')';
     } else {
         echo $json;
     }
 }
コード例 #12
0
ファイル: item.php プロジェクト: vuchannguyen/dayhoc
 function media()
 {
     JRequest::setVar('tmpl', 'component');
     $params =& K2HelperUtilities::getParams('com_k2');
     $document =& JFactory::getDocument();
     $language =& JFactory::getLanguage();
     $language->load('com_k2', JPATH_ADMINISTRATOR);
     $user =& JFactory::getUser();
     if ($user->guest) {
         JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
     }
     // CSS
     $document->addStyleSheet(JURI::root(true) . '/media/k2/assets/css/k2.css?v=2.5.7');
     // JS
     $jQueryHandling = $params->get('jQueryHandling', '1.7remote');
     if ($jQueryHandling && strpos($jQueryHandling, 'remote') == true) {
         $document->addScript('http://ajax.googleapis.com/ajax/libs/jquery/' . str_replace('remote', '', $jQueryHandling) . '/jquery.min.js');
     } elseif ($jQueryHandling && strpos($jQueryHandling, 'remote') == false) {
         $document->addScript(JURI::root(true) . '/media/k2/assets/js/jquery-' . $jQueryHandling . '.min.js');
     }
     $backendJQueryHandling = $params->get('backendJQueryHandling', 'remote');
     if ($backendJQueryHandling == 'remote') {
         $document->addScript('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js');
     } else {
         $document->addScript(JURI::root(true) . '/media/k2/assets/js/jquery-ui-1.8.16.custom.min.js');
     }
     $document->addScript(JURI::root(true) . '/media/k2/assets/js/k2.js?v=2.5.7');
     $this->addViewPath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'views');
     $view =& $this->getView('media', 'html');
     $view->addTemplatePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'views' . DS . 'media' . DS . 'tmpl');
     $view->setLayout('default');
     $view->display();
 }
コード例 #13
0
ファイル: itemlist.php プロジェクト: jamielaff/als_resourcing
 function prepareFeedItem(&$item)
 {
     JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables');
     $params = K2HelperUtilities::getParams('com_k2');
     $limitstart = 0;
     $view = JRequest::getCmd('view');
     //Category
     $category = JTable::getInstance('K2Category', 'Table');
     $category->load($item->catid);
     $item->category = $category;
     //Read more link
     $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . $item->alias, $item->catid . ':' . urlencode($item->category->alias))));
     //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);
     }
     //Description
     $item->description = '';
     //Item image
     if ($params->get('feedItemImage') && JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_' . $params->get('feedImgSize') . '.jpg')) {
         $altText = $item->image_caption ? $item->image_caption : $item->title;
         $item->description .= '<div class="K2FeedImage"><img src="' . JURI::root() . 'media/k2/items/cache/' . md5('Image' . $item->id) . '_' . $params->get('feedImgSize') . '.jpg" alt="' . $altText . '" /></div>';
     }
     //Item Introtext
     if ($params->get('feedItemIntroText')) {
         //Introtext word limit
         if ($params->get('feedTextWordLimit') && $item->introtext) {
             $item->introtext = K2HelperUtilities::wordLimit($item->introtext, $params->get('feedTextWordLimit'));
         }
         $item->description .= '<div class="K2FeedIntroText">' . $item->introtext . '</div>';
     }
     //Item Fulltext
     if ($params->get('feedItemFullText') && $item->fulltext) {
         $item->description .= '<div class="K2FeedFullText">' . $item->fulltext . '</div>';
     }
     //Item Tags
     if ($params->get('feedItemTags')) {
         $tags = $this->getItemTags($item->id);
         if (count($tags)) {
             $item->description .= '<div class="K2FeedTags"><ul>';
             foreach ($tags as $tag) {
                 $item->description .= '<li>' . $tag->name . '</li>';
             }
             $item->description .= '<ul></div>';
         }
     }
     //Item Video
     if ($params->get('feedItemVideo') && $item->video) {
         if (!empty($item->video) && JString::substr($item->video, 0, 1) !== '{') {
             $item->description .= '<div class="K2FeedVideo">' . $item->video . '</div>';
         } else {
             $params->set('vfolder', 'media/k2/videos');
             $params->set('afolder', 'media/k2/audio');
             if (JString::strpos($item->video, 'remote}')) {
                 preg_match("#}(.*?){/#s", $item->video, $matches);
                 if (!JString::strpos($matches[1], 'http://}')) {
                     $item->video = str_replace($matches[1], JURI::root() . $matches[1], $item->video);
                 }
             }
             $dispatcher = JDispatcher::getInstance();
             JPluginHelper::importPlugin('content');
             $item->text = $item->video;
             if (K2_JVERSION == '15') {
                 $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart));
             } else {
                 $dispatcher->trigger('onContentPrepare', array('com_k2.' . $view, &$item, &$params, $limitstart));
             }
             $item->description .= '<div class="K2FeedVideo">' . $item->text . '</div>';
         }
     }
     //Item gallery
     if ($params->get('feedItemGallery') && $item->gallery) {
         $params->set('galleries_rootfolder', 'media/k2/galleries');
         $params->set('enabledownload', '0');
         $dispatcher = JDispatcher::getInstance();
         JPluginHelper::importPlugin('content');
         $item->text = $item->gallery;
         if (K2_JVERSION == '15') {
             $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart));
         } else {
             $dispatcher->trigger('onContentPrepare', array('com_k2.' . $view, &$item, &$params, $limitstart));
         }
         $item->description .= '<div class="K2FeedGallery">' . $item->text . '</div>';
     }
     //Item attachments
     if ($params->get('feedItemAttachments')) {
         $attachments = $this->getItemAttachments($item->id);
         if (count($attachments)) {
             $item->description .= '<div class="K2FeedAttachments"><ul>';
             foreach ($attachments as $attachment) {
                 $item->description .= '<li><a title="' . htmlentities($attachment->titleAttribute, ENT_QUOTES, 'UTF-8') . '" href="' . $attachment->link . '">' . $attachment->title . '</a></li>';
             }
             $item->description .= '<ul></div>';
         }
     }
     //Author
     if (!empty($item->created_by_alias)) {
         $item->author->name = $item->created_by_alias;
         $item->author->email = '';
     } 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);
     }
     return $item;
 }
コード例 #14
0
ファイル: view.html.php プロジェクト: emavro/k2
    function display($tpl = null)
    {
        $mainframe = JFactory::getApplication();
        $user = JFactory::getUser();
        $document = JFactory::getDocument();
        $params = K2HelperUtilities::getParams('com_k2');
        $limitstart = JRequest::getInt('limitstart', 0);
        $view = JRequest::getWord('view');
        $task = JRequest::getWord('task');
        $db = JFactory::getDBO();
        $jnow = JFactory::getDate();
        $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql();
        $nullDate = $db->getNullDate();
        $this->setLayout('item');
        // Add link
        if (K2HelperPermissions::canAddItem()) {
            $addLink = JRoute::_('index.php?option=com_k2&view=item&task=add&tmpl=component');
        }
        $this->assignRef('addLink', $addLink);
        // Get item
        $model = $this->getModel();
        $item = $model->getData();
        // Does the item exists?
        if (!is_object($item) || !$item->id) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        // Prepare item
        $item = $model->prepareItem($item, $view, $task);
        // Plugins
        $item = $model->execPlugins($item, $view, $task);
        // User K2 plugins
        $item->event->K2UserDisplay = '';
        if (isset($item->author) && is_object($item->author->profile) && isset($item->author->profile->id)) {
            $dispatcher = JDispatcher::getInstance();
            JPluginHelper::importPlugin('k2');
            $results = $dispatcher->trigger('onK2UserDisplay', array(&$item->author->profile, &$params, $limitstart));
            $item->event->K2UserDisplay = trim(implode("\n", $results));
            $item->author->profile->url = htmlspecialchars($item->author->profile->url, ENT_QUOTES, 'UTF-8');
        }
        // Access check
        if ($this->getLayout() == 'form') {
            JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
        }
        if (K2_JVERSION != '15') {
            if (!in_array($item->access, $user->getAuthorisedViewLevels()) || !in_array($item->category->access, $user->getAuthorisedViewLevels())) {
                if ($user->guest) {
                    $uri = JFactory::getURI();
                    $url = 'index.php?option=com_users&view=login&return=' . base64_encode($uri->toString());
                    $mainframe->enqueueMessage(JText::_('K2_YOU_NEED_TO_LOGIN_FIRST'), 'notice');
                    $mainframe->redirect(JRoute::_($url, false));
                } else {
                    JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
                    return;
                }
            }
        } else {
            if ($item->access > $user->get('aid', 0) || $item->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->enqueueMessage(JText::_('K2_YOU_NEED_TO_LOGIN_FIRST'), 'notice');
                    $mainframe->redirect(JRoute::_($url, false));
                } else {
                    JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
                    return;
                }
            }
        }
        // Published check
        if (!$item->published || $item->trash) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        if ($item->publish_up != $nullDate && $item->publish_up > $now) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        if ($item->publish_down != $nullDate && $item->publish_down < $now) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        if (!$item->category->published || $item->category->trash) {
            JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
        }
        // Increase hits counter
        $model->hit($item->id);
        // Set default image
        K2HelperUtilities::setDefaultImage($item, $view);
        // Pass the old parameter to the view in order to avoid layout changes
        if ($params->get('antispam') == 'recaptcha' || $params->get('antispam') == 'both') {
            $params->set('recaptcha', true);
            $item->params->set('recaptcha', true);
        } else {
            $params->set('recaptcha', false);
            $item->params->set('recaptcha', false);
        }
        // Comments
        $item->event->K2CommentsCounter = '';
        $item->event->K2CommentsBlock = '';
        if ($item->params->get('itemComments')) {
            // Trigger comments events
            $dispatcher = JDispatcher::getInstance();
            JPluginHelper::importPlugin('k2');
            $results = $dispatcher->trigger('onK2CommentsCounter', array(&$item, &$params, $limitstart));
            $item->event->K2CommentsCounter = trim(implode("\n", $results));
            $results = $dispatcher->trigger('onK2CommentsBlock', array(&$item, &$params, $limitstart));
            $item->event->K2CommentsBlock = trim(implode("\n", $results));
            // Load K2 native comments system only if there are no plugins overriding it
            if (empty($item->event->K2CommentsCounter) && empty($item->event->K2CommentsBlock)) {
                // Load reCAPTCHA script
                if (!JRequest::getInt('print') && ($item->params->get('comments') == '1' || $item->params->get('comments') == '2' && K2HelperPermissions::canAddComment($item->catid))) {
                    if ($params->get('recaptcha') && ($user->guest || $params->get('recaptchaForRegistered', 1))) {
                        $document->addScript('https://www.google.com/recaptcha/api/js/recaptcha_ajax.js');
                        $js = '
						function showRecaptcha(){
							Recaptcha.create("' . $item->params->get('recaptcha_public_key') . '", "recaptcha", {
								theme: "' . $item->params->get('recaptcha_theme', 'clean') . '"
							});
						}
						$K2(window).load(function() {
							showRecaptcha();
						});
						';
                        $document->addScriptDeclaration($js);
                    }
                }
                // Check for inline comment moderation
                if (!$user->guest && $user->id == $item->created_by && $params->get('inlineCommentsModeration')) {
                    $inlineCommentsModeration = true;
                    $commentsPublished = false;
                } else {
                    $inlineCommentsModeration = false;
                    $commentsPublished = true;
                }
                $this->assignRef('inlineCommentsModeration', $inlineCommentsModeration);
                // Flag spammer link
                $reportSpammerFlag = false;
                if (K2_JVERSION != '15') {
                    if ($user->authorise('core.admin', 'com_k2')) {
                        $reportSpammerFlag = true;
                        $document = JFactory::getDocument();
                        $document->addScriptDeclaration('var K2Language = ["' . JText::_('K2_REPORT_USER_WARNING', true) . '"];');
                    }
                } else {
                    if ($user->gid > 24) {
                        $reportSpammerFlag = true;
                    }
                }
                $limit = $params->get('commentsLimit');
                $comments = $model->getItemComments($item->id, $limitstart, $limit, $commentsPublished);
                for ($i = 0; $i < sizeof($comments); $i++) {
                    $comments[$i]->commentText = nl2br($comments[$i]->commentText);
                    // Convert URLs to links properly
                    $comments[$i]->commentText = preg_replace("/([^\\w\\/])(www\\.[a-z0-9\\-]+\\.[a-z0-9\\-]+)/i", "\$1http://\$2", $comments[$i]->commentText);
                    $comments[$i]->commentText = preg_replace("/([\\w]+:\\/\\/[\\w-?&;#~=\\.\\/\\@]+[\\w\\/])/i", "<a target=\"_blank\" rel=\"nofollow\" href=\"\$1\">\$1</A>", $comments[$i]->commentText);
                    $comments[$i]->commentText = preg_replace("/([\\w-?&;#~=\\.\\/]+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?))/i", "<a href=\"mailto:\$1\">\$1</A>", $comments[$i]->commentText);
                    $comments[$i]->userImage = K2HelperUtilities::getAvatar($comments[$i]->userID, $comments[$i]->commentEmail, $params->get('commenterImgWidth'));
                    if ($comments[$i]->userID > 0) {
                        $comments[$i]->userLink = K2HelperRoute::getUserRoute($comments[$i]->userID);
                    } else {
                        $comments[$i]->userLink = $comments[$i]->commentURL;
                    }
                    if ($reportSpammerFlag && $comments[$i]->userID > 0) {
                        $comments[$i]->reportUserLink = JRoute::_('index.php?option=com_k2&view=comments&task=reportSpammer&id=' . $comments[$i]->userID . '&format=raw');
                    } else {
                        $comments[$i]->reportUserLink = false;
                    }
                }
                $item->comments = $comments;
                if (!isset($item->numOfComments)) {
                    $item->numOfComments = 0;
                }
                jimport('joomla.html.pagination');
                $total = $item->numOfComments;
                $pagination = new JPagination($total, $limitstart, $limit);
            }
        }
        // Author's latest items
        if ($item->params->get('itemAuthorLatest') && $item->created_by_alias == '') {
            $model = $this->getModel('itemlist');
            $authorLatestItems = $model->getAuthorLatest($item->id, $item->params->get('itemAuthorLatestLimit'), $item->created_by);
            if (count($authorLatestItems)) {
                for ($i = 0; $i < sizeof($authorLatestItems); $i++) {
                    $authorLatestItems[$i]->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($authorLatestItems[$i]->id . ':' . urlencode($authorLatestItems[$i]->alias), $authorLatestItems[$i]->catid . ':' . urlencode($authorLatestItems[$i]->categoryalias))));
                }
                $this->assignRef('authorLatestItems', $authorLatestItems);
            }
        }
        // Related items
        if ($item->params->get('itemRelated') && isset($item->tags) && count($item->tags)) {
            $model = $this->getModel('itemlist');
            $relatedItems = $model->getRelatedItems($item->id, $item->tags, $item->params);
            if (count($relatedItems)) {
                for ($i = 0; $i < sizeof($relatedItems); $i++) {
                    $relatedItems[$i]->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($relatedItems[$i]->id . ':' . urlencode($relatedItems[$i]->alias), $relatedItems[$i]->catid . ':' . urlencode($relatedItems[$i]->categoryalias))));
                }
                $this->assignRef('relatedItems', $relatedItems);
            }
        }
        // Navigation (previous and next item)
        if ($item->params->get('itemNavigation')) {
            $model = $this->getModel('item');
            $nextItem = $model->getNextItem($item->id, $item->catid, $item->ordering);
            if (!is_null($nextItem)) {
                $item->nextLink = urldecode(JRoute::_(K2HelperRoute::getItemRoute($nextItem->id . ':' . urlencode($nextItem->alias), $nextItem->catid . ':' . urlencode($item->category->alias))));
                $item->nextTitle = $nextItem->title;
                $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" . $nextItem->id) . '_XS.jpg')) {
                    $item->nextImageXSmall = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $nextItem->id) . '_XS.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $nextItem->id) . '_S.jpg')) {
                    $item->nextImageSmall = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $nextItem->id) . '_S.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $nextItem->id) . '_M.jpg')) {
                    $item->nextImageMedium = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $nextItem->id) . '_M.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $nextItem->id) . '_L.jpg')) {
                    $item->nextImageLarge = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $nextItem->id) . '_L.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $nextItem->id) . '_XL.jpg')) {
                    $item->nextImageXLarge = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $nextItem->id) . '_XL.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $nextItem->id) . '_Generic.jpg')) {
                    $item->nextImageGeneric = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $nextItem->id) . '_Generic.jpg' . $timestamp;
                }
            }
            $previousItem = $model->getPreviousItem($item->id, $item->catid, $item->ordering);
            if (!is_null($previousItem)) {
                $item->previousLink = urldecode(JRoute::_(K2HelperRoute::getItemRoute($previousItem->id . ':' . urlencode($previousItem->alias), $previousItem->catid . ':' . urlencode($item->category->alias))));
                $item->previousTitle = $previousItem->title;
                $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" . $previousItem->id) . '_XS.jpg')) {
                    $item->previousImageXSmall = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $previousItem->id) . '_XS.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $previousItem->id) . '_S.jpg')) {
                    $item->previousImageSmall = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $previousItem->id) . '_S.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $previousItem->id) . '_M.jpg')) {
                    $item->previousImageMedium = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $previousItem->id) . '_M.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $previousItem->id) . '_L.jpg')) {
                    $item->previousImageLarge = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $previousItem->id) . '_L.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $previousItem->id) . '_XL.jpg')) {
                    $item->previousImageXLarge = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $previousItem->id) . '_XL.jpg' . $timestamp;
                }
                if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $previousItem->id) . '_Generic.jpg')) {
                    $item->previousImageGeneric = JURI::base(true) . '/media/k2/items/cache/' . md5("Image" . $previousItem->id) . '_Generic.jpg' . $timestamp;
                }
            }
        }
        // Absolute URL
        $uri = JURI::getInstance();
        $item->absoluteURL = $uri->toString();
        // Email link
        if (K2_JVERSION != '15') {
            require_once JPATH_SITE . '/components/com_mailto/helpers/mailto.php';
            $template = $mainframe->getTemplate();
            $item->emailLink = JRoute::_('index.php?option=com_mailto&tmpl=component&template=' . $template . '&link=' . MailToHelper::addLink($item->absoluteURL));
        } else {
            require_once JPATH_SITE . DS . 'components' . DS . 'com_mailto' . DS . 'helpers' . DS . 'mailto.php';
            $item->emailLink = JRoute::_('index.php?option=com_mailto&tmpl=component&link=' . MailToHelper::addLink($item->absoluteURL));
        }
        // Twitter link (legacy code)
        if ($params->get('twitterUsername')) {
            $item->twitterURL = 'http://twitter.com/intent/tweet?text=' . urlencode($item->title) . '&amp;url=' . urlencode($item->absoluteURL) . '&amp;via=' . $params->get('twitterUsername');
        } else {
            $item->twitterURL = 'http://twitter.com/intent/tweet?text=' . urlencode($item->title) . '&amp;url=' . urlencode($item->absoluteURL);
        }
        // Social link
        $item->socialLink = urlencode($item->absoluteURL);
        // Set page title
        $menus = $mainframe->getMenu();
        $menu = $menus->getActive();
        if (is_object($menu) && isset($menu->query['view']) && $menu->query['view'] == 'item' && isset($menu->query['id']) && $menu->query['id'] == $item->id) {
            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', $item->cleanTitle);
            }
        } else {
            $params->set('page_title', $item->cleanTitle);
        }
        if (K2_JVERSION != '15') {
            if ($mainframe->getCfg('sitename_pagetitles', 0) == 1) {
                $title = JText::sprintf('JPAGETITLE', $mainframe->getCfg('sitename'), $params->get('page_title'));
                $params->set('page_title', $title);
            } elseif ($mainframe->getCfg('sitename_pagetitles', 0) == 2) {
                $title = JText::sprintf('JPAGETITLE', $params->get('page_title'), $mainframe->getCfg('sitename'));
                $params->set('page_title', $title);
            }
        }
        $document->setTitle($params->get('page_title'));
        // Set pathway
        $menus = $mainframe->getMenu();
        $menu = $menus->getActive();
        $pathway = $mainframe->getPathWay();
        if ($menu) {
            if (isset($menu->query['view']) && ($menu->query['view'] != 'item' || $menu->query['id'] != $item->id)) {
                if (!isset($menu->query['task']) || $menu->query['task'] != 'category' || $menu->query['id'] != $item->catid) {
                    $pathway->addItem($item->category->name, $item->category->link);
                }
                $pathway->addItem($item->cleanTitle, '');
            }
        }
        // Set metadata
        if ($item->metadesc) {
            $document->setDescription(K2_JVERSION == '15' ? htmlspecialchars($item->metadesc, ENT_QUOTES, 'UTF-8') : $item->metadesc);
        } else {
            $metaDescItem = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext . ' ' . $item->fulltext);
            $metaDescItem = strip_tags($metaDescItem);
            $metaDescItem = K2HelperUtilities::characterLimit($metaDescItem, $params->get('metaDescLimit', 150));
            $document->setDescription(K2_JVERSION == '15' ? $metaDescItem : html_entity_decode($metaDescItem));
        }
        if ($item->metakey) {
            $document->setMetadata('keywords', $item->metakey);
        } else {
            if (isset($item->tags) && count($item->tags)) {
                $tmp = array();
                foreach ($item->tags as $tag) {
                    $tmp[] = $tag->name;
                }
                $document->setMetadata('keywords', implode(',', $tmp));
            }
        }
        // Menu metadata for Joomla! 2.5+ (overrides the current metadata if set)
        if (K2_JVERSION != '15') {
            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'));
        }
        if ($mainframe->getCfg('MetaTitle') == '1') {
            $document->setMetadata('title', $item->cleanTitle);
        }
        if ($mainframe->getCfg('MetaAuthor') == '1' && isset($item->author->name)) {
            $document->setMetadata('author', $item->author->name);
        }
        $mdata = class_exists('JParameter') ? new JParameter($item->metadata) : new JRegistry($item->metadata);
        $mdata = $mdata->toArray();
        foreach ($mdata as $k => $v) {
            if ($k == 'robots' || $k == 'author') {
                if ($v) {
                    $document->setMetadata($k, $v);
                }
            }
        }
        // Set Facebook meta data
        $document = JFactory::getDocument();
        $uri = JURI::getInstance();
        $document->setMetaData('og:url', $uri->toString());
        $document->setMetaData('og:title', K2_JVERSION == '15' ? htmlspecialchars($document->getTitle(), ENT_QUOTES, 'UTF-8') : $document->getTitle());
        $document->setMetaData('og:type', 'article');
        $facebookImage = 'image' . $params->get('facebookImage', 'Small');
        if ($item->{$facebookImage}) {
            $parts = parse_url($item->{$facebookImage});
            if (JFile::exists(JPATH_SITE . $parts['path'])) {
                $image = substr(JURI::root(), 0, -1) . str_replace(JURI::root(true), '', $item->{$facebookImage});
                $document->setMetaData('og:image', $image);
                $document->setMetaData('image', $image);
            }
        }
        $document->setMetaData('og:description', strip_tags($document->getDescription()));
        // 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 ($item->params->get('theme')) {
            $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . $item->params->get('theme'));
            $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . $item->params->get('theme'));
            $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . $item->params->get('theme'));
        }
        // Assign data
        $this->assignRef('item', $item);
        $this->assignRef('user', $user);
        $this->assignRef('params', $item->params);
        $this->assignRef('pagination', $pagination);
        parent::display($tpl);
    }
コード例 #15
0
ファイル: helper.php プロジェクト: jamielaff/als_resourcing
 public function getCounter($ordering = NULL, $filter = '', $byLabel = false)
 {
     static $sdata = null;
     static $sdataLabel = null;
     $user = JFactory::getUser();
     $aid = $user->get('aid');
     $db = JFactory::getDBO();
     $params = K2HelperUtilities::getParams('com_k2');
     $task = JRequest::getCmd('task');
     $model = new JAK2FilterModelItemlist();
     $groupcategories = $this->params->get('k2catsid', null);
     if ($this->params->get('catMode', 0)) {
         $groupcategories = $model->getCategoryTree($groupcategories);
     }
     $filter_categories = is_array($groupcategories) ? implode(',', $groupcategories) : $groupcategories;
     //
     $where = '';
     if ($this->update_counter) {
         $badchars = array('#', '>', '<', '\\');
         $search = JString::trim(JString::str_ireplace($badchars, '', JRequest::getString('searchword', null)));
         $where = $model->prepareSearch($search, $filter, $filter_categories);
     }
     if (empty($where)) {
         if ($byLabel) {
             if (is_null($sdataLabel)) {
                 //cache data for the case of search condition is empty
                 $query = "SELECT `num_items`, CONCAT_WS('_', `type`, `asset_id`, `labels`) AS tkey FROM #__jak2filter_taxonomy";
                 $db->setQuery($query);
                 $sdataLabel = $db->loadAssocList('tkey', 'num_items');
             }
             return $sdataLabel;
         } else {
             if (is_null($sdata)) {
                 //cache data for the case of search condition is empty
                 $query = "SELECT `num_items`, CONCAT_WS('_', `type`, `asset_id`, `option_id`) AS tkey FROM #__jak2filter_taxonomy";
                 $db->setQuery($query);
                 $sdata = $db->loadAssocList('tkey', 'num_items');
             }
             return $sdata;
         }
     } else {
         $tags_id = JRequest::getVar('tags_id');
         $rating = JRequest::getVar('rating', '');
         $rating = explode('|', $rating);
         $ratingMin = isset($rating[0]) && !empty($rating[0]) ? intval($rating[0]) : 1;
         $ratingMax = isset($rating[1]) && !empty($rating[1]) ? intval($rating[1]) : 5;
         $jnow = JFactory::getDate();
         $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql();
         $nullDate = $db->getNullDate();
         if (JRequest::getWord('format') == 'feed') {
             $limit = $params->get('feedLimit');
         }
         $query = "SELECT i.id";
         $query .= " FROM #__k2_items as i RIGHT JOIN #__k2_categories AS c ON c.id = i.catid";
         if ($ordering == 'best' || !($ratingMin <= 1 && $ratingMax == 5)) {
             $query .= " LEFT JOIN #__k2_rating r ON r.itemID = i.id";
         }
         if ($task == 'tag' || $tags_id) {
             $query .= " LEFT JOIN #__k2_tags_xref AS tags_xref ON tags_xref.itemID = i.id LEFT JOIN #__k2_tags AS tags ON tags.id = tags_xref.tagID";
         }
         $query .= " WHERE i.published = 1 AND ";
         if (K2_JVERSION != '15') {
             $query .= "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";
             $mainframe = JFactory::getApplication();
             $languageFilter = $mainframe->getLanguageFilter();
             if ($languageFilter) {
                 $languageTag = JFactory::getLanguage()->getTag();
                 $query .= " AND c.language IN (" . $db->quote($languageTag) . "," . $db->quote('*') . ") \n\t\t\t\t\t\t\tAND i.language IN (" . $db->quote($languageTag) . "," . $db->quote('*') . ")";
             }
         }
         if (!($task == 'user' && !$user->guest && $user->id == JRequest::getInt('id'))) {
             $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 .= $where;
         //GET DYNAMIC COUNTER
         $field = $byLabel ? 'labels' : 'option_id';
         $query = "\n\t\t\t\tSELECT COUNT(tm.item_id) AS num_items, CONCAT_WS('_', `type`, `asset_id`, " . $db->quoteName($field) . ") AS tkey\n\t\t\t\tFROM #__jak2filter_taxonomy t\n\t\t\t\tINNER JOIN #__jak2filter_taxonomy_map tm ON tm.node_id = t.id\n\t\t\t\tWHERE tm.item_id IN (\n\t\t\t\t" . $query . "\n\t\t\t\t)\n\t\t\t\tGROUP BY tkey\n\t\t\t\t";
         $db->setQuery($query);
         $data = $db->loadAssocList('tkey', 'num_items');
         return $data;
     }
 }
コード例 #16
0
ファイル: view.raw.php プロジェクト: emavro/k2
 function display($tpl = null)
 {
     $mainframe = JFactory::getApplication();
     $user = JFactory::getUser();
     $document = JFactory::getDocument();
     $params = K2HelperUtilities::getParams('com_k2');
     $limitstart = JRequest::getInt('limitstart', 0);
     $view = JRequest::getWord('view');
     $task = JRequest::getWord('task');
     $db = JFactory::getDBO();
     $jnow = JFactory::getDate();
     $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql();
     $nullDate = $db->getNullDate();
     $this->setLayout('item');
     // Add link
     if (K2HelperPermissions::canAddItem()) {
         $addLink = JRoute::_('index.php?option=com_k2&view=item&task=add&tmpl=component');
     }
     $this->assignRef('addLink', $addLink);
     // Get item
     $model = $this->getModel();
     $item = $model->getData();
     $item->event = new stdClass();
     // Does the item exists?
     if (!is_object($item) || !$item->id) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     // Prepare item
     $item = $model->prepareItem($item, $view, $task);
     // Plugins
     $item = $model->execPlugins($item, $view, $task);
     // User K2 plugins
     $item->event->K2UserDisplay = '';
     if (isset($item->author) && is_object($item->author->profile) && isset($item->author->profile->id)) {
         $dispatcher = JDispatcher::getInstance();
         JPluginHelper::importPlugin('k2');
         $results = $dispatcher->trigger('onK2UserDisplay', array(&$item->author->profile, &$params, $limitstart));
         $item->event->K2UserDisplay = trim(implode("\n", $results));
         $item->author->profile->url = htmlspecialchars($item->author->profile->url, ENT_QUOTES, 'UTF-8');
     }
     // Access check
     if ($this->getLayout() == 'form') {
         JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
     }
     if (K2_JVERSION != '15') {
         if (!in_array($item->access, $user->getAuthorisedViewLevels()) || !in_array($item->category->access, $user->getAuthorisedViewLevels())) {
             if ($user->guest) {
                 $uri = JFactory::getURI();
                 $url = 'index.php?option=com_users&view=login&return=' . base64_encode($uri->toString());
                 $mainframe->enqueueMessage(JText::_('K2_YOU_NEED_TO_LOGIN_FIRST'), 'notice');
                 $mainframe->redirect(JRoute::_($url, false));
             } else {
                 JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
                 return;
             }
         }
     } else {
         if ($item->access > $user->get('aid', 0) || $item->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->enqueueMessage(JText::_('K2_YOU_NEED_TO_LOGIN_FIRST'), 'notice');
                 $mainframe->redirect(JRoute::_($url, false));
             } else {
                 JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
                 return;
             }
         }
     }
     // Published check
     if (!$item->published || $item->trash) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     if ($item->publish_up != $nullDate && $item->publish_up > $now) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     if ($item->publish_down != $nullDate && $item->publish_down < $now) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     if (!$item->category->published || $item->category->trash) {
         JError::raiseError(404, JText::_('K2_ITEM_NOT_FOUND'));
     }
     // Increase hits counter
     $model->hit($item->id);
     // Set default image
     K2HelperUtilities::setDefaultImage($item, $view);
     // Comments
     $item->event->K2CommentsCounter = '';
     $item->event->K2CommentsBlock = '';
     if ($item->params->get('itemComments')) {
         // Trigger comments events
         $dispatcher = JDispatcher::getInstance();
         JPluginHelper::importPlugin('k2');
         $results = $dispatcher->trigger('onK2CommentsCounter', array(&$item, &$params, $limitstart));
         $item->event->K2CommentsCounter = trim(implode("\n", $results));
         $results = $dispatcher->trigger('onK2CommentsBlock', array(&$item, &$params, $limitstart));
         $item->event->K2CommentsBlock = trim(implode("\n", $results));
         // Load K2 native comments system only if there are no plugins overriding it
         if (empty($item->event->K2CommentsCounter) && empty($item->event->K2CommentsBlock)) {
             $limit = $params->get('commentsLimit');
             $comments = $model->getItemComments($item->id, $limitstart, $limit);
             $pattern = "@\\b(https?://)?(([0-9a-zA-Z_!~*'().&=+\$%-]+:)?[0-9a-zA-Z_!~*'().&=+\$%-]+\\@)?(([0-9]{1,3}\\.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+\\.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z]\\.[a-zA-Z]{2,6})(:[0-9]{1,4})?((/[0-9a-zA-Z_!~*'().;?:\\@&=+\$,%#-]+)*/?)@";
             for ($i = 0; $i < sizeof($comments); $i++) {
                 $comments[$i]->commentText = nl2br($comments[$i]->commentText);
                 $comments[$i]->commentText = preg_replace($pattern, '<a target="_blank" rel="nofollow" href="\\0">\\0</a>', $comments[$i]->commentText);
                 $comments[$i]->userImage = K2HelperUtilities::getAvatar($comments[$i]->userID, $comments[$i]->commentEmail, $params->get('commenterImgWidth'));
                 if ($comments[$i]->userID > 0) {
                     $comments[$i]->userLink = K2HelperRoute::getUserRoute($comments[$i]->userID);
                 } else {
                     $comments[$i]->userLink = $comments[$i]->commentURL;
                 }
             }
             $item->comments = $comments;
             jimport('joomla.html.pagination');
             $total = $item->numOfComments;
             $pagination = new JPagination($total, $limitstart, $limit);
         }
     }
     // Author's latest items
     if ($item->params->get('itemAuthorLatest') && $item->created_by_alias == '') {
         $model = $this->getModel('itemlist');
         $authorLatestItems = $model->getAuthorLatest($item->id, $item->params->get('itemAuthorLatestLimit'), $item->created_by);
         if (count($authorLatestItems)) {
             for ($i = 0; $i < sizeof($authorLatestItems); $i++) {
                 $authorLatestItems[$i]->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($authorLatestItems[$i]->id . ':' . urlencode($authorLatestItems[$i]->alias), $authorLatestItems[$i]->catid . ':' . urlencode($authorLatestItems[$i]->categoryalias))));
             }
             $this->assignRef('authorLatestItems', $authorLatestItems);
         }
     }
     // Related items
     if ($item->params->get('itemRelated') && isset($item->tags) && count($item->tags)) {
         $model = $this->getModel('itemlist');
         $relatedItems = $model->getRelatedItems($item->id, $item->tags, $item->params);
         if (count($relatedItems)) {
             for ($i = 0; $i < sizeof($relatedItems); $i++) {
                 $relatedItems[$i]->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($relatedItems[$i]->id . ':' . urlencode($relatedItems[$i]->alias), $relatedItems[$i]->catid . ':' . urlencode($relatedItems[$i]->categoryalias))));
             }
             $this->assignRef('relatedItems', $relatedItems);
         }
     }
     // Navigation (previous and next item)
     if ($item->params->get('itemNavigation')) {
         $model = $this->getModel('item');
         $nextItem = $model->getNextItem($item->id, $item->catid, $item->ordering);
         if (!is_null($nextItem)) {
             $item->nextLink = urldecode(JRoute::_(K2HelperRoute::getItemRoute($nextItem->id . ':' . urlencode($nextItem->alias), $nextItem->catid . ':' . urlencode($item->category->alias))));
             $item->nextTitle = $nextItem->title;
         }
         $previousItem = $model->getPreviousItem($item->id, $item->catid, $item->ordering);
         if (!is_null($previousItem)) {
             $item->previousLink = urldecode(JRoute::_(K2HelperRoute::getItemRoute($previousItem->id . ':' . urlencode($previousItem->alias), $previousItem->catid . ':' . urlencode($item->category->alias))));
             $item->previousTitle = $previousItem->title;
         }
     }
     // Absolute URL
     $uri = JURI::getInstance();
     $item->absoluteURL = $uri->toString();
     // Email link
     if (K2_JVERSION != '15') {
         require_once JPATH_SITE . '/components/com_mailto/helpers/mailto.php';
         $template = $mainframe->getTemplate();
         $item->emailLink = JRoute::_('index.php?option=com_mailto&tmpl=component&template=' . $template . '&link=' . MailToHelper::addLink($item->absoluteURL));
     } else {
         require_once JPATH_SITE . DS . 'components' . DS . 'com_mailto' . DS . 'helpers' . DS . 'mailto.php';
         $item->emailLink = JRoute::_('index.php?option=com_mailto&tmpl=component&link=' . MailToHelper::addLink($item->absoluteURL));
     }
     // Twitter link (legacy code)
     if ($params->get('twitterUsername')) {
         $item->twitterURL = 'http://twitter.com/intent/tweet?text=' . urlencode($item->title) . '&amp;url=' . urlencode($item->absoluteURL) . '&amp;via=' . $params->get('twitterUsername');
     } else {
         $item->twitterURL = 'http://twitter.com/intent/tweet?text=' . urlencode($item->title) . '&amp;url=' . urlencode($item->absoluteURL);
     }
     // Social link
     $item->socialLink = urlencode($item->absoluteURL);
     // 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 ($item->params->get('theme')) {
         $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . $item->params->get('theme'));
         $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . $item->params->get('theme'));
         $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . $item->params->get('theme'));
     }
     // Assign data
     $this->assignRef('item', $item);
     $this->assignRef('user', $user);
     $this->assignRef('params', $item->params);
     $this->assignRef('pagination', $pagination);
     parent::display($tpl);
 }
コード例 #17
0
ファイル: view.html.php プロジェクト: GitIPFire/Homeworks
 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);
 }
コード例 #18
0
ファイル: view.html.php プロジェクト: GitIPFire/Homeworks
 function display($tpl = null)
 {
     $mainframe = JFactory::getApplication();
     $params = K2HelperUtilities::getParams('com_k2');
     $document = JFactory::getDocument();
     $user = JFactory::getUser();
     $cache = JFactory::getCache('com_k2_extended');
     $limit = $params->get('latestItemsLimit');
     $limitstart = JRequest::getInt('limitstart');
     $model = $this->getModel('itemlist');
     $itemModel = $this->getModel('item');
     $theme = $params->get('theme');
     if ($params->get('source')) {
         $categoryIDs = $params->get('categoryIDs');
         if (is_string($categoryIDs) && !empty($categoryIDs)) {
             $categoryIDs = array();
             $categoryIDs[] = $params->get('categoryIDs');
         }
         $categories = array();
         JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_k2' . DS . 'tables');
         if (is_array($categoryIDs)) {
             foreach ($categoryIDs as $categoryID) {
                 $category = JTable::getInstance('K2Category', 'Table');
                 $category->load($categoryID);
                 $category->event = new stdClass();
                 $languageCheck = true;
                 if (K2_JVERSION != '15') {
                     $accessCheck = in_array($category->access, $user->getAuthorisedViewLevels());
                     if ($mainframe->getLanguageFilter()) {
                         $languageTag = JFactory::getLanguage()->getTag();
                         $languageCheck = in_array($category->language, array($languageTag, '*'));
                     }
                 } else {
                     $accessCheck = $category->access <= $user->get('aid', 0);
                 }
                 if ($category->published && $accessCheck && $languageCheck) {
                     //Merge params
                     $cparams = class_exists('JParameter') ? new JParameter($category->params) : new JRegistry($category->params);
                     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 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;
                     //Category link
                     $link = urldecode(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias)));
                     $category->link = JRoute::_($link);
                     $category->feed = JRoute::_($link . '&format=feed');
                     JRequest::setVar('view', 'itemlist');
                     JRequest::setVar('task', 'category');
                     JRequest::setVar('id', $category->id);
                     JRequest::setVar('featured', 1);
                     JRequest::setVar('limit', $limit);
                     JRequest::setVar('clearFlag', true);
                     $category->name = htmlspecialchars($category->name, ENT_QUOTES);
                     if ($limit) {
                         $category->items = $model->getData('rdate');
                         JRequest::setVar('view', 'latest');
                         JRequest::setVar('task', '');
                         for ($i = 0; $i < sizeof($category->items); $i++) {
                             $hits = $category->items[$i]->hits;
                             $category->items[$i]->hits = 0;
                             $category->items[$i] = $cache->call(array($itemModel, 'prepareItem'), $category->items[$i], 'latest', '');
                             $category->items[$i]->hits = $hits;
                             $category->items[$i] = $itemModel->execPlugins($category->items[$i], 'latest', '');
                             //Trigger comments counter event
                             $dispatcher = JDispatcher::getInstance();
                             JPluginHelper::importPlugin('k2');
                             $results = $dispatcher->trigger('onK2CommentsCounter', array(&$category->items[$i], &$params, $limitstart));
                             $category->items[$i]->event->K2CommentsCounter = trim(implode("\n", $results));
                         }
                     } else {
                         $category->items = array();
                     }
                     $categories[] = $category;
                 }
             }
         }
         $source = 'categories';
         $this->assignRef('blocks', $categories);
     } else {
         $usersIDs = $params->get('userIDs');
         if (is_string($usersIDs) && !empty($usersIDs)) {
             $usersIDs = array();
             $usersIDs[] = $params->get('userIDs');
         }
         $users = array();
         if (is_array($usersIDs)) {
             foreach ($usersIDs as $userID) {
                 $userObject = JFactory::getUser($userID);
                 if (!$userObject->block) {
                     $userObject->event = new stdClass();
                     //User profile
                     $userObject->profile = $model->getUserProfile($userID);
                     //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');
                     }
                     $link = K2HelperRoute::getUserRoute($userObject->id);
                     $userObject->link = JRoute::_($link);
                     $userObject->feed = JRoute::_($link . '&format=feed');
                     $userObject->name = htmlspecialchars($userObject->name, ENT_QUOTES);
                     if ($limit) {
                         $userObject->items = $model->getAuthorLatest(0, $limit, $userID);
                         for ($i = 0; $i < sizeof($userObject->items); $i++) {
                             $hits = $userObject->items[$i]->hits;
                             $userObject->items[$i]->hits = 0;
                             $userObject->items[$i] = $cache->call(array($itemModel, 'prepareItem'), $userObject->items[$i], 'latest', '');
                             $userObject->items[$i]->hits = $hits;
                             //Plugins
                             $userObject->items[$i] = $itemModel->execPlugins($userObject->items[$i], 'latest', '');
                             //Trigger comments counter event
                             $dispatcher = JDispatcher::getInstance();
                             JPluginHelper::importPlugin('k2');
                             $results = $dispatcher->trigger('onK2CommentsCounter', array(&$userObject->items[$i], &$params, $limitstart));
                             $userObject->items[$i]->event->K2CommentsCounter = trim(implode("\n", $results));
                         }
                     } else {
                         $userObject->items = array();
                     }
                     $users[] = $userObject;
                 }
             }
         }
         $source = 'users';
         $this->assignRef('blocks', $users);
     }
     // Set menu metadata for Joomla! 2.5+
     if (K2_JVERSION != '15') {
         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'));
     }
     // 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');
     $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 ($theme) {
         $this->_addPath('template', JPATH_COMPONENT . DS . 'templates' . DS . $theme);
         $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . $theme);
         $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . $theme);
     }
     //Assign params
     $this->assignRef('params', $params);
     $this->assignRef('source', $source);
     //Set layout
     $this->setLayout('latest');
     //Display
     parent::display($tpl);
 }
コード例 #19
0
 function display($tpl = null)
 {
     $mainframe = JFactory::getApplication();
     $params = K2HelperUtilities::getParams('com_k2');
     $document = JFactory::getDocument();
     if (K2_JVERSION == '15') {
         $document->setMimeEncoding('application/json');
         $document->setType('json');
     }
     $model = $this->getModel('itemlist');
     //Set limit for model
     $limit = JRequest::getInt('limit');
     if ($limit > 100 || $limit == 0) {
         $limit = 100;
         JRequest::setVar('limit', $limit);
     }
     $page = JRequest::getInt('page');
     if ($page <= 0) {
         $limitstart = 0;
     } else {
         $page--;
         $limitstart = $page * $limit;
     }
     JRequest::setVar('limitstart', $limitstart);
     $view = JRequest::getWord('view');
     $task = JRequest::getWord('task');
     $response = new JObject();
     unset($response->_errors);
     // Site
     $response->site = new stdClass();
     $uri = JURI::getInstance();
     $response->site->url = $uri->toString(array('scheme', 'host', 'port'));
     $config = JFactory::getConfig();
     $response->site->name = K2_JVERSION == '30' ? $config->get('sitename') : $config->getValue('config.sitename');
     $moduleID = JRequest::getInt('moduleID');
     if ($moduleID) {
         $result = $model->getModuleItems($moduleID);
         $items = $result->items;
         $title = $result->title;
         $prefix = 'cat';
     } else {
         //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 != '15') {
                     if (!in_array($category->access, $user->getAuthorisedViewLevels())) {
                         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'));
                     }
                 }
                 //Merge params
                 $cparams = class_exists('JParameter') ? new JParameter($category->params) : new JRegistry($category->params);
                 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;
                 //Category children
                 $ordering = $params->get('subCatOrdering');
                 $children = $model->getCategoryFirstChildren($id, $ordering);
                 $subCategories = array();
                 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))));
                         unset($child->params);
                         unset($child->access);
                         unset($child->published);
                         unset($child->trash);
                         unset($child->language);
                         $subCategories[] = $child;
                     }
                 }
                 //Set featured flag
                 JRequest::setVar('featured', $params->get('catFeaturedItems'));
                 //Set title
                 $title = $category->name;
                 // Set ordering
                 if ($params->get('singleCatOrdering')) {
                     $ordering = $params->get('singleCatOrdering');
                 } else {
                     $ordering = $params->get('catOrdering');
                 }
                 // Set parameters prefix
                 $prefix = 'cat';
                 // Prepare the JSON category object;
                 $row = new JObject();
                 unset($row->_errors);
                 $row->id = $category->id;
                 $row->name = $category->name;
                 $row->alias = $category->alias;
                 $row->link = $category->link;
                 $row->parent = $category->parent;
                 $row->extraFieldsGroup = $category->extraFieldsGroup;
                 $row->image = $category->image;
                 $row->ordering = $category->ordering;
                 //$row->plugins = $category->plugins;
                 $row->events = $category->event;
                 $row->chidlren = $subCategories;
                 $response->category = $row;
                 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));
                     $userObject->profile->url = htmlspecialchars($userObject->profile->url, ENT_QUOTES, 'UTF-8');
                 }
                 //Set title
                 $title = $userObject->name;
                 // Set ordering
                 $ordering = $params->get('userOrdering');
                 // Set parameters prefix
                 $prefix = 'user';
                 // Prepare the JSON user object;
                 $row = new JObject();
                 unset($row->_errors);
                 //$row->id = $userObject->id;
                 $row->name = $userObject->name;
                 //$row->username = $userObject->username;
                 if (isset($userObject->profile->plugins)) {
                     unset($userObject->profile->plugins);
                 }
                 $row->profile = $userObject->profile;
                 $row->avatar = $userObject->avatar;
                 $row->events = $userObject->event;
                 $response->user = $row;
                 break;
             case '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');
                 // Set parameters prefix
                 $prefix = 'tag';
                 $response->tag = JRequest::getVar('tag');
                 break;
             case 'search':
                 //Set title
                 $title = JText::_('K2_SEARCH_RESULTS_FOR') . ' ' . JRequest::getVar('searchword');
                 // Set parameters prefix
                 $prefix = 'generic';
                 $response->search = JRequest::getVar('searchword');
                 break;
             case 'date':
                 // 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';
                 // Set parameters prefix
                 $prefix = 'generic';
                 $response->date = JHTML::_('date', $date, $dateFormat);
                 break;
             default:
                 $user = JFactory::getUser();
                 //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');
                 // Set parameters prefix
                 $prefix = 'cat';
                 break;
         }
         if (!isset($ordering)) {
             $items = $model->getData();
         } else {
             $items = $model->getData($ordering);
         }
     }
     //Prepare items
     $user = JFactory::getUser();
     $cache = JFactory::getCache('com_k2_extended');
     $model = JModelLegacy::getInstance('item', 'K2Model');
     $rows = array();
     for ($i = 0; $i < sizeof($items); $i++) {
         //Item group
         if ($task == "category" || $task == "") {
             $items[$i]->itemGroup = 'links';
             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';
             }
         } else {
             $items[$i]->itemGroup = '';
         }
         $itemParams = class_exists('JParameter') ? new JParameter($items[$i]->params) : new JRegistry($items[$i]->params);
         $itemParams->set($prefix . 'ItemIntroText', true);
         $itemParams->set($prefix . 'ItemFullText', true);
         $itemParams->set($prefix . 'ItemTags', true);
         $itemParams->set($prefix . 'ItemExtraFields', true);
         $itemParams->set($prefix . 'ItemAttachments', true);
         $itemParams->set($prefix . 'ItemRating', true);
         $itemParams->set($prefix . 'ItemAuthor', true);
         $itemParams->set($prefix . 'ItemImageGallery', true);
         $itemParams->set($prefix . 'ItemVideo', true);
         $itemParams->set($prefix . 'ItemImage', true);
         $items[$i]->params = $itemParams->toString();
         //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($model, 'prepareItem'), $items[$i], $view, $task);
             $items[$i]->hits = $hits;
         } else {
             $items[$i] = $model->prepareItem($items[$i], $view, $task);
         }
         //Plugins
         $items[$i]->params->set('genericItemIntroText', $params->get('catItemIntroText'));
         $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 default image
         if ($task == 'user' || $task == 'tag' || $task == 'search' || $task == 'date') {
             $items[$i]->image = isset($items[$i]->imageGeneric) ? $items[$i]->imageGeneric : '';
         } else {
             if (!$moduleID) {
                 K2HelperUtilities::setDefaultImage($items[$i], $view, $params);
             }
         }
         $rows[] = $model->prepareJSONItem($items[$i]);
     }
     $response->items = $rows;
     // Prevent spammers from using the tag view
     if ($task == 'tag' && !count($response->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;
         }
     }
     // Output
     $json = json_encode($response);
     $callback = JRequest::getCmd('callback');
     if ($callback) {
         $document->setMimeEncoding('application/javascript');
         echo $callback . '(' . $json . ')';
     } else {
         echo $json;
     }
 }
コード例 #20
0
ファイル: permissions.php プロジェクト: educakanchay/educa
 public static function setPermissions()
 {
     $params = K2HelperUtilities::getParams('com_k2');
     $user = JFactory::getUser();
     if ($user->guest) {
         return;
     }
     $K2User = K2HelperPermissions::getK2User($user->id);
     if (!is_object($K2User)) {
         return;
     }
     $K2UserGroup = K2HelperPermissions::getK2UserGroup($K2User->group);
     if (is_null($K2UserGroup)) {
         return;
     }
     $K2Permissions = K2Permissions::getInstance();
     $permissions = K2_JVERSION == '15' ? new JParameter($K2UserGroup->permissions) : new JRegistry($K2UserGroup->permissions);
     $K2Permissions->permissions = $permissions;
     if ($permissions->get('categories') == 'none') {
         return;
     } else {
         if ($permissions->get('categories') == 'all') {
             if ($permissions->get('add') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                 $K2Permissions->actions[] = 'add.category.all';
                 $K2Permissions->actions[] = 'tag';
                 $K2Permissions->actions[] = 'extraFields';
             }
             if ($permissions->get('editOwn') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                 $K2Permissions->actions[] = 'editOwn.item.' . $user->id;
                 $K2Permissions->actions[] = 'tag';
                 $K2Permissions->actions[] = 'extraFields';
             }
             if ($permissions->get('editAll') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                 $K2Permissions->actions[] = 'editAll.category.all';
                 $K2Permissions->actions[] = 'tag';
                 $K2Permissions->actions[] = 'extraFields';
             }
             if ($permissions->get('publish') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                 $K2Permissions->actions[] = 'publish.category.all';
             }
             if ($permissions->get('comment')) {
                 $K2Permissions->actions[] = 'comment.category.all';
             }
             if ($permissions->get('editPublished')) {
                 $K2Permissions->actions[] = 'editPublished.category.all';
             }
         } else {
             $selectedCategories = $permissions->get('categories', NULL);
             if (is_string($selectedCategories)) {
                 $searchIDs[] = $selectedCategories;
             } else {
                 $searchIDs = $selectedCategories;
             }
             if ($permissions->get('inheritance')) {
                 $model = K2Model::getInstance('Itemlist', 'K2Model');
                 $categories = $model->getCategoryTree($searchIDs);
             } else {
                 $categories = $searchIDs;
             }
             if (is_array($categories) && count($categories)) {
                 foreach ($categories as $category) {
                     if ($permissions->get('add') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                         $K2Permissions->actions[] = 'add.category.' . $category;
                         $K2Permissions->actions[] = 'tag';
                         $K2Permissions->actions[] = 'extraFields';
                     }
                     if ($permissions->get('editOwn') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                         $K2Permissions->actions[] = 'editOwn.item.' . $user->id . '.' . $category;
                         $K2Permissions->actions[] = 'tag';
                         $K2Permissions->actions[] = 'extraFields';
                     }
                     if ($permissions->get('editAll') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                         $K2Permissions->actions[] = 'editAll.category.' . $category;
                         $K2Permissions->actions[] = 'tag';
                         $K2Permissions->actions[] = 'extraFields';
                     }
                     if ($permissions->get('publish') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                         $K2Permissions->actions[] = 'publish.category.' . $category;
                     }
                     if ($permissions->get('comment')) {
                         $K2Permissions->actions[] = 'comment.category.' . $category;
                     }
                     if ($permissions->get('editPublished')) {
                         $K2Permissions->actions[] = 'editPublished.category.' . $category;
                     }
                 }
             }
         }
     }
     return;
 }
コード例 #21
0
 function display($tpl = null)
 {
     $mainframe = JFactory::getApplication();
     $params = K2HelperUtilities::getParams('com_k2');
     $document = JFactory::getDocument();
     $model = $this->getModel('itemlist');
     $limitstart = JRequest::getInt('limitstart');
     $moduleID = JRequest::getInt('moduleID');
     if ($moduleID) {
         $result = $model->getModuleItems($moduleID);
         $items = $result->items;
         $title = $result->title;
     } else {
         //Get data depending on task
         $task = JRequest::getCmd('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 != '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;
                         }
                     }
                 }
                 //Merge params
                 $cparams = class_exists('JParameter') ? new JParameter($category->params) : new JRegistry($category->params);
                 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))));
                 //Set featured flag
                 JRequest::setVar('featured', $params->get('catFeaturedItems'));
                 //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'));
                 }
                 //Set title
                 $title = $userObject->name;
                 // Set ordering
                 $ordering = $params->get('userOrdering');
                 break;
             case 'tag':
                 //set title
                 $title = JText::_('K2_DISPLAYING_ITEMS_BY_TAG') . ' ' . JRequest::getVar('tag');
                 // Set ordering
                 $ordering = $params->get('tagOrdering');
                 break;
             case 'search':
                 //Set title
                 $title = JText::_('K2_SEARCH_RESULTS_FOR') . ' ' . JRequest::getVar('searchword');
                 break;
             case 'date':
                 // 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 featured flag
                 JRequest::setVar('featured', $params->get('catFeaturedItems'));
                 //Set title
                 $title = $params->get('page_title');
                 // Set ordering
                 $ordering = $params->get('catOrdering');
                 break;
         }
         // Various Feed Validations
         $title = JFilterOutput::ampReplace($title);
         // Get items
         if (!isset($ordering)) {
             $items = $model->getData();
         } else {
             $items = $model->getData($ordering);
         }
     }
     // Prepare feed items
     //$model = &$this->getModel('itemlist');
     foreach ($items as $item) {
         $item = $model->prepareFeedItem($item);
         $item->title = $this->escape($item->title);
         $item->title = html_entity_decode($item->title);
         $feedItem = new JFeedItem();
         $feedItem->title = $item->title;
         $feedItem->link = $item->link;
         $feedItem->description = $item->description;
         $feedItem->date = $item->created;
         $feedItem->category = $item->category->name;
         $feedItem->author = $item->author->name;
         if ($params->get('feedBogusEmail')) {
             $feedItem->authorEmail = $params->get('feedBogusEmail');
         } else {
             if ($mainframe->getCfg('feed_email') == 'author') {
                 $feedItem->authorEmail = $item->author->email;
             } else {
                 $feedItem->authorEmail = $mainframe->getCfg('mailfrom');
             }
         }
         // Add item
         $document->addItem($feedItem);
     }
     // Set title
     $document = JFactory::getDocument();
     $menus = JSite::getMenu();
     $menu = $menus->getActive();
     if (is_object($menu)) {
         $menu_params = class_exists('JParameter') ? new JParameter($menu->params) : new JRegistry($menu->params);
         if (!$menu_params->get('page_title')) {
             $params->set('page_title', $title);
         }
     } else {
         $params->set('page_title', $title);
     }
     if (K2_JVERSION != '15') {
         if ($mainframe->getCfg('sitename_pagetitles', 0) == 1) {
             $title = JText::sprintf('JPAGETITLE', $mainframe->getCfg('sitename'), $params->get('page_title'));
             $params->set('page_title', $title);
         } elseif ($mainframe->getCfg('sitename_pagetitles', 0) == 2) {
             $title = JText::sprintf('JPAGETITLE', $params->get('page_title'), $mainframe->getCfg('sitename'));
             $params->set('page_title', $title);
         }
     }
     $document->setTitle($params->get('page_title'));
     // Prevent spammers from using the tag view
     if ($task == 'tag' && !count($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;
         }
     }
 }
コード例 #22
0
ファイル: item.php プロジェクト: grchis/Site-Auto
 function getItemComments($itemID, $limitstart, $limit, $published = true)
 {
     $params = K2HelperUtilities::getParams('com_k2');
     $order = $params->get('commentsOrdering', 'DESC');
     $ordering = $order == 'DESC' ? 'DESC' : 'ASC';
     $db = JFactory::getDBO();
     $query = "SELECT * FROM #__k2_comments WHERE itemID=" . (int) $itemID;
     if ($published) {
         $query .= " AND published=1 ";
     }
     $query .= " ORDER BY commentDate {$ordering}";
     $db->setQuery($query, $limitstart, $limit);
     $rows = $db->loadObjectList();
     return $rows;
 }
コード例 #23
0
ファイル: itemlist.php プロジェクト: vuchannguyen/dayhoc
 function getTotal()
 {
     $user =& JFactory::getUser();
     $aid = $user->get('aid');
     $db =& JFactory::getDBO();
     $params =& K2HelperUtilities::getParams('com_k2');
     $task = JRequest::getCmd('task');
     if ($task == 'search' && $params->get('googleSearch')) {
         return 0;
     }
     $jnow =& JFactory::getDate();
     $now = $jnow->toMySQL();
     $nullDate = $db->getNullDate();
     $query = "SELECT COUNT(*) FROM #__k2_items as i LEFT JOIN #__k2_categories c ON c.id = i.catid";
     if ($task == 'tag') {
         $query .= " LEFT JOIN #__k2_tags_xref tags_xref ON tags_xref.itemID = i.id LEFT JOIN #__k2_tags tags ON tags.id = tags_xref.tagID";
     }
     if ($task == 'user' && !$user->guest && $user->id == JRequest::getInt('id')) {
         $query .= " WHERE ";
     } else {
         $query .= " WHERE i.published = 1 AND ";
     }
     if (K2_JVERSION == '16') {
         $query .= "i.access IN(" . implode(',', $user->authorisedLevels()) . ")" . " AND i.trash = 0" . " AND c.published = 1" . " AND c.access IN(" . implode(',', $user->authorisedLevels()) . ")" . " AND c.trash = 0";
         $mainframe =& JFactory::getApplication();
         $languageFilter = $mainframe->getLanguageFilter();
         if ($languageFilter) {
             $languageTag = JFactory::getLanguage()->getTag();
             $query .= " AND c.language IN (" . $db->quote($languageTag) . "," . $db->quote('*') . ") \n\t\t\t\t\t\tAND i.language IN (" . $db->quote($languageTag) . "," . $db->quote('*') . ")";
         }
     } else {
         $query .= "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) . " )";
     //Build query depending on task
     switch ($task) {
         case 'category':
             $id = JRequest::getInt('id');
             $category =& JTable::getInstance('K2Category', 'Table');
             $category->load($id);
             $cparams = new JParameter($category->params);
             if ($cparams->get('inheritFrom')) {
                 $parent =& JTable::getInstance('K2Category', 'Table');
                 $parent->load($cparams->get('inheritFrom'));
                 $cparams = new JParameter($parent->params);
             }
             if ($cparams->get('catCatalogMode')) {
                 $query .= " AND c.id={$id} ";
             } else {
                 $categories = K2ModelItemlist::getCategoryTree($id);
                 $sql = @implode(',', $categories);
                 $query .= " AND c.id IN ({$sql})";
             }
             break;
         case 'user':
             $id = JRequest::getInt('id');
             $query .= " AND i.created_by={$id} AND i.created_by_alias=''";
             $categories = $params->get('userCategoriesFilter', NULL);
             if (is_array($categories)) {
                 $categories = array_filter($categories);
                 JArrayHelper::toInteger($categories);
                 $query .= " AND i.catid IN(" . implode(',', $categories) . ")";
             }
             if (is_string($categories) && $categories > 0) {
                 $query .= " AND i.catid = {$categories}";
             }
             break;
         case 'search':
             $badchars = array('#', '>', '<', '\\');
             $search = trim(str_replace($badchars, '', JRequest::getString('searchword', null)));
             $sql = K2ModelItemlist::prepareSearch($search);
             if (!empty($sql)) {
                 $query .= $sql;
             } else {
                 $result = 0;
                 return $result;
             }
             break;
         case 'date':
             if (JRequest::getInt('month') && JRequest::getInt('year')) {
                 $month = JRequest::getInt('month');
                 $year = JRequest::getInt('year');
                 $query .= " AND MONTH(i.created) = {$month} AND YEAR(i.created)={$year} ";
                 if (JRequest::getInt('day')) {
                     $day = JRequest::getInt('day');
                     $query .= " AND DAY(i.created) = {$day}";
                 }
                 if (JRequest::getInt('catid')) {
                     $catid = JRequest::getInt('catid');
                     $query .= " AND i.catid={$catid}";
                 }
             }
             break;
         case 'tag':
             $tag = JRequest::getString('tag');
             jimport('joomla.filesystem.file');
             if (JFile::exists(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_joomfish' . DS . 'joomfish.php') && $task == 'tag') {
                 $registry =& JFactory::getConfig();
                 $lang = $registry->getValue("config.jflang");
                 $sql = " SELECT reference_id FROM #__jf_content as jfc LEFT JOIN #__languages as jfl ON jfc.language_id = jfl." . K2_JF_ID;
                 $sql .= " WHERE jfc.value = " . $db->Quote($tag);
                 $sql .= " AND jfc.reference_table = 'k2_tags'";
                 $sql .= " AND jfc.reference_field = 'name' AND jfc.published=1";
                 $db->setQuery($sql, 0, 1);
                 $result = $db->loadResult();
             }
             if (JFile::exists(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_falang' . DS . 'falang.php') && $task == 'tag') {
                 $registry =& JFactory::getConfig();
                 $lang = $registry->getValue("config.jflang");
                 $sql = " SELECT reference_id FROM #__falang_content as fc LEFT JOIN #__languages as fl ON fc.language_id = fl.lang_id";
                 $sql .= " WHERE fc.value = " . $db->Quote($tag);
                 $sql .= " AND fc.reference_table = 'k2_tags'";
                 $sql .= " AND fc.reference_field = 'name' AND fc.published=1";
                 $db->setQuery($sql, 0, 1);
                 $result = $db->loadResult();
             }
             if (isset($result) && $result > 0) {
                 $query .= " AND (tags.id) = {$result}";
             } else {
                 $query .= " AND (tags.name) = " . $db->Quote($tag);
             }
             $categories = $params->get('categoriesFilter', NULL);
             if (is_array($categories)) {
                 $query .= " AND i.catid IN(" . implode(',', $categories) . ")";
             }
             if (is_string($categories)) {
                 $query .= " AND i.catid = {$categories}";
             }
             break;
         default:
             $searchIDs = $params->get('categories');
             if (is_array($searchIDs) && count($searchIDs)) {
                 if ($params->get('catCatalogMode')) {
                     $sql = @implode(',', $searchIDs);
                     $query .= " AND i.catid IN ({$sql})";
                 } else {
                     $result = K2ModelItemlist::getCategoryTree($searchIDs);
                     if (count($result)) {
                         $sql = @implode(',', $result);
                         $query .= " AND i.catid IN ({$sql})";
                     }
                 }
             }
             break;
     }
     //Set featured flag
     if ($task == 'category' || empty($task)) {
         if (JRequest::getVar('featured') == '0') {
             $query .= " AND i.featured != 1";
         } else {
             if (JRequest::getVar('featured') == '2') {
                 $query .= " AND i.featured = 1";
             }
         }
     }
     $dispatcher = JDispatcher::getInstance();
     JPluginHelper::importPlugin('k2');
     $dispatcher->trigger('onK2BeforeSetQuery', array(&$query));
     $db->setQuery($query);
     $result = $db->loadResult();
     return $result;
 }
コード例 #24
0
ファイル: permissions.php プロジェクト: vuchannguyen/dayhoc
 function setPermissions()
 {
     $params =& K2HelperUtilities::getParams('com_k2');
     $user =& JFactory::getUser();
     if ($user->guest) {
         return;
     }
     $K2User = K2HelperPermissions::getK2User($user->id);
     if (!is_object($K2User)) {
         return;
     }
     $K2UserGroup = K2HelperPermissions::getK2UserGroup($K2User->group);
     if (is_null($K2UserGroup)) {
         return;
     }
     $K2Permissions =& K2Permissions::getInstance();
     $permissions = new JParameter($K2UserGroup->permissions);
     $K2Permissions->permissions = $permissions;
     if ($permissions->get('categories') == 'none') {
         return;
     } else {
         if ($permissions->get('categories') == 'all') {
             if ($permissions->get('add') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                 $K2Permissions->actions[] = 'add.category.all';
                 $K2Permissions->actions[] = 'tag';
                 $K2Permissions->actions[] = 'extraFields';
             }
             if ($permissions->get('editOwn') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                 $K2Permissions->actions[] = 'editOwn.item.' . $user->id;
                 $K2Permissions->actions[] = 'tag';
                 $K2Permissions->actions[] = 'extraFields';
             }
             if ($permissions->get('editAll') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                 $K2Permissions->actions[] = 'editAll.category.all';
                 $K2Permissions->actions[] = 'tag';
                 $K2Permissions->actions[] = 'extraFields';
             }
             if ($permissions->get('publish') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                 $K2Permissions->actions[] = 'publish.category.all';
             }
             if ($permissions->get('comment')) {
                 $K2Permissions->actions[] = 'comment.category.all';
             }
         } else {
             $selectedCategories = $permissions->get('categories', NULL);
             if (is_string($selectedCategories)) {
                 $searchIDs[] = $selectedCategories;
             } else {
                 $searchIDs = $selectedCategories;
             }
             if ($permissions->get('inheritance')) {
                 JLoader::register('K2ModelItemlist', JPATH_SITE . DS . 'components' . DS . 'com_k2' . DS . 'models' . DS . 'itemlist.php');
                 $categories = K2ModelItemlist::getCategoryTree($searchIDs);
             } else {
                 $categories = $searchIDs;
             }
             if (is_array($categories) && count($categories)) {
                 foreach ($categories as $category) {
                     if ($permissions->get('add') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                         $K2Permissions->actions[] = 'add.category.' . $category;
                         $K2Permissions->actions[] = 'tag';
                         $K2Permissions->actions[] = 'extraFields';
                     }
                     if ($permissions->get('editOwn') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                         $K2Permissions->actions[] = 'editOwn.item.' . $user->id . '.' . $category;
                         $K2Permissions->actions[] = 'tag';
                         $K2Permissions->actions[] = 'extraFields';
                     }
                     if ($permissions->get('editAll') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                         $K2Permissions->actions[] = 'editAll.category.' . $category;
                         $K2Permissions->actions[] = 'tag';
                         $K2Permissions->actions[] = 'extraFields';
                     }
                     if ($permissions->get('publish') && $permissions->get('frontEdit') && $params->get('frontendEditing')) {
                         $K2Permissions->actions[] = 'publish.category.' . $category;
                     }
                     if ($permissions->get('comment')) {
                         $K2Permissions->actions[] = 'comment.category.' . $category;
                     }
                 }
             }
         }
     }
     return;
 }