Code

Updated smarty
[gosa.git] / gosa-core / include / smarty / sysplugins / smarty_method_compile_directory.php
1 <?php
3 /**
4 * Smarty method compile_dir
5
6 * Compiles all template files in an given directory
7
8 * @package Smarty
9 * @subpackage SmartyMethod
10 * @author Uwe Tews 
11 */
13 /**
14 * Compile all template files
15
16 * @param string $dir_name name of directories
17 * @return integer number of template files deleted
18 */
19 function  Smarty_Method_Compile_Directory($smarty, $extention = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
20 {
21     function _get_time()
22     {
23         $_mtime = microtime();
24         $_mtime = explode(" ", $_mtime);
25         return (double)($_mtime[1]) + (double)($_mtime[0]);
26     } 
27     // set default directory
28     if ($dir_name === null) {
29         $dir_name = $smarty->template_dir;
30     } 
31     // switch off time limit
32     if (function_exists('set_time_limit')) {
33         @set_time_limit($time_limit);
34     } 
35     $smarty->force_compile = $force_compile;
36     $_count = 0;
37     $_error_count = 0; 
38     // loop over array of template directories
39     foreach((array)$smarty->template_dir as $_dir) {
40         $_compileDirs = new RecursiveDirectoryIterator($_dir);
41         $_compile = new RecursiveIteratorIterator($_compileDirs);
42         foreach ($_compile as $_fileinfo) {
43             if (strpos($_fileinfo, '.svn') !== false) continue;
44             $_file = $_fileinfo->getFilename();
45             if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
46             if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
47                 $_template_file = $_file;
48             } else {
49                 $_template_file = substr($_fileinfo->getPath(), strlen($_dir)) . '\\' . $_file;
50             } 
51             echo '<br>', $_dir, '---', $_template_file;
52             flush();
53             $_start_time = _get_time();
54             try {
55                 $_tpl = $smarty->createTemplate($_template_file);
56                 $_tpl->getCompiledTemplate();
57             } 
58             catch (Exception $e) {
59                 echo 'Error: ', $e->getMessage(), "<br><br>";
60                 $_error_count++;
61             } 
62             echo ' done in  ', _get_time() - $_start_time, ' seconds';
63             if ($max_errors !== null && $_error_count == $max_errors) {
64                 echo '<br><br>too many errors';
65                 exit();
66             } 
67         } 
68     } 
69     return $_count;
70
72 ?>