includes/clientside/jsres.php
changeset 1 fe660c52c48f
child 16 64e0d3d4cf14
equal deleted inserted replaced
0:902822492a68 1:fe660c52c48f
       
     1 <?php
       
     2 
       
     3 /*
       
     4  * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
       
     5  * Version 1.0 (Banshee)
       
     6  * Copyright (C) 2006-2007 Dan Fuhry
       
     7  * jsres.php - the Enano client-side runtime, a.k.a. AJAX on steroids
       
     8  *
       
     9  * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
       
    10  * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
       
    11  *
       
    12  * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
       
    13  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
       
    14  */
       
    15 
       
    16 if(!isset($_GET['title'])) $_GET['title'] = 'null';
       
    17 require('../common.php');
       
    18 
       
    19 define('ENABLE_COMPRESSION', '');
       
    20 
       
    21 ob_start();
       
    22 header('Content-type: text/javascript');
       
    23 
       
    24 $file = ( isset($_GET['file']) ) ? $_GET['file'] : 'enano-lib-basic.js';
       
    25 
       
    26 if(!preg_match('/^([a-z0-9_-]+)\.js$/i', $file))
       
    27   die('// ERROR: Hacking attempt');
       
    28 
       
    29 $fname = './static/' . $file;
       
    30 if ( !file_exists($fname) )
       
    31   die('// ERROR: File not found: ' . $file);
       
    32 
       
    33 $everything = file_get_contents($fname);
       
    34 
       
    35 $mtime = filemtime($fname);
       
    36 header('Last-Modified: '.date('D, d M Y H:i:s T', $mtime));
       
    37 header('Content-disposition: attachment; filename=' . $file);
       
    38 
       
    39 if(defined('ENABLE_COMPRESSION'))
       
    40 {
       
    41   echo "/*
       
    42  * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
       
    43  * Version 1.0 (Banshee)
       
    44  * [Aggressively compressed] Javascript client code
       
    45  * Copyright (C) 2006-2007 Dan Fuhry
       
    46  * Enano is Free Software, licensed under the GNU General Public License; see http://www.enanocms.org/ for details.
       
    47  */
       
    48 
       
    49 ";
       
    50   
       
    51   $cache_file = ENANO_ROOT . '/cache/jsres-' . $file . '.php';
       
    52   
       
    53   if ( file_exists($cache_file) )
       
    54   {
       
    55     $cached = file_get_contents ( $cache_file );
       
    56     $data = unserialize ( $cached );
       
    57     if ( $data['md5'] == md5 ( $everything ) )
       
    58     {
       
    59       echo "// The code in this file was fetched from cache\n\n";
       
    60       echo $data['code'];
       
    61       exit;
       
    62     }
       
    63   }
       
    64   
       
    65   if ( getConfig('cache_thumbs') == '1' )
       
    66   {
       
    67     $js_compressor = new JavascriptCompressor();
       
    68     $packed = $js_compressor->getPacked($everything);
       
    69     $data = Array(
       
    70       'md5' => md5 ( $everything ),
       
    71       'code' => $packed
       
    72       );
       
    73     echo "// The code in this file was fetched from the static scripts and compressed (packed code cached)\n\n";
       
    74     echo $packed;
       
    75     
       
    76     $fh = @fopen($cache_file, 'w');
       
    77     if (!$fh)
       
    78       die('// ERROR: Can\'t open cache file for writing');
       
    79     fwrite($fh, serialize ( $data ) );
       
    80     fclose($fh);
       
    81     
       
    82     exit;
       
    83   }
       
    84   
       
    85   echo "// The code in this file was not compressed because packed-script caching is disabled\n\n";
       
    86   echo $everything;
       
    87   
       
    88 }
       
    89 else
       
    90 {
       
    91   echo "// The code in this file was not compressed because all script compression is disabled\n\n";
       
    92   echo $everything;
       
    93 }
       
    94 ?>