You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							133 lines
						
					
					
						
							4.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							133 lines
						
					
					
						
							4.1 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								include_once(dirname(__FILE__)."/library/publicBase.php");
							 | 
						|
								
							 | 
						|
								class run extends publicBase {
							 | 
						|
								    public $control_name;
							 | 
						|
								    public $control_func;
							 | 
						|
								
							 | 
						|
								    public function __construct() {
							 | 
						|
								        session_start();
							 | 
						|
								        $this->checkpara();
							 | 
						|
								        $this->aftercheckpara();
							 | 
						|
								        $this->action();
							 | 
						|
								        $this->display();
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    private function checkpara() {
							 | 
						|
								        $argv = trim(trim($_GET['argv']),'/');
							 | 
						|
								        if(empty($argv)) {
							 | 
						|
								            $this->control_name = 'agent';
							 | 
						|
								            $this->control_func = 'demand_list';
							 | 
						|
								        } else {
							 | 
						|
								            $array = explode('/', $argv);
							 | 
						|
								            $this->control_name = $array[0] == '' ? 'agent' : $array[0];
							 | 
						|
								            $this->control_func = $array[1] == '' ? 'demand_list' : $array[1];
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        // 还原GET
							 | 
						|
								        if(!empty($array)) {
							 | 
						|
								            unset($_GET['argv']);
							 | 
						|
								            unset($array[0]);
							 | 
						|
								            unset($array[1]);
							 | 
						|
								
							 | 
						|
								            $count = count($array);
							 | 
						|
								            for($i=1;$i<=$count/2;$i++) {
							 | 
						|
								                $_GET[$array[$i*2]] = $array[$i*2+1];
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        // 如果URI带有常规传参形式,并入$_GET
							 | 
						|
								        $pos = strpos($_SERVER['REQUEST_URI'], '?');
							 | 
						|
								        if($pos!==false) {
							 | 
						|
								            $new_uri = substr($_SERVER['REQUEST_URI'], $pos+1);
							 | 
						|
								            $new_uri_arr = explode("&", $new_uri);
							 | 
						|
								            foreach($new_uri_arr as $v) {
							 | 
						|
								                $new_para = explode("=", $v);
							 | 
						|
								                $_GET[$new_para[0]] = $new_para[1];
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    private function aftercheckpara() {
							 | 
						|
								        $no_login_list = array('callback');
							 | 
						|
								        $is_need_login = in_array($this->control_name, $no_login_list) ? false : true;
							 | 
						|
								
							 | 
						|
								        if (!$is_need_login) return true;
							 | 
						|
								
							 | 
						|
								        $app_uid = $_SESSION['app_uid'];
							 | 
						|
								        $app_name = $_SESSION['app_name'];
							 | 
						|
								
							 | 
						|
								        //代理登陆检查
							 | 
						|
								        if (empty($app_uid) || empty($app_name)) {
							 | 
						|
								            header('Location:/login/login');
							 | 
						|
								            exit;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $sobj = new mShop();
							 | 
						|
								        $shopinfo = $sobj->getShopByName($app_name);
							 | 
						|
								        if (empty($shopinfo)) {
							 | 
						|
								            header('Location:/login/login');
							 | 
						|
								            exit;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $this->view['_shopinfo'] = $this->para['_shopinfo'] = $shopinfo;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    private function action() {
							 | 
						|
								        $control_func = empty($this->control_func) ? 'admin' : $this->control_func;
							 | 
						|
								
							 | 
						|
								        // 判断控制层文件是否存在
							 | 
						|
								        $control_path = dirname(__FILE__).'/control/'.$this->control_name.'.php';
							 | 
						|
								        if(!file_exists($control_path)) {
							 | 
						|
								            die('class '.$this->control_name.' not exist.');
							 | 
						|
								        }
							 | 
						|
								        include_once ($control_path);
							 | 
						|
								
							 | 
						|
								        // 判断控制层方法是否存在
							 | 
						|
								        $obj = new $this->control_name;
							 | 
						|
								
							 | 
						|
								        ##如下根据情况传递公共变量值##################
							 | 
						|
								        if (is_array($this->para)) {
							 | 
						|
								            foreach ($this->para as $k=>$v) {
							 | 
						|
								                $func = 'set' . $k;
							 | 
						|
								                $obj->$func($v);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        ##如上根据情况传递公共变量值##################
							 | 
						|
								        if (method_exists($obj, $control_func)) {
							 | 
						|
								            $res = $obj->$control_func();
							 | 
						|
								        } else {
							 | 
						|
								            die('method '.$this->control_func.' not exist.');
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        if($obj->getViewFormat()=='json' && $res===false) {
							 | 
						|
								            echo urldecode($obj->getError());
							 | 
						|
								            exit;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $this->view = array_merge($this->view, $obj->getView());
							 | 
						|
								        $this->viewFormat = $obj->getViewFormat();
							 | 
						|
								        $this->viewTpl = $obj->getViewTpl();
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    private function display() {
							 | 
						|
								        if($this->viewFormat=='json') {
							 | 
						|
								            $display = new DisplayJson();
							 | 
						|
								        } elseif($this->viewFormat=='string') {
							 | 
						|
								            $display = new DisplayNone();
							 | 
						|
								        } else {
							 | 
						|
								            $tpl_path = $this->viewTpl=='' ? $this->control_name.'/'.$this->control_func.'.html' : $this->viewTpl;
							 | 
						|
								            if(!file_exists(dirname(__FILE__) . '/view/templates/'.$tpl_path)) { // 判断模板是否存在
							 | 
						|
								                echo dirname(__FILE__) . '/view/templates/'.$tpl_path;
							 | 
						|
								                die("{$tpl_path} not exist.");
							 | 
						|
								            }
							 | 
						|
								            $display = new DisplaySmarty($tpl_path);
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $display->setView($this->view);
							 | 
						|
								        $display->execute();
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								new run();
							 |