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 ?>