addEntry(array('level' => 'debug', 'comment' => ('Building route view = ' . $segments[0] . ', layout = ' . $segments[1] . ', Itemid = ' . $segments[2]))); if (($segments[0] == 'default') && ($segments[2] != 0)) list($segments[0], $segments[1]) = $cache -> call('_resolveViewAndLayoutByItemId', $segments[2]); else if (($segments[0] != 'default') && ($segments[2] == 0)) $segments[2] = $cache -> call('_resolveItemIdByViewAndLayout', $segments[0], $segments[1]); if (JDEBUG) $log -> addEntry(array('level' => 'debug', 'comment' => ('Built route view = ' . $segments[0] . ', layout = ' . $segments[1] . ', Itemid = ' . $segments[2]))); return $segments; } function OpenaireParseRoute($segments) { $query = array(); if (JRequest::getVar('option', '', 'post') != '' && JRequest::getVar('option', '', 'post') != 'com_openaire') { foreach (array('option', 'view', 'itemId', 'task', 'layout') as $param) { $query[$param] = JRequest::getVar($param, '', 'post'); } } else { $cache =& JFactory :: getCache(); $log =& JLog :: getInstance(); if (isset($segments[0]) && ($segments[0] != '')) $query['view'] = $segments[0]; else $query['view'] = 'default'; if (isset($segments[1]) && ($segments[1] != '')) $query['layout'] = $segments[1]; else $query['layout'] = 'default'; if (isset($segments[2]) && ($segments[2] != '')) $query['Itemid'] = $segments[2]; else $query['Itemid'] = 0; if (JDEBUG) $log -> addEntry(array('level' => 'debug', 'comment' => ('Parsing route view = ' . $query['view'] . ', layout = ' . $query['layout'] . ', Itemid = ' . $query['Itemid']))); if (($query['view'] == 'default') && ($query['Itemid'] != 0)) list($query['view'], $query['layout']) = $cache -> call('_resolveViewAndLayoutByItemId', $query['Itemid']); else if (($query['view'] != 'default') && ($query['Itemid'] == 0)) $query['Itemid'] = $cache -> call('_resolveItemIdByViewAndLayout', $query['view'], $query['layout']); if (JDEBUG) $log -> addEntry(array('level' => 'debug', 'comment' => ('Parsed route view = ' . $query['view'] . ', layout = ' . $query['layout'] . ', Itemid = ' . $query['Itemid']))); JRequest :: setVar('option', 'com_openaire'); JRequest :: setVar('view', $query['view']); JRequest :: setVar('layout', $query['layout']); JRequest :: setVar('Itemid', $query['Itemid']); } return $query; } function _resolveViewAndLayoutByItemId($itemId) { if (JDEBUG) JLog :: getInstance() -> addEntry(array('level' => 'debug', 'comment' => 'Resolving view and layout by Itemid = ' . $itemId)); $view = 'default'; $layout = 'default'; $db =& JFactory :: getDBO(); $db -> setQuery('SELECT ' . $db -> nameQuote('link') . ' FROM ' . $db -> nameQuote('#__menu') . ' WHERE ' . $db -> nameQuote('id') . ' = ' . $db -> quote($itemId)); if (preg_match("/index\.php\?(.+)/", $db -> loadResult(), $matches)) { // query string found foreach (explode('&', $matches[0]) as $parameter) { list($name, $value) = explode('=', $parameter); switch ($name) { case 'view': $view = $value; break; case 'layout': $layout = $value; } } } return array($view, $layout); } function _resolveItemIdByViewAndLayout($view, $layout = 'default') { if (JDEBUG) JLog :: getInstance() -> addEntry(array('level' => 'debug', 'comment' => ('Resolving Itemid by view = ' . $view . ' and layout = ' . $layout))); $itemId = 0; $db =& JFactory :: getDBO(); $db -> setQuery('SELECT ' . $db -> nameQuote('id') . ' FROM ' . $db -> nameQuote('#__menu') . ' WHERE ' . $db -> nameQuote('link') . ' = ' . $db -> quote('index.php?option=com_openaire&view=' . $view . (($layout != 'default') ? ('&layout=' . $layout) : ''))); $itemId = $db -> loadResult(); return $itemId; } ?>