Example #1
0
 private function setValue($value, $name, $def, $args, $use_setter = true)
 {
     if (isset($this->_proxied_fields[$name]) && $this->getProxy()) {
         return $this->getProxy()->setValue($value, $name, $def, $args);
     }
     $name = isset($def['alias']) ? $def['alias'] : $name;
     if ($use_setter) {
         $setter = 'set' . String::camelize($name, true);
         if (method_exists($this, $getter)) {
             return $this->{$setter}($value);
         }
     }
     return $this->set($name, $this->parseValue($value, $name, $def, $args));
 }
Example #2
0
File: base.php Project: antz29/base
 public function run($force_uri = null)
 {
     $this->_force_route = false;
     if (php_sapi_name() == 'cli') {
         return array();
     }
     if ($this->_config->base) {
         Request::init($this->_config->base);
     }
     $request = $this->getRequest();
     if ($force_uri) {
         $request->setUri($force_uri);
     }
     $uri = $request->getUri();
     $this->getResponse()->setHeader('X-Base-Uri', $uri);
     if ($this->_config->routes) {
         foreach ($this->_config->routes->getData() as $route => $to) {
             if ($uri == $route) {
                 $this->getResponse()->setHeader('X-Route-Match', $route);
                 $this->getResponse()->setHeader('X-Route-Uri', $to);
                 $request->setUri($to);
                 break;
             } elseif (fnmatch($route, $uri)) {
                 if (!stristr($to, '*') && !stristr($to, '{')) {
                     $this->getResponse()->setHeader('X-Route-Match', $route);
                     $this->getResponse()->setHeader('X-Route-Uri', $to);
                     $request->setUri($to);
                     break;
                 }
                 $this->getResponse()->setHeader('X-Route-Match', $route);
                 $this->getResponse()->setHeader('X-Route-To-Pattern', $to);
                 $route = str_replace('/*/', '/%[^/]/', $route);
                 $route = str_replace('/*', '/%s', $route);
                 $new_match = stristr($to, '{');
                 $out = sscanf($uri, $route);
                 $elem = 1;
                 foreach ($out as $match) {
                     if ($new_match) {
                         $to = preg_replace('!\\{' . $elem . '\\}!', $match, $to, 1);
                     } else {
                         $to = preg_replace('!\\*!', $match, $to, 1);
                     }
                     $elem++;
                 }
                 $this->getResponse()->setHeader('X-Route-Uri', $to);
                 $request->setUri($to);
                 break;
             }
         }
     }
     if ($this->_config->modules) {
         $uri = $request->getUri();
         foreach ($this->_config->modules->getData() as $name => $module) {
             if ($uri == "/{$name}" || fnmatch("/{$name}/*", $uri)) {
                 $this->getResponse()->setHeader('X-Active-Module', $name);
                 $this->_active_module = $module;
                 $this->_active_module['name'] = $name;
                 $this->_config->setModule($name);
             }
         }
     }
     $request->clearSegmentIdentifiers();
     if ($this->_active_module) {
         $request->addSegmentIdentifier('module', 'module');
     }
     $request->addSegmentIdentifier('controller', 'index');
     $request->addSegmentIdentifier('action', 'index');
     $uri = $request->getSegmentIdentifiers();
     $this->_controller = $uri['controller'];
     $this->_action = $uri['action'];
     if (function_exists('newrelic_name_transaction')) {
         if ($this->_active_module) {
             newrelic_name_transaction("{$this->_active_module['name']}/{$this->_controller}/{$this->_action}");
         } else {
             newrelic_name_transaction("{$this->_controller}/{$this->_action}");
         }
     }
     $controller = String::camelize($this->_controller, true);
     $action = String::camelize($this->_action . '_action');
     $this->setLayout($this->_config->layout);
     $this->_layout->set('controller', $this->_controller);
     $this->_layout->set('action', $this->_action);
     if ($this->_active_module) {
         $this->_layout->set('module', $this->_active_module['name']);
     }
     $this->loadController($controller, $action, $uri['uri']);
     if ($this->_force_route) {
         return $this->run($this->_force_route);
     }
     $this->sendResponse(200, $this->_layout->render());
 }