<?php
 
/* Class name       : Url
 
 * Inherited from   : 
 
 * Created by       : Junaid Hassan (email : [email protected] , blog : junaidhassanalvi.wordpress.com)
 
 * Created On       : 15-April-2103
 
 * Description      : To handle all operations regarding recieved URL request
 
 * 
 
 * Change Logs      :
 
 * 
 
 */
 
class Url {
 
 
    var $controller, $action, $controller_path, $qParams, $request, $controller_class, $controller_action;
 
    
 
    protected $catalog;
 
 
    function __construct($catalog) {
 
        $this->catalog = $catalog;
 
    }
 
 
    // jha-- parse recieved URL to route the request to appropriate controller and action
 
    //jha-- explode url in an array to form request array
 
    //jha-- check if controller is provided, if not, take it from configuration
 
    //jha-- check if action is provided, if not, take it from configuration
 
    //jha-- check if required controller and action is present, if not, die
 
    //jha-- push controller and action name from request array to create parameter list for action's function
 
    public function parse_current() {
 
 
        global $utilities;
 
        
 
        $config = $this->catalog->get('config');
 
 
        $qs = isset($_GET['qs']) ? $_GET['qs'] : '';
 
        $this->request = $qs;
 
        $this->qParams = explode('/', $qs);
 
 
        if (!@$utilities->isNullOrEmpty($this->qParams[0])) {
 
            $this->controller = $this->qParams[0];
 
        } else {
 
            $this->controller = $config->default->controller;
 
        }
 
 
        if (!@$utilities->isNullOrEmpty($this->qParams[1])) {
 
            $this->action = $this->qParams[1];
 
        } else {
 
            $this->action = $config->default->action;
 
        }
 
 
        $this->controller_path = $config->base_path . '/' . $config->paths->controllers . '/' . $this->controller . '.php';
 
 
        $this->controller_class = $this->controller . 'Controller';
 
        $this->controller_action = $this->action . 'Action';
 
 
        if (file_exists($this->controller_path)) {
 
            require($this->controller_path);
 
            if (class_exists($this->controller_class)) {
 
                $obj = new $this->controller_class($this->catalog);
 
                if (method_exists($obj, $this->controller_action)) {
 
                    
 
                } else {
 
                    die('Required action is not found');
 
                }
 
            } else {
 
                die('Required controller is not found');
 
            }
 
        } else {
 
            die('Required controller is not found');
 
        }
 
 
        if (is_array($this->qParams))
 
            if (count($this->qParams) > 0)
 
                array_shift($this->qParams);
 
 
        if (is_array($this->qParams))
 
            if (count($this->qParams) > 0)
 
                array_shift($this->qParams);
 
    }
 
 
}
 
?>
 
 
 
 
 |