/** * Compile all config files * * @param string $extension config file name extension * @param bool $force_compile force all to recompile * @param int $time_limit set maximum execution time * @param int $max_errors set maximum allowed errors * @param Smarty $smarty Smarty instance * @return integer number of config files compiled */ public static function compileAllConfig($extention, $force_compile, $time_limit, $max_errors, Smarty $smarty) { // switch off time limit if (function_exists('set_time_limit')) { @set_time_limit($time_limit); } $smarty->force_compile = $force_compile; $_count = 0; $_error_count = 0; // loop over array of template directories foreach ($smarty->getConfigDir() as $_dir) { $_compileDirs = new RecursiveDirectoryIterator($_dir); $_compile = new RecursiveIteratorIterator($_compileDirs); foreach ($_compile as $_fileinfo) { if (substr($_fileinfo->getBasename(), 0, 1) == '.' || strpos($_fileinfo, '.svn') !== false) { continue; } $_file = $_fileinfo->getFilename(); if (!substr_compare($_file, $extention, -strlen($extention)) == 0) { continue; } if ($_fileinfo->getPath() == substr($_dir, 0, -1)) { $_config_file = $_file; } else { $_config_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file; } echo '<br>', $_dir, '---', $_config_file; flush(); $_start_time = microtime(true); try { $_config = new Smarty_Internal_Config($_config_file, $smarty); if ($_config->mustCompile()) { $_config->compileConfigSource(); echo ' compiled in ', microtime(true) - $_start_time, ' seconds'; flush(); } else { echo ' is up to date'; flush(); } } catch (Exception $e) { echo 'Error: ', $e->getMessage(), "<br><br>"; $_error_count++; } if ($max_errors !== null && $_error_count == $max_errors) { echo '<br><br>too many errors'; exit; } } } return $_count; }