CI =& get_instance(); list($this->controller) = $this->methodParams($params, array("")); $this->init(); $this->compileTags(); }//constructor private function methodParams($params, $defaults){ $returnArray = array(); if( !isset($params) ){ $params = array(); } else if ( !is_array($params) ){ //not sure why this happens but the $params var sometimes is a scalar value //and it looks like CI is doing this on its own $params = array($params); }//if-else if if( !isset($defaults) ){ $defaults = array(); }//if foreach( $params as $thisParam ){ $returnArray[] = $thisParam; }//foreach if( count($returnArray) < count($defaults) ){ $start = count($returnArray); $end = count($defaults); for( $i=$start; $i<$end; $i++ ){ $returnArray[] = $defaults[$i]; }//for }//if return $returnArray; }//method methodParams private function init(){ //from minify examples: //Add the location of Minify's "lib" directory to the include_path ini_set('include_path', '/path/to/minify/lib/dir' . PATH_SEPARATOR . ini_get('include_path') ); require_once 'Minify/Build.php'; require_once 'Minify.php'; }//method init private function compileTags(){ $config = $this->CI->config->item('minify'); //these are on all pages $this->addFiles($config['global']); if( !isset($config[$this->controller]) ){ return; }//if //controller-specific pages $this->addFiles($config[$this->controller]); }//method compileTags private function addFiles($arr){ foreach( $arr as $key=>$filename){ if( preg_match('/.*js/', $filename) ){ $this->addJSFile($filename); } else if( preg_match('/.*css/', $filename) ){ $this->addCSSFile($filename); }//if-else if }//foreach }//method addFiles private function addJSFile($fileName){ //example of '/path/to/js/files': "/home/public_html/mysite.com/script/" $this->jsFilesNeed['/path/to/js/files'.$fileName] = 'no-dups'; }//method addJSFile private function addCSSFile($fileName){ //example of '/path/to/css/files': "/home/public_html/mysite.com/style/" $this->cssFilesNeed['/path/to/css/files'.$fileName] = 'no-dups'; }//method addCSSFile private function getJSFiles(){ $jsFiles = array(); foreach( $this->jsFilesNeed as $name=>$blah ){ $jsFiles[] = $name; }//foreach return $jsFiles; }//method getJSFiles public function jsTag($str = ""){ //make sure convert this to CI-type URL (no "?") $jsBuild = new Minify_Build( $this->getJSFiles() ); $fileName = str_replace('/', '-', $this->controller); $url = site_url('includetag/js/' . $this->convertController() ); return str_replace('?', '/', $jsBuild->uri($url)); }//method jsTag private function getCSSFiles(){ $cssFiles = array(); foreach( $this->cssFilesNeed as $name=>$blah ){ $cssFiles[] = $name; }//foreach return $cssFiles; }//method getCSSFiles public function cssTag($str = ""){ //make sure convert this to CI-type URL (no "?") $cssBuild = new Minify_Build( $this->getCSSFiles() ); $url = site_url('includetag/css/' . $this->convertController() ); return str_replace('?', '/', $cssBuild->uri($url)); }//method cssTag private function convertController(){ return str_replace('/', '-', $this->controller); }//method convertController public function serveJS($fileName){ $groupSources = array($fileName => $this->getJSFiles() ); Minify::setCache('/path/to/minify/cache/dir'); Minify::serve('Groups', array('groups' => $groupSources ,'maxAge' => 31536000 //1 year )); }//method serve public function serveCSS($fileName){ $groupSources = array($fileName => $this->getCSSFiles() ); Minify::setCache('/path/to/minify/cache/dir'); Minify::serve('Groups', array('groups' => $groupSources ,'maxAge' => 31536000 //1 year )); }//method serveCSS }//class MY_Includes ?>