<?php
/**
* @package com_zoo
* @author YOOtheme
www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license
www.gnu.org/licenses/gpl.html GNU/GPL
*/
// load config
require_once(JPATH_ADMINISTRATOR.'/components/com_zoo/config.php');
function ZooBuildRoute(&$query) {
$app = App::getInstance('zoo');
// init vars
$segments = array();
// frontpage
$task = 'frontpage';
if (@$query == $task || @$query == $task) {
if (@$query == $task) {
$segments[] = $task;
}
unset($query, $query, $query);
// pagination
if (isset($query)) {
$segments[] = $query;
unset($query);
}
}
// category
$task = 'category';
if (@$query == $task || @$query == $task) {
if (@$query == $task) {
$segments[] = $task;
}
if (@$query) {
$segments[] = $app->alias->category->translateIDToAlias((int) $query);
}
unset($query, $query, $query, $query);
// pagination
if (isset($query)) {
$segments[] = $query;
unset($query);
}
}
// alpha index
$task = 'alphaindex';
if ((@$query == $task || @$query == $task) && isset($query, $query)) {
$segments[] = $task;
if (!($menu = $app->system->application->getMenu('site')
and $menu instanceof JMenu
and isset($query)
and $item = $menu->getItem($query)
and @$item->component == 'com_zoo'
and $app_id = $item->params->get('application')
and $query == $app_id)) {
// Set app alias in the url only if we can't get the app_id from the menu item
$segments[] = $app->alias->application->translateIDToAlias((int) $query);
}
$segments[] = $query;
unset($query, $query, $query, $query);
// pagination
if (isset($query)) {
$segments[] = $query;
unset($query);
}
}
// tag
$task = 'tag';
if ((@$query == $task || @$query == $task) && isset($query, $query)) {
$segments[] = $task;
if (!($menu = $app->system->application->getMenu('site')
and $menu instanceof JMenu
and isset($query)
and $item = $menu->getItem($query)
and @$item->component == 'com_zoo'
and $app_id = $item->params->get('application')
and $query == $app_id)) {
// Set app alias in the url only if we can't get the app_id from the menu item
$segments[] = $app->alias->application->translateIDToAlias((int) $query);
}
$segments[] = $query;
unset($query, $query, $query, $query);
// pagination
if (isset($query)) {
$segments[] = $query;
unset($query);
}
}
// item
$task = 'item';
if (@$query == $task || @$query == $task) {
if (@$query == $task && @$query) {
$segments[] = $task;
$segments[] = $app->alias->item->translateIDToAlias((int) $query);
}
unset($query, $query, $query, $query);
}
// feed
$task = 'feed';
if ((@$query == $task || @$query == $task) && isset($query, $query, $query)) {
$segments[] = $task;
$segments[] = $query;
$segments[] = $app->alias->application->translateIDToAlias((int) $query);
if ($query) {
$segments[] = $app->alias->category->translateIDToAlias((int) $query);
}
unset($query, $query, $query, $query, $query);
}
// submission
$task = 'submission';
if (((@$query == $task || @$query == $task) && @$query == 'submission')) {
$segments[] = $task;
$segments[] = @$query;
if (isset($query, $query, $query)) {
$segments[] = $app->alias->submission->translateIDToAlias((int) $query);
$segments[] = $query;
$segments[] = $query;
}
if (isset($query)) {
$segments[] = $app->alias->item->translateIDToAlias((int) @$query);
}
unset($query, $query, $query, $query, $query, $query, $query);
}
// submission mysubmissions
$task = 'submission';
if (((@$query == $task || @$query == $task) && @$query == 'mysubmissions')) {
$segments[] = $task;
$segments[] = @$query;
$segments[] = $app->alias->submission->translateIDToAlias((int) @$query);
unset($query, $query, $query, $query);
}
$app->event->dispatcher->notify($app->event->create(null, 'application:sefbuildroute', array('segments' => &$segments, 'query' => &$query)));
return $segments;
}
function ZooParseRoute($segments) {
$app = App::getInstance('zoo');
// init vars
$vars = array();
$count = count($segments);
// fix segments (see JRouter::_decodeSegments)
foreach (array_keys($segments) as $key) {
$segments[$key] = str_replace(':', '-', $segments[$key]);
}
// frontpage (with optional pagination)
$task = 'frontpage';
if ($count == 1 && $segments[0] == $task) {
$vars = $task;
}
if ($count == 2 && $segments[0] == $task) {
$vars = $task;
$vars = (int) $segments[1];
}
// category (with optional pagination)
$task = 'category';
if ($count == 2 && $segments[0] == $task) {
$vars = $task;
$vars = (int) $app->alias->category->translateAliasToID($segments[1]);
}
if ($count == 3 && $segments[0] == $task) {
$vars = $task;
$vars = (int) $app->alias->category->translateAliasToID($segments[1]);
$vars = (int) $segments[2];
}
// alpha index (with optional pagination)
$task = 'alphaindex';
if ($count == 2 && $segments[0] == $task && $menu_item = $app->menu->getActive()) {
$vars = $task;
$vars = (string) $segments[1];
$vars = $menu_item->params->get('application');
}
if ($count == 3 && $segments[0] == $task) {
$vars = $task;
if (!$vars = (int) $app->alias->application->translateAliasToID($segments[1]) and $menu_item = $app->menu->getActive()) {
$vars = $menu_item->params->get('application');
$vars = (string) $segments[1];
$vars = (int) $segments[2];
} else {
$vars = (string) $segments[2];
}
}
if ($count == 4 && $segments[0] == $task) {
$vars = $task;
$vars = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars = (string) $segments[2];
$vars = (int) $segments[3];
}
// tag (with optional pagination)
$task = 'tag';
// if a menu item is set, avoid using app alias in the url
if ($count == 2 && $segments[0] == $task && $menu_item = $app->menu->getActive()) {
$vars = $task;
$vars = $menu_item->params->get('application');
$vars = (string) $segments[1];
}
if ($count == 3 && $segments[0] == $task) {
$vars = $task;
if (!$vars = (int) $app->alias->application->translateAliasToID($segments[1]) and $menu_item = $app->menu->getActive()) {
$vars = $menu_item->params->get('application');
$vars = (string) $segments[1];
$vars = (int) $segments[2];
} else {
$vars = (string) $segments[2];
}
}
if ($count == 4 && $segments[0] == $task) {
$vars = $task;
$vars = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars = (string) $segments[2];
$vars = (int) $segments[3];
}
// item
$task = 'item';
if ($count == 2 && $segments[0] == $task) {
$vars = $task;
$vars = (int) $app->alias->item->translateAliasToID($segments[1]);
}
// feed
$task = 'feed';
if ($count == 3 && $segments[0] == $task) {
$vars = $task;
$vars = (string) $segments[1];
$vars = (int) $app->alias->application->translateAliasToID($segments[2]);
}
if ($count == 4 && $segments[0] == $task) {
$vars = $task;
$vars = (string) $segments[1];
$vars = (int) $app->alias->application->translateAliasToID($segments[2]);
$vars = (int) $app->alias->category->translateAliasToID($segments[3]);
}
// submission
$task = 'submission';
$layout = 'submission';
if ($count == 2 && $segments[0] == $task && $segments[1] == $layout) {
$vars = $task;
$vars = (string) $segments[1];
}
if ($count == 5 && $segments[0] == $task && $segments[1] == $layout) {
$vars = $task;
$vars = (string) $segments[1];
$vars = (int) $app->alias->submission->translateAliasToID($segments[2]);
$vars = (string) $segments[3];
$vars = (string) $segments[4];
}
if ($count == 6 && $segments[0] == $task && $segments[1] == $layout) {
$vars = $task;
$vars = (string) $segments[1];
$vars = (int) $app->alias->submission->translateAliasToID($segments[2]);
$vars = (string) $segments[3];
$vars = (string) $segments[4];
$vars = (int) $app->alias->item->translateAliasToID($segments[5]);
}
// submission mysubmissions
$task = 'submission';
$layout = 'mysubmissions';
if ($count == 2 && $segments[0] == $task && $segments[1] == $layout) {
$vars = $task;
$vars = (string) $segments[1];
}
if ($count == 3 && $segments[0] == $task && $segments[1] == $layout) {
$vars = $task;
$vars = (string) $segments[1];
$vars = (int) $app->alias->submission->translateAliasToID($segments[2]);
}
// try to retrieve vars from menu item
if (empty($vars)) {
if (($count == 0 || $count == 1 && is_numeric($segments[0])) && $menu_item = $app->menu->getActive()) {
$vars = @$menu_item->query;
switch ($vars) {
case 'frontpage':
if ($count == 1) {
$vars = (int) $segments[0];
}
break;
case 'category':
if ($count == 1) {
$vars = (int) $segments[0];
$vars = @$menu_item->query;
}
break;
}
}
}
$app->event->dispatcher->notify($app->event->create(null, 'application:sefparseroute', array('segments' => &$segments, 'vars' => &$vars)));
return $vars;
}