summaryrefslogtreecommitdiff
path: root/framework/Web/Javascripts/js/compressed/clientscripts.php
diff options
context:
space:
mode:
authorxue <>2006-08-30 12:33:43 +0000
committerxue <>2006-08-30 12:33:43 +0000
commit1f560ccd8a9e21871dbedd548fc97f231131c771 (patch)
tree90d054108a0bce4668ca16d425655b22c99ed6d3 /framework/Web/Javascripts/js/compressed/clientscripts.php
parentf4482f9c17825b63242fee42252e097dd85f53c5 (diff)
merge from 3.0 branch till 1363.
Diffstat (limited to 'framework/Web/Javascripts/js/compressed/clientscripts.php')
-rw-r--r--framework/Web/Javascripts/js/compressed/clientscripts.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/framework/Web/Javascripts/js/compressed/clientscripts.php b/framework/Web/Javascripts/js/compressed/clientscripts.php
new file mode 100644
index 00000000..3ac3b062
--- /dev/null
+++ b/framework/Web/Javascripts/js/compressed/clientscripts.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * This file compresses the javascript files using GZip
+ *
+ * Todo:
+ * - Add local file cache for the GZip:ed version.
+ */
+
+$debugMode=(isset($_GET['mode']) && $_GET['mode']==='debug');
+
+// if debug mode, js is not cached; otherwise cached for 10 days.
+$expiresOffset = $debugMode ? -10000 : 3600 * 24 * 10; //no cache
+
+//allowed libraries
+$library = array('prado', 'effects', 'ajax', 'validator', 'logger', 'datepicker', 'rico', 'colorpicker');
+
+$param = isset($_GET['js']) ? $_GET['js'] : '';
+
+//check for proper matching parameters, otherwise exit;
+if(preg_match('/(\w)+(,\w+)*/', $param)) $js = explode(',', $param); else exit();
+foreach($js as $lib) if(!in_array($lib, $library)) exit();
+
+// Only gzip the contents if clients and server support it
+if (isset($_SERVER['HTTP_ACCEPT_ENCODING']))
+ $encodings = explode(',', strtolower($_SERVER['HTTP_ACCEPT_ENCODING']));
+else
+ $encodings = array();
+
+// Check for gzip header or northon internet securities
+if ((in_array('gzip', $encodings) || isset($_SERVER['---------------']))
+ && function_exists('ob_gzhandler') && !ini_get('zlib.output_compression')
+ && ini_get('output_handler') != 'ob_gzhandler')
+ ob_start("ob_gzhandler");
+
+// Output rest of headers
+header('Content-type: text/javascript; charset: UTF-8');
+// header("Cache-Control: must-revalidate");
+header('Vary: Accept-Encoding'); // Handle proxies
+header('Expires: ' . @gmdate('D, d M Y H:i:s', @time() + $expiresOffset) . ' GMT');
+
+if ($debugMode)
+{
+ foreach($js as $lib)
+ {
+ $file = realpath($lib.'.js');
+ if(is_file($file))
+ echo file_get_contents($file);
+ else //log missings files to console logger
+ {
+ echo 'setTimeout(function(){ if(Logger) Logger.error("Missing file", "'.$lib.'.js"); }, 1000);';
+ error_log("Unable to find asset file {$lib}.js");
+ }
+ }
+}
+else
+{
+ foreach($js as $lib)
+ echo file_get_contents($lib.'.js');
+}
+
+?> \ No newline at end of file