Welcome Guest, Not a member yet? Register   Sign In
** solved ** dynamic routing from database
#8

[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']);


Messages In This Thread
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 01:17 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 01:35 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 01:55 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 01:56 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 01:58 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 02:02 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 02:09 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 02:10 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 02:11 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 02:22 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 02:26 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 04:51 PM
** solved ** dynamic routing from database - by El Forum - 11-17-2009, 06:32 PM
** solved ** dynamic routing from database - by El Forum - 11-18-2009, 09:42 AM



Theme © iAndrew 2016 - Forum software by © MyBB