function Q_scripts_combine() { $environment = Q_Config::get('Q', 'environment', false); if (!$environment) { return "Config field 'Q'/'environment' is empty"; } $files = Q_Config::get('Q', 'environments', $environment, 'files', Q_Config::get('Q', 'environments', '*', 'files', false)); if (empty($files)) { return "Config field 'Q'/'environments'/'{$environment}'/files is empty"; } $filters = Q_Config::get('Q', 'environments', $environment, 'filters', Q_Config::get('Q', 'environments', '*', 'filters', false)); if (empty($filters)) { return "Config field 'Q'/'environments'/'{$environment}'/filters is empty"; } $combined = array(); foreach ($files as $src => $dest) { $f = Q_Uri::filenameFromUrl(Q_Html::themedUrl($src, true)); if (!file_exists($f)) { return "Aborting: File corresponding to {$src} doesn't exist"; } $content = file_get_contents($f); $combined[$dest][$src] = $content; } foreach ($combined as $dest => $parts) { $df = Q_Uri::filenameFromUrl(Q_Html::themedUrl($dest)); $ext = pathinfo($df, PATHINFO_EXTENSION); echo "Writing {$df}\n"; if (!empty($filters)) { foreach ($filters as $e => $filter) { if ($ext !== $e) { continue; } $p = !empty($filter['params']) ? Q::json_encode($filter['params']) : ''; echo "\t" . $filter['handler'] . "{$p}\n"; foreach ($parts as $src => $part) { echo "\t\t{$src}\n"; } $params = compact('dest', 'parts'); if (!empty($filter['params'])) { $params = array_merge($params, $filter['params']); } $content = Q::event($filter['handler'], $params); } } file_put_contents($df, $content); } echo "Success."; }
/** * Gets the url and filename of a themed file * @method themedUrlAndFilename * @static * @param {string} $filePath Basically the subpath of the file underneath the web or theme directory * @param {boolean} [$ignoreEnvironment=false] If true, doesn't apply environment transformations * @return {array} A two-element array containing the url and filename */ static function themedUrlAndFilename($filePath, $ignoreEnvironment = false) { /** * @event Q/themedUrlAndFilename {before} * @param {string} file_path * @return {array} */ $result = Q::event('Q/themedUrlAndFilename', compact('file_path'), 'before'); if ($result) { return $result; } if (!$ignoreEnvironment and $environment = Q_Config::get('Q', 'environment', false)) { if ($info = Q_Config::get('Q', 'environments', $environment, false)) { if (!empty($info['files'][$filePath])) { $filePath = $info['files'][$filePath]; } } } $filename = false; if (Q_Valid::url($filePath)) { $url = $filePath; } else { $theme = Q_Uri::url(self::themeUrl()); $themes = self::$themes; $c = count($themes); if ($c > 1) { // At least two theme URLs have been loaded // Do the cascade for ($i = $c - 1; $i >= 0; --$i) { try { $filename = Q_Uri::filenameFromUrl($themes[$i] . '/' . $filePath); } catch (Exception $e) { continue; } if ($filename and file_exists($filename)) { $theme = $themes[$i]; break; } } } $url = $theme . '/' . $filePath; } if (empty($filename)) { try { $filename = Q_Uri::filenameFromUrl($url); } catch (Exception $e) { $filename = null; } } $url = Q_Uri::cachedUrl($url); return array($url, $filename); }