Skip to content

Instantly share code, notes, and snippets.

@AmyStephen
Created April 29, 2011 21:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AmyStephen/949038 to your computer and use it in GitHub Desktop.
Save AmyStephen/949038 to your computer and use it in GitHub Desktop.
Site Content Helper Route: Molajo (Top) comparison to Joomla! 1.6 (Bottom)
<?php
/**
* @version $id: route.php
* @package Molajo
* @subpackage Route Helper
* @copyright Copyright (C) 2011 Individual Molajo Contributors. All rights reserved.
* @license GNU General Public License Version 2, or later http://www.gnu.org/licenses/gpl.html
*/
defined('MOLAJO') or die;
/**
* MolajosamplesHelperRoute
*
* @package Molajo
* @subpackage HelperRoute
* @since 1.6
*/
abstract class MolajosamplesHelperRoute extends MolajoHelperRoute
{
/**
* getMolajosampleRoute
*
* @param $data
* @param $catid
* @param int $id
* @return string
*/
public function getMolajosampleRoute ($data, $catid, $id = 0)
{
parent::getContentItemRoute($data, $catid, $id, 'molajosample', 'Molajosample', 'com_molajosamples');
}
/**
* getCategoryRoute
*
* @param $data
* @param $catid
* @return string
*/
public function getCategoryRoute($data, $catid)
{
parent::getCategoryRoute($data, $catid, 'molajosample', 'Molajosample', 'com_molajosamples');
}
/**
* getFormRoute
*
* @param $data
* @param $catid
* @param $id
* @return string
*/
public function getFormRoute($data, $catid, $id)
{
parent::getContentItemRoute($data, $catid, $id, 'molajosample', 'Molajosample', 'com_molajosamples');
}
}
<?php
/**
* @version $Id: route.php 21097 2011-04-07 15:38:03Z dextercowley $
* @package Joomla.Site
* @subpackage com_content
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// no direct access
defined('_JEXEC') or die;
jimport('joomla.application.component.helper');
jimport('joomla.application.categories');
/**
* Content Component Route Helper
*
* @static
* @package Joomla.Site
* @subpackage com_content
* @since 1.5
*/
abstract class ContentHelperRoute
{
protected static $lookup;
/**
* @param int The route of the content item
*/
public static function getArticleRoute($id, $catid = 0)
{
$needles = array(
'article' => array((int) $id)
);
//Create the link
$link = 'index.php?option=com_content&view=article&id='. $id;
if ((int)$catid > 1)
{
$categories = JCategories::getInstance('Content');
$category = $categories->get((int)$catid);
if($category)
{
$needles['category'] = array_reverse($category->getPath());
$needles['categories'] = $needles['category'];
$link .= '&catid='.$catid;
}
}
if ($item = self::_findItem($needles)) {
$link .= '&Itemid='.$item;
}
elseif ($item = self::_findItem()) {
$link .= '&Itemid='.$item;
}
return $link;
}
public static function getCategoryRoute($catid)
{
if ($catid instanceof JCategoryNode)
{
$id = $catid->id;
$category = $catid;
}
else
{
$id = (int) $catid;
$category = JCategories::getInstance('Content')->get($id);
}
if($id < 1)
{
$link = '';
}
else
{
$needles = array(
'category' => array($id)
);
if ($item = self::_findItem($needles))
{
$link = 'index.php?Itemid='.$item;
}
else
{
//Create the link
$link = 'index.php?option=com_content&view=category&id='.$id;
if($category)
{
$catids = array_reverse($category->getPath());
$needles = array(
'category' => $catids,
'categories' => $catids
);
if ($item = self::_findItem($needles)) {
$link .= '&Itemid='.$item;
}
elseif ($item = self::_findItem()) {
$link .= '&Itemid='.$item;
}
}
}
}
return $link;
}
public static function getFormRoute($id)
{
//Create the link
if ($id) {
$link = 'index.php?option=com_content&task=article.edit&a_id='. $id;
} else {
$link = 'index.php?option=com_content&task=article.edit&a_id=0';
}
return $link;
}
protected static function _findItem($needles = null)
{
$app = JFactory::getApplication();
$menus = $app->getMenu('site');
// Prepare the reverse lookup array.
if (self::$lookup === null)
{
self::$lookup = array();
$component = JComponentHelper::getComponent('com_content');
$items = $menus->getItems('component_id', $component->id);
foreach ($items as $item)
{
if (isset($item->query) && isset($item->query['view']))
{
$view = $item->query['view'];
if (!isset(self::$lookup[$view])) {
self::$lookup[$view] = array();
}
if (isset($item->query['id'])) {
self::$lookup[$view][$item->query['id']] = $item->id;
}
}
}
}
if ($needles)
{
foreach ($needles as $view => $ids)
{
if (isset(self::$lookup[$view]))
{
foreach($ids as $id)
{
if (isset(self::$lookup[$view][(int)$id])) {
return self::$lookup[$view][(int)$id];
}
}
}
}
}
else
{
$active = $menus->getActive();
if ($active && $active->component == 'com_content') {
return $active->id;
}
}
return null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment