public function executeRead(AgaviRequestDataHolder $rd) { $headers = $rd->getHeaders(); $route = $this->getContext()->getRequest()->getAttribute('matched_routes', 'org.agavi.routing'); $route = $route[count($route) - 1]; $type = explode(".", $route); $type = $type[count($type) - 1]; $loader = $this->getContext()->getModel('SquishFileContainer', 'AppKit', array('type' => $type, 'route' => $route)); if (isset($headers['IF_NONE_MATCH'])) { $etag = str_replace('"', "", $headers['IF_NONE_MATCH']); if ($loader->hasEtagInCache($etag)) { header("HTTP/1.1 304 NOT MODIFIED"); die; } } $resources = $this->getContext()->getModel('Resources', 'AppKit'); switch ($type) { case 'javascript': try { $loader->addFiles($resources->getJavascriptFiles()); $loader->setActions($resources->getJavascriptActions()); } catch (AppKitModelException $e) { $this->setAttribute('errors', $e->getMessage()); } break; case 'css': try { $loader->addFiles($resources->getCssFiles()); } catch (AppKitModelException $e) { $this->setAttribute('errors', $e->getMessage()); } break; } $loader->squishContents(); $content = $loader->getContent(); $this->setAttribute('content', $content . chr(10)); $this->setAttribute("etag", $loader->getCachedChecksum()); return $this->getDefaultViewName(); }
/** * Merge in Headers from another request data holder. * * @param AgaviRequestDataHolder The other request data holder. * * @author David Zülke <*****@*****.**> * @since 0.11.0 */ public function mergeHeaders(AgaviRequestDataHolder $other) { if ($other instanceof AgaviIHeadersRequestDataHolder) { $this->setHeaders($other->getHeaders()); } }