/** * Combine the files in $files into a combine.php request * If $page->head_force_inline is true, resources will be included inline in the document * * @param array $files Array of files relative to $dataDir * @param string $type The type of resource being combined * */ static function CombineFiles($files, $type, $combine) { global $page; //only need file paths foreach ($files as $key => $script) { if (is_array($script)) { $files[$key] = $script['file']; } } $files = array_unique($files); $files = array_filter($files); //remove empty elements // Force resources to be included inline // CheckFile will fix the $file path if needed if ($page->head_force_inline) { if ($type == 'css') { echo '<style type="text/css">'; } else { echo '<script type="text/javascript">'; } foreach ($files as $file_key => $file) { $full_path = gp_combine::CheckFile($file); if (!$full_path) { continue; } readfile($full_path); echo ";\n"; } if ($type == 'css') { echo '</style>'; } else { echo '</script>'; } return; } //files not combined except for script components if (!$combine || isset($_REQUEST['no_combine']) && common::LoggedIn()) { foreach ($files as $file_key => $file) { $html = "\n" . '<script type="text/javascript" src="%s"></script>'; if (strpos($file, '.less') !== false) { $html = "\n" . '<link type="text/css" href="%s" rel="stylesheet/less" />'; } elseif ($type == 'css') { $html = "\n" . '<link type="text/css" href="%s" rel="stylesheet"/>'; } gp_combine::CheckFile($file); if (common::LoggedIn()) { $file .= '?v=' . rawurlencode(gpversion); } echo sprintf($html, common::GetDir($file, true)); } return; } $html = "\n" . '<script type="text/javascript" src="%s"></script>'; if ($type == 'css') { $html = "\n" . '<link rel="stylesheet" type="text/css" href="%s"/>'; } //create combine request $combined_file = gp_combine::GenerateFile($files, $type); echo sprintf($html, common::GetDir($combined_file, true)); }