diff --git a/libs/sysplugins/method.compile_directory.php b/libs/sysplugins/method.compile_directory.php
index 624808f3..103d30d2 100644
--- a/libs/sysplugins/method.compile_directory.php
+++ b/libs/sysplugins/method.compile_directory.php
@@ -16,46 +16,55 @@
* @param string $dir_name name of directories
* @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()
{
$_mtime = microtime();
$_mtime = explode(" ", $_mtime);
return (double)($_mtime[1]) + (double)($_mtime[0]);
}
-
// set default directory
- if ($dir_name == null) {
+ if ($dir_name === null) {
$dir_name = $smarty->template_dir;
}
// switch off time limit
if (function_exists('set_time_limit')) {
- @set_time_limit(0);
+ @set_time_limit($time_limit);
}
-
- $smarty->force_compile = true;
- $_count = 0;
+ $smarty->force_compile = $force_compile;
+ $_count = 0;
+ $_error_count = 0;
// loop over array of template directories
- foreach ($dir_name as $_dir) {
+ foreach((array)$smarty->template_dir as $_dir) {
$_compileDirs = new RecursiveDirectoryIterator($_dir);
$_compile = new RecursiveIteratorIterator($_compileDirs);
foreach ($_compile as $_fileinfo) {
if (strpos($_fileinfo, '.svn') !== false) continue;
- $_file = $_fileinfo->getFilename();
- if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
- echo '
' . $_fileinfo->getPath().'\\'.$_file;
- flush();
- $_start_time = _get_time();
- try {
- $_tpl = $smarty->createTemplate($_file);
- $_tpl->getCompiledTemplate();
- }
- catch (Exception $e) {
- echo 'Error: ', $e->getMessage(), "
";
- }
- echo ' done in ',_get_time() - $_start_time,' seconds';
+ $_file = $_fileinfo->getFilename();
+ if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
+ if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
+ $_template_file = $_file;
+ } else {
+ $_template_file = substr($_fileinfo->getPath(), strlen($_dir)) . '\\' . $_file;
}
+ echo '
', $_dir, '---', $_template_file;
+ flush();
+ $_start_time = _get_time();
+ try {
+ $_tpl = $smarty->createTemplate($_template_file);
+ $_tpl->getCompiledTemplate();
+ }
+ catch (Exception $e) {
+ echo 'Error: ', $e->getMessage(), "
";
+ $_error_count++;
+ }
+ echo ' done in ', _get_time() - $_start_time, ' seconds';
+ if ($max_errors !== null && $_error_count == $max_errors) {
+ echo '
too many errors';
+ exit();
+ }
+ }
}
return $_count;
}