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)); }
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); }
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; }
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."); }