Ejemplo n.º 1
0
 function t3_init()
 {
     t3import('core.parameter');
     t3import('core.extendable');
     t3import('core.template');
     t3import('core.basetemplate');
     t3import('core.cache');
     t3import('core.head');
     t3import('core.hook');
     t3import('core.joomla.view');
     if (!class_exists('JModuleHelper', false)) {
         t3import('core.joomla.modulehelper');
     }
     t3import('core.joomla.pagination');
     //Load template language
     $this->loadLanguage('tpl_' . T3_ACTIVE_TEMPLATE, JPATH_SITE);
     $params = T3Common::get_template_based_params();
     //instance cache object.
     $devmode = $params ? $params->get('devmode', '0') == '1' : false;
     T3Cache::getInstance($devmode);
     //Check if enable T3 info mode. Enable by default (if not set)
     if ($params->get('infomode', 1) == 1) {
         if (!JRequest::getCmd('t3info') && JRequest::getCmd('tp')) {
             JRequest::setVar('t3info', JRequest::getCmd('tp'));
         }
     }
     $key = T3Cache::getPageKey();
     $data = null;
     $user =& JFactory::getUser();
     if (!$devmode && JRequest::getCmd('cache') != 'no') {
         T3Cache::setCaching(true);
         JResponse::allowCache(true);
     }
     $data = T3Cache::get($key);
     if ($data) {
         if (!preg_match('#<jdoc:include\\ type="([^"]+)" (.*)\\/>#iU', $data)) {
             $mainframe = JFactory::getApplication();
             $token = JUtility::getToken();
             $search = '#<input type="hidden" name="[0-9a-f]{32}" value="1" />#';
             $replacement = '<input type="hidden" name="' . $token . '" value="1" />';
             $data = preg_replace($search, $replacement, $data);
             JResponse::setBody($data);
             echo JResponse::toString($mainframe->getCfg('gzip'));
             if (JDEBUG) {
                 global $_PROFILER;
                 $_PROFILER->mark('afterCache');
                 echo implode('', $_PROFILER->getBuffer());
             }
             $mainframe->close();
         }
     }
     //Preload template
     t3import('core.preload');
     $preload = T3Preload::getInstance();
     $preload->load();
     $doc =& JFactory::getDocument();
     $t3 = T3Template::getInstance($doc);
     $t3->_html = $data;
 }
Ejemplo n.º 2
0
 function get_file($key)
 {
     if (!$key) {
         return null;
     }
     $t3cache = T3Cache::getInstance();
     $data = null;
     $path = $t3cache->cache_assets_path() . DS . $key;
     if (is_file($path)) {
         $data = @file_get_contents($path);
     }
     return $data;
 }
Ejemplo n.º 3
0
 function optimizecss($css_urls)
 {
     $content = '';
     $optimize_css = T3Parameter::get('optimize_css', 2);
     if (!$optimize_css) {
         return $css_urls;
     }
     //no optimize css
     $output = array();
     $optimize_exclude = trim(T3Parameter::get('optimize_exclude', ''));
     $optimize_exclude_regex = null;
     if ($optimize_exclude) {
         $optimize_exclude_regex = '#' . preg_replace('#[\\r\\n]+#', '|', preg_quote($optimize_exclude)) . '#';
     }
     $files = array();
     $t3cache = T3Cache::getInstance();
     $cachepath = T3Path::path(T3Parameter::get('optimize_folder', 't3-assets'));
     $needupdate = false;
     $filelimit = $optimize_css == 1 ? 20 : 999;
     //limit files import into a css file (in IE7, only first 30 css files are loaded). other case, load unlimited
     $filecount = 0;
     jimport('joomla.filesystem.file');
     foreach ($css_urls as $theme => $urls) {
         foreach ($urls as $url) {
             $ignore = false;
             $import = false;
             $importupdate = false;
             //check ignore to optimize
             // - not a local file
             // - not a css file
             // - in ignore list
             if (!$url[0]) {
                 $ignore = true;
             } else {
                 if (!preg_match('#\\.css$#', $url[0])) {
                     $ignore = true;
                 } else {
                     if ($optimize_exclude_regex && preg_match($optimize_exclude_regex, $url[1])) {
                         $ignore = true;
                     }
                 }
             }
             if (!$ignore && $optimize_css > 1) {
                 //check if need update. for css, the cache should be [filename] or [filename]-import
                 //[filename]-import - for the case there's @import inside
                 //in the ignore of @import, file still optimize but will be put into a sigle file
                 $cfile = $cachepath . DS . md5($url[0]) . '.' . basename($url[0]);
                 if (!(is_file($cfile) && @filemtime($url[0]) < @filemtime($cfile)) && !(is_file($cfile . '-import') && @filemtime($url[0]) < @filemtime($cfile . '-import'))) {
                     //Need update
                     $data = T3Head::compresscss(@JFile::read($url[0]), $url[1]);
                     //check if contain @import
                     if (preg_match('#@import\\s+.+#', $data)) {
                         $import = true;
                         $importupdate = true;
                         $cfile = $cfile . '-import';
                     }
                     //delete old file if exists
                     @JFile::delete($cfile);
                     @JFile::delete($cfile . '-import');
                     //write to cache file
                     @JFile::write($cfile, $data);
                     //make a flag for updating cache file
                     $needupdate = true;
                 } else {
                     if (is_file($cfile . '-import')) {
                         $import = true;
                         $importupdate = false;
                         $cfile = $cfile . '-import';
                     }
                 }
             }
             //match ignore file, or import file, or reach the limit: flush previous files out
             if ($ignore || $import || count($files) == $filelimit) {
                 if (count($files)) {
                     $ourl = T3Head::store_file2($files, 'css', $needupdate);
                     if (!$ourl) {
                         return $css_urls;
                     }
                     //put result into output
                     $output[] = array('', $ourl);
                 }
                 //reset the flag for file update
                 $needupdate = false;
                 $files = array();
             }
             //write out the @import file
             if ($import) {
                 $ourl = T3Head::store_file2(array(array($cfile, '')), 'css', $importupdate);
                 if (!$ourl) {
                     return $css_urls;
                 }
                 //put result into output
                 $output[] = array('', $ourl);
             } else {
                 if ($ignore) {
                     $output[] = $url;
                 } else {
                     if ($optimize_css > 1) {
                         $files[] = array($cfile, '');
                     } else {
                         $files[] = $url;
                     }
                 }
             }
         }
     }
     if (count($files)) {
         $ourl = T3Head::store_file2($files, 'css', $needupdate);
         if (!$ourl) {
             return $css_urls;
         }
         //put result into output
         $output[] = array('', $ourl);
     }
     return array($output);
 }