new experimental version of compile_directory method

This commit is contained in:
Uwe.Tews
2009-10-17 14:40:02 +00:00
parent 72a04fe699
commit 5b554f80a4

View File

@@ -16,7 +16,7 @@
* @param string $dir_name name of directories * @param string $dir_name name of directories
* @return integer number of template files deleted * @return integer number of template files deleted
*/ */
function compile_directory($smarty, $dir_name = null, $extention = '.tpl') function compile_directory($smarty, $extention = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
{ {
function _get_time() function _get_time()
{ {
@@ -24,37 +24,46 @@ function compile_directory($smarty, $dir_name = null, $extention = '.tpl')
$_mtime = explode(" ", $_mtime); $_mtime = explode(" ", $_mtime);
return (double)($_mtime[1]) + (double)($_mtime[0]); return (double)($_mtime[1]) + (double)($_mtime[0]);
} }
// set default directory // set default directory
if ($dir_name == null) { if ($dir_name === null) {
$dir_name = $smarty->template_dir; $dir_name = $smarty->template_dir;
} }
// switch off time limit // switch off time limit
if (function_exists('set_time_limit')) { if (function_exists('set_time_limit')) {
@set_time_limit(0); @set_time_limit($time_limit);
} }
$smarty->force_compile = $force_compile;
$smarty->force_compile = true;
$_count = 0; $_count = 0;
$_error_count = 0;
// loop over array of template directories // loop over array of template directories
foreach ($dir_name as $_dir) { foreach((array)$smarty->template_dir as $_dir) {
$_compileDirs = new RecursiveDirectoryIterator($_dir); $_compileDirs = new RecursiveDirectoryIterator($_dir);
$_compile = new RecursiveIteratorIterator($_compileDirs); $_compile = new RecursiveIteratorIterator($_compileDirs);
foreach ($_compile as $_fileinfo) { foreach ($_compile as $_fileinfo) {
if (strpos($_fileinfo, '.svn') !== false) continue; if (strpos($_fileinfo, '.svn') !== false) continue;
$_file = $_fileinfo->getFilename(); $_file = $_fileinfo->getFilename();
if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue; if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
echo '<br>' . $_fileinfo->getPath().'\\'.$_file; if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
$_template_file = $_file;
} else {
$_template_file = substr($_fileinfo->getPath(), strlen($_dir)) . '\\' . $_file;
}
echo '<br>', $_dir, '---', $_template_file;
flush(); flush();
$_start_time = _get_time(); $_start_time = _get_time();
try { try {
$_tpl = $smarty->createTemplate($_file); $_tpl = $smarty->createTemplate($_template_file);
$_tpl->getCompiledTemplate(); $_tpl->getCompiledTemplate();
} }
catch (Exception $e) { catch (Exception $e) {
echo 'Error: ', $e->getMessage(), "<br><br>"; echo 'Error: ', $e->getMessage(), "<br><br>";
$_error_count++;
} }
echo ' done in ', _get_time() - $_start_time, ' seconds'; echo ' done in ', _get_time() - $_start_time, ' seconds';
if ($max_errors !== null && $_error_count == $max_errors) {
echo '<br><br>too many errors';
exit();
}
} }
} }
return $_count; return $_count;