Exemplo n.º 1
0
 public function test_add_component_to_chain()
 {
     $component = midgardmvc_core::get_instance()->component->get('midgardmvc_core');
     $request = new midgardmvc_core_request();
     $components = $request->get_component_chain();
     $this->assertFalse(isset($components['midgardmvc_core']));
     $request->add_component_to_chain($component);
     $components = $request->get_component_chain();
     $this->assertTrue(in_array($component, $components));
     $request->add_component_to_chain($component);
     $components = $request->get_component_chain();
     $this->assertTrue(in_array($component, $components));
 }
Exemplo n.º 2
0
 private function data_to_request(midgardmvc_core_request $request, array $data)
 {
     $components = $request->get_component_chain();
     foreach ($components as $component) {
         $request->set_data_item($component->name, $data);
     }
     $request->set_data_item('current_component', $data);
     // Set other request data from route
     $route = $request->get_route();
     $request->set_data_item('mimetype', $route->mimetype);
 }
Exemplo n.º 3
0
 public function get_routes(midgardmvc_core_request $request)
 {
     $routes = array();
     $components = array_reverse($request->get_component_chain());
     foreach ($components as $component) {
         $component_routes = $component->get_routes($request);
         foreach ($component_routes as $route_id => $route) {
             $routes[$route_id] = $route;
         }
     }
     return $routes;
 }
Exemplo n.º 4
0
 public function get_element(midgardmvc_core_request $request, $element, $handle_includes = true)
 {
     // Check for possible element aliases
     $route = $request->get_route();
     if ($route && isset($route->template_aliases[$element])) {
         $element = $route->template_aliases[$element];
     }
     $component_chain = $request->get_component_chain();
     foreach ($component_chain as $component) {
         $element_content = $component->get_template_contents($element);
         if (is_null($element_content)) {
             // This component didn't provide the necessary element, go to next one in stack
             continue;
         }
         if (!$handle_includes) {
             return $element_content;
         }
         // Replace instances of <mgd:include>elementname</mgd:include> with contents of the element
         return preg_replace_callback("%<mgd:include[^>]*>([a-zA-Z0-9_-]+)</mgd:include>%", array($this, 'get_element_callback'), $element_content);
     }
     throw new OutOfBoundsException("Element {$element} not found in Midgard MVC component chain.");
 }