You've already forked joomla_test
							
							
		
			
				
	
	
		
			328 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			328 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * @version		$Id: com_k2.php 1812 2013-01-14 18:45:06Z lefteris.kavadas $
 | 
						|
 * @package		K2
 | 
						|
 * @author		JoomlaWorks http://www.joomlaworks.net
 | 
						|
 * @copyright	Copyright (c) 2006 - 2013 JoomlaWorks Ltd. All rights reserved.
 | 
						|
 * @license		GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 | 
						|
 */
 | 
						|
 | 
						|
// no direct access
 | 
						|
defined('_JEXEC') or die;
 | 
						|
 | 
						|
if (!function_exists('getCategoryPath'))
 | 
						|
{
 | 
						|
 | 
						|
	function getCategoryPath($catid, $begin = false)
 | 
						|
	{
 | 
						|
		static $array = array();
 | 
						|
		if (intval($catid) == 0)
 | 
						|
		{
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
		if ($begin)
 | 
						|
		{
 | 
						|
			$array = array();
 | 
						|
		}
 | 
						|
 | 
						|
		$user = JFactory::getUser();
 | 
						|
		$aid = (int)$user->get('aid');
 | 
						|
		$catid = (int)$catid;
 | 
						|
		$db = JFactory::getDBO();
 | 
						|
		$query = "SELECT * FROM #__k2_categories WHERE id={$catid} AND published=1";
 | 
						|
 | 
						|
		if (version_compare(JVERSION, '1.6.0', 'ge'))
 | 
						|
		{
 | 
						|
			$query .= " AND access IN(".implode(',', $user->getAuthorisedViewLevels()).") ";
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
			$query .= " AND access<={$aid} ";
 | 
						|
		}
 | 
						|
 | 
						|
		$db->setQuery($query);
 | 
						|
		$rows = $db->loadObjectList();
 | 
						|
		if ($db->getErrorNum())
 | 
						|
		{
 | 
						|
			echo $db->stderr();
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
 | 
						|
		foreach ($rows as $row)
 | 
						|
		{
 | 
						|
			array_push($array, $row->alias);
 | 
						|
			getCategoryPath($row->parent, false);
 | 
						|
		}
 | 
						|
 | 
						|
		return array_reverse($array);
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// ------------------ Standard plugin initialize function - don't change ---------------------------
 | 
						|
global $sh_LANG;
 | 
						|
$sefConfig = shRouter::shGetConfig();
 | 
						|
$shLangName = '';
 | 
						|
$shLangIso = '';
 | 
						|
$title = array();
 | 
						|
$shItemidString = '';
 | 
						|
$dosef = shInitializePlugin($lang, $shLangName, $shLangIso, $option);
 | 
						|
if ($dosef == false)
 | 
						|
	return;
 | 
						|
 | 
						|
$shHomePageFlag = false;
 | 
						|
$shHomePageFlag = !$shHomePageFlag ? shIsHomepage($string) : $shHomePageFlag;
 | 
						|
 | 
						|
// Remove common URL from GET vars list, so that they don't show up as query string in the URL
 | 
						|
shRemoveFromGETVarsList('option');
 | 
						|
shRemoveFromGETVarsList('lang');
 | 
						|
if (!empty($Itemid))
 | 
						|
	shRemoveFromGETVarsList('Itemid');
 | 
						|
if (!empty($limit))
 | 
						|
	shRemoveFromGETVarsList('limit');
 | 
						|
if (isset($limitstart))
 | 
						|
	shRemoveFromGETVarsList('limitstart');
 | 
						|
// limitstart can be zero
 | 
						|
 | 
						|
// Start by inserting the menu element title (just an idea, this is not required at all)
 | 
						|
$task = isset($task) ? @$task : null;
 | 
						|
$view = isset($view) ? @$view : null;
 | 
						|
$Itemid = isset($Itemid) ? @$Itemid : null;
 | 
						|
 | 
						|
// Set dummy task for module feeds
 | 
						|
if ($view == 'itemlist' && isset($moduleID))
 | 
						|
{
 | 
						|
	$task = 'module';
 | 
						|
}
 | 
						|
 | 
						|
// K2 parameters
 | 
						|
$params = JComponentHelper::getParams('com_k2');
 | 
						|
$authorPrefix = $params->get('sh404SefLabelUser', 'blog');
 | 
						|
$itemlistPrefix = $params->get('sh404SefLabelCat', '');
 | 
						|
$itemPrefix = $params->get('sh404SefLabelItem', 2);
 | 
						|
$sh404SefTitleAlias = $params->get('sh404SefTitleAlias', 'alias');
 | 
						|
$sh404SefModK2ContentFeedAlias = $params->get('sh404SefModK2ContentFeedAlias', 'feed');
 | 
						|
$sh404SefInsertItemId = $params->get('sh404SefInsertItemId');
 | 
						|
$sh404SefInsertUniqueItemId = $params->get('sh404SefInsertUniqueItemId');
 | 
						|
 | 
						|
$database = JFactory::getDBO();
 | 
						|
$menu = JSite::getMenu();
 | 
						|
$menuparams = NULL;
 | 
						|
$menuparams = $menu->getParams($Itemid);
 | 
						|
 | 
						|
if (isset($task) && ($task == 'calendar' || $task == 'edit' || $task == 'add' || $task == 'save' || $task == 'deleteAttachment' || $task == 'extraFields' || $task == 'checkin' || $task == 'vote' || $task == 'getVotesNum' || $task == 'getVotesPercentage' || $task == 'comment' || $task == 'download'))
 | 
						|
	$dosef = false;
 | 
						|
 | 
						|
if ($view == 'item' && $task == 'tag')
 | 
						|
	$dosef = false;
 | 
						|
 | 
						|
if ($view == 'comments')
 | 
						|
	$dosef = false;
 | 
						|
 | 
						|
switch ($view)
 | 
						|
{
 | 
						|
 | 
						|
	case 'item' :
 | 
						|
		if (isset($id) && $id > 0 && $task != 'download')
 | 
						|
		{
 | 
						|
			$id = (int)$id;
 | 
						|
 | 
						|
			if ($sh404SefInsertUniqueItemId)
 | 
						|
			{
 | 
						|
				$query = 'SELECT id, catid, created FROM #__k2_items WHERE id = '.$database->Quote($id);
 | 
						|
				$database->setQuery($query);
 | 
						|
				if (shTranslateUrl($option, $shLangName))
 | 
						|
				{
 | 
						|
					$contentElement = $database->loadObject();
 | 
						|
				}
 | 
						|
				else
 | 
						|
				{
 | 
						|
					$contentElement = $database->loadObject(false);
 | 
						|
				}
 | 
						|
				$shTemp = explode(' ', $contentElement->created);
 | 
						|
				$title[] = str_replace('-', '', $shTemp[0]).$contentElement->id;
 | 
						|
			}
 | 
						|
 | 
						|
			if (!shTranslateUrl($option, $shLangName))
 | 
						|
			{
 | 
						|
				$query = 'SELECT '.$sh404SefTitleAlias.', catid FROM #__k2_items WHERE id = '.$id;
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				$query = 'SELECT id, '.$sh404SefTitleAlias.', catid FROM #__k2_items WHERE id = '.$id;
 | 
						|
			}
 | 
						|
 | 
						|
			$database->setQuery($query);
 | 
						|
			if (shTranslateUrl($option, $shLangName))
 | 
						|
				$row = $database->loadObject();
 | 
						|
			else
 | 
						|
				$row = $database->loadObject(false);
 | 
						|
 | 
						|
			switch($itemPrefix)
 | 
						|
			{
 | 
						|
				case 0 :
 | 
						|
					break;
 | 
						|
				case 1 :
 | 
						|
					$fullPath = getCategoryPath($row->catid, true);
 | 
						|
					$title[] = array_pop($fullPath);
 | 
						|
					break;
 | 
						|
				default :
 | 
						|
				case 2 :
 | 
						|
					$fullPath = getCategoryPath($row->catid, true);
 | 
						|
					foreach ($fullPath as $path)
 | 
						|
					{
 | 
						|
						$title[] = $path;
 | 
						|
					}
 | 
						|
					break;
 | 
						|
			}
 | 
						|
 | 
						|
			if ($sh404SefInsertItemId)
 | 
						|
			{
 | 
						|
				$title[] = $row->id.'-'.$row->$sh404SefTitleAlias;
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				$title[] = $row->$sh404SefTitleAlias;
 | 
						|
			}
 | 
						|
 | 
						|
			shMustCreatePageId('set', true);
 | 
						|
		}
 | 
						|
		break;
 | 
						|
 | 
						|
	case 'itemlist' :
 | 
						|
		switch ($task)
 | 
						|
		{
 | 
						|
 | 
						|
			case 'category' :
 | 
						|
				if (!empty($itemlistPrefix))
 | 
						|
				{
 | 
						|
					$title[] = $itemlistPrefix;
 | 
						|
				}
 | 
						|
				$fullPath = getCategoryPath($id, true);
 | 
						|
				foreach ($fullPath as $path)
 | 
						|
				{
 | 
						|
					$title[] = $path;
 | 
						|
				}
 | 
						|
				shMustCreatePageId('set', true);
 | 
						|
				break;
 | 
						|
 | 
						|
			case 'user' :
 | 
						|
				$user = JFactory::getUser($id);
 | 
						|
				if (!empty($authorPrefix))
 | 
						|
				{
 | 
						|
					$title[] = $authorPrefix;
 | 
						|
				}
 | 
						|
				$title[] = $user->name;
 | 
						|
				break;
 | 
						|
 | 
						|
			case 'tag' :
 | 
						|
				$title[] = 'tag';
 | 
						|
				$tag = str_replace('%20', '-', $tag);
 | 
						|
				$tag = str_replace('+', '-', $tag);
 | 
						|
				$title[] = $tag;
 | 
						|
				shMustCreatePageId('set', true);
 | 
						|
				break;
 | 
						|
 | 
						|
			case 'search' :
 | 
						|
				$title[] = 'search';
 | 
						|
				if (!empty($searchword))
 | 
						|
					$title[] = $searchword;
 | 
						|
				break;
 | 
						|
 | 
						|
			case 'date' :
 | 
						|
				$title[] = 'date';
 | 
						|
				if (!empty($year))
 | 
						|
					$title[] = $year;
 | 
						|
 | 
						|
				if (!empty($month))
 | 
						|
					$title[] = $month;
 | 
						|
 | 
						|
				if (!empty($day))
 | 
						|
					$title[] = $day;
 | 
						|
				break;
 | 
						|
 | 
						|
			case 'module' :
 | 
						|
				$query = 'SELECT title FROM #__modules WHERE id = '.(int)$moduleID;
 | 
						|
				$database->setQuery($query);
 | 
						|
				$moduleTitle = $database->loadResult();
 | 
						|
				$moduleTitle = str_replace(' ', '-', $moduleTitle);
 | 
						|
				if ($sh404SefModK2ContentFeedAlias)
 | 
						|
				{
 | 
						|
					$title[] = $sh404SefModK2ContentFeedAlias;
 | 
						|
				}
 | 
						|
				$title[] = $moduleTitle;
 | 
						|
				break;
 | 
						|
 | 
						|
			default :
 | 
						|
				if (isset($Itemid))
 | 
						|
				{
 | 
						|
					$title[] = $menu->getItem($Itemid)->alias;
 | 
						|
					shMustCreatePageId('set', true);
 | 
						|
				}
 | 
						|
				break;
 | 
						|
		}
 | 
						|
 | 
						|
		break;
 | 
						|
 | 
						|
	case 'latest' :
 | 
						|
		if (isset($Itemid))
 | 
						|
		{
 | 
						|
			$title[] = $menu->getItem($Itemid)->alias;
 | 
						|
			shMustCreatePageId('set', true);
 | 
						|
		}
 | 
						|
		break;
 | 
						|
}
 | 
						|
 | 
						|
if (!empty($format) && $format == 'feed')
 | 
						|
{
 | 
						|
	$title[] = $format;
 | 
						|
	if (!empty($type) && $format != $type)
 | 
						|
	{
 | 
						|
		$title[] = $type;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
if (isset($layout))
 | 
						|
	shRemoveFromGETVarsList('layout');
 | 
						|
if (isset($task))
 | 
						|
	shRemoveFromGETVarsList('task');
 | 
						|
if (isset($tag))
 | 
						|
	shRemoveFromGETVarsList('tag');
 | 
						|
if (isset($searchword))
 | 
						|
	shRemoveFromGETVarsList('searchword');
 | 
						|
if (isset($view))
 | 
						|
	shRemoveFromGETVarsList('view');
 | 
						|
if (isset($Itemid))
 | 
						|
	shRemoveFromGETVarsList('Itemid');
 | 
						|
if (isset($year))
 | 
						|
	shRemoveFromGETVarsList('year');
 | 
						|
if (isset($month))
 | 
						|
	shRemoveFromGETVarsList('month');
 | 
						|
if (isset($day))
 | 
						|
	shRemoveFromGETVarsList('day');
 | 
						|
if (isset($id))
 | 
						|
	shRemoveFromGETVarsList('id');
 | 
						|
 | 
						|
/*
 | 
						|
 * Only remove format variable if form is html. In all other situations, leave it there as some system plugins
 | 
						|
 * may cause pdf and rss to break if they call JFactory::getDocument() in the onAfterInitialize event handler
 | 
						|
 * because at this time SEF url are not decoded yet.
 | 
						|
 *
 | 
						|
 */
 | 
						|
if (isset($format) && (!sh404SEF_PROTECT_AGAINST_DOCUMENT_TYPE_ERROR || (sh404SEF_PROTECT_AGAINST_DOCUMENT_TYPE_ERROR && $format == 'html')))
 | 
						|
{
 | 
						|
	shRemoveFromGETVarsList('format');
 | 
						|
}
 | 
						|
 | 
						|
if (isset($moduleID))
 | 
						|
{
 | 
						|
	shRemoveFromGETVarsList('moduleID');
 | 
						|
}
 | 
						|
 | 
						|
// ------------------ Standard plugin finalize function - don't change ---------------------------
 | 
						|
if ($dosef)
 | 
						|
{
 | 
						|
	$string = shFinalizePlugin($string, $title, $shAppendString, $shItemidString, (isset($limit) ? @$limit : null), (isset($limitstart) ? @$limitstart : null), (isset($shLangName) ? @$shLangName : null));
 | 
						|
}
 | 
						|
// ------------------ Standard plugin finalize function - don't change ---------------------------
 |