Exemplo n.º 1
0
 /**
  * Lookup routing rules
  *
  * @return array returns combined array, FALSE if any pattern is matched.
  */
 public function route(Charcoal_IRequest $request, Charcoal_IRoutingRule $rule)
 {
     // Get path info
     //$request_uri = $_SERVER["REQUEST_URI"];
     //$script_name = $_SERVER["SCRIPT_NAME"];
     //$dir_name    = dirname($script_name);
     //$pos = strpos( $request_uri, $dir_name );
     //$url = substr( $request_uri, $pos + strlen($dir_name) );
     $url = rtrim($_SERVER["REQUEST_URI"], '/');
     log_info('debug,router', "routing started. URL=[{$url}]");
     $proc_key = $this->getSandbox()->getProfile()->getString('PROC_KEY', 'proc');
     $rule_keys = $rule->getKeys();
     if ($rule_keys && is_array($rule_keys)) {
         log_info('debug,router', "rule keys=[" . implode(",", $rule_keys) . "]");
         foreach ($rule_keys as $pattern) {
             $proc = $rule->getProcPath(s($pattern));
             log_info('debug,router', "pattern=[{$pattern}] proc=[{$proc}]");
             if ($proc) {
                 log_info('debug,router', "testing pattern=[{$pattern}] url=[{$url}]");
                 $params = self::_match($pattern, $url);
                 log_info('debug,router', "params:" . print_r($params, true));
                 // match
                 if ($params !== NULL) {
                     $request->setArray($params);
                     $request->set($proc_key, $proc);
                     log_info('debug,router', "routing rule matched! pattern=[{$pattern}] proc_path=[{$proc}]");
                     $result = array('proc' => $proc, 'params' => $params, 'pattern' => $pattern);
                     return $result;
                 }
             }
         }
         log_warning('system,debug,router', "no routing rule is matched.");
     } else {
         log_warning('system,debug,router', "routing rule are not defined.");
     }
     return FALSE;
 }
Exemplo n.º 2
0
 /**
  * Copy parameters from request object. All of container elements will be overwrited.
  *
  * @param Charcoal_IRequest $request   Request object to set
  */
 public function setRequest($request)
 {
     //        Charcoal_ParamTrait::validateIsA( 1, 'Charcoal_IRequest', $request );
     $this->values = $request->getAll();
 }