/** * @param DispatchEvent $event */ public function processEvent(DispatchEvent $event) { //Generate the URI and return it in the event $uri = $this->generateUriPath($event->getMapType(), $event->getLookupParts(), $this->_httpHost, $event->getPath(), $event->getFilename()); //Invalid resource requested if ($uri === null) { $event->setResult(null); return; } $cfg = $this->_dispatcher->getConfig(); switch ($cfg->getItem('run_on', 'path')) { case 'path': // asset urls are determined by path prefix $path = $cfg->getItem('run_match', 'res'); $uri = Path::buildUnix($this->_httpHost, $path, $uri); break; case 'subdomain': // asset urls are determined by domain prefix $sub = $cfg->getItem('run_match', 'static.'); $domainP = explode('.', $this->_httpHost); if (count($domainP) > 2) { $domain = implode('.', array_slice($domainP, 1)); } else { $domain = implode('.', $domainP); } $uri = Path::buildUnix($sub . $domain, $uri); break; case 'domain': // asset urls are determined by FQDN $domain = $cfg->getItem('run_match', $this->_httpHost); $uri = Path::buildUnix($domain, $uri); break; } $event->setResult('//' . $uri); }
/** * Generate a resource uri * * @param $filename * @param $path * @param $extension * * @return mixed */ public function getResourceUri($filename, $path = null, $extension = null) { //If no filename is sent, the resource is very unlikely to be valid if (empty($filename)) { return null; } if ($this->isExternalUrl($filename)) { return $filename; } if ($extension !== null) { if (substr($filename, -4) !== '.min') { $filename = [$filename . '.min.' . $extension, $filename . '.' . $extension]; } else { $filename = [$filename . '.' . $extension]; } } $event = new DispatchEvent(); $event->setLookupParts((array) $this->_lookupParts); $event->setMapType($this->_mapType); $event->setPath($path); foreach ((array) $filename as $fname) { $event->setFilename($fname); $result = Dispatch::trigger($event); if ($result !== null && $result->getResult() !== null) { return $result->getResult(); } } return null; }