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 ---------------------------
|