[eluser]Tottys Design[/eluser]
Code:
<?php
class Core_router
{
public function __construct()
{
$this->obj =& get_instance();
$this->obj->load->model('Folder', '', TRUE);
$this->obj->load->helper('url');
}
function ex(){
//redirect('/en/gallery', 'location');
}
function index(){
// set default data
$segments = &func;_get_args();
// check if is a HTML or AJAX request
if(isset($segments) && count($segments) > 0){
if($segments[count($segments)-1] == '__AJAX__'){
$requestType = 'AJAX';
}else{
$requestType = 'HTML';
}
}
// set language
if(isset($segments[0])){
$lang = $segments[0];
$languages = array('pt', 'en');
// check if is a valid language
if(!in_array($lang, $languages)){
$lang = 'en';
}
}else{
$lang = 'en';
}
// get controller name
if(isset($segments[1])){
$controllerSEO = $this->Folder->getControllerName($segments[1], $lang);
if($controllerSEO == ''){
$controllerSEO = 'error';
}
}else{
$segments[1] = 'gallery';
$controllerSEO = $segments[1];
}
// set params
unset($segments[0]); // remove language
if($requestType == 'AJAX'){
// remove __AJAX__ from end
unset($segments[count($segments)]);
}
$params = array();
$params[0] = 'root';
foreach($segments as $segment){
array_push($params, $segment);
}
// load language files
//$this->lang->load('generic', $lang);
//$this->lang->load($controllerSEO, $lang);
// load helper
$this->obj->load->helper('array_to_object');
$this->obj->load->helper('array_to_object');
//$this->load->helper('array_to_object');
//$this->load->helper('url');
// load models
$this->obj->load->model('Folder', '', TRUE);
//$this->load->model('Folder','', TRUE);
//$this->load->model('String_lang','String', TRUE);
// dispatch to: HTML or AJAX
if($requestType == 'HTML'){
$data = $this->_html($params, $lang);
}else{
//$this->ajax($params, $lang);
}
//print_r($data);
//$this->run($data);
}
function _html($params, $lang){
$breadcrumbs = $params; array_shift($breadcrumbs);
$data['breadcrumbs'] = $breadcrumbs;
$data['title'] = 'Tottys Design';
$parent_id = 1;
// loop segments until we find the last segment in db
for($i = 0; $i < count($params); $i++){
$seo_name = $params[$i];
// not last loop
if($i != count($params) - 1){
$parent_id = $this->_getId($parent_id, $i, $seo_name, $lang);
}
// last loop
else{
$moreData = $this->_getData($seo_name, $parent_id, $lang, $breadcrumbs);
$data = array_merge($data, $moreData);
}
}
//$data['translation'] = $this->String->getTranslationsForView($data['currentSelection']['view'], $lang);
$data['title'] = 'Tottys Design: ' . $data['currentSelection']['name'];
$data['navData'] = $this->obj->Folder->getNavigation($lang);
//print_r($data);
//$this->loadTemplate($data);
return $data;
}
function _getId($parent_id, $i, $seo_name, $lang){
$root = false;
if($i == 0){$root = true;}
if($parent_id = $this->obj->Folder->getId($seo_name, $parent_id, $lang,$root)){
}else{
$parent_id = '';
}
return $parent_id;
}
function _getData($seo_name, $parent_id, $lang, $breadcrumbs){
$errorPage = false;
// get this data: check if is folder
if($thisData = $this->obj->Folder->getData($seo_name, $parent_id, $lang)){
$thisData = parseObjectToArray($thisData);
$data['currentSelection'] = $thisData;
}
// check if is a file
else if($thisData = $this->Folder->getImageData($seo_name, $parent_id, $lang)){
$thisData = parseObjectToArray($thisData);
$data['currentSelection'] = $thisData;
}
else{
$errorPage = true;
}
// set layout
if(!$errorPage){
$data['layout_type'] = $data['currentSelection']['view'];
}
// if the url is right and this has data
if(!$errorPage && isset($thisData->id)){
$hasChildren = false;
// if has children
if($children = $this->obj->Folder->getChildren($thisData['id'], $lang)){
// add entries number & link_url
foreach($children as &$child){
// add entries number on children
if(!$child['image']){
$child['entries'] = &$this->obj->Folder->getChildrenNumber($child['id']);