Index: branches/5.2.x/core/kernel/nparser/compiler.php =================================================================== diff -u -N -r14244 -r14698 --- branches/5.2.x/core/kernel/nparser/compiler.php (.../compiler.php) (revision 14244) +++ branches/5.2.x/core/kernel/nparser/compiler.php (.../compiler.php) (revision 14698) @@ -1,6 +1,6 @@ Application->RecallVar('templates_to_compile'); - if (!$templates) { + if ( !$templates ) { // build $templates $templates = $this->FindTemplates(); } else { $templates = unserialize($templates); } + $total = count($templates); $current = $this->Application->RecallVar('current_template_to_compile'); - if (!$current) $current = 0; + if ( !$current ) { + $current = 0; + } - if ($errors = $this->Application->RecallVar('compile_errors')) { + $errors = $this->Application->RecallVar('compile_errors'); + if ( $errors ) { $this->Errors = unserialize($errors); } kUtil::safeDefine('DBG_NPARSER_FORCE_COMPILE', 1); $i = $current; $this->Application->InitParser(true); - while ($i < $total && $i < ($current + 20)) { + + while ( $i < $total && $i < ($current + 20) ) { $a_template = $templates[$i]; try { $this->Application->Parser->CheckTemplate($a_template['module'] . '/' . $a_template['path']); - } - catch (ParserException $e) { + } catch ( ParserException $e ) { $this->Errors[] = Array ('msg' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()); } @@ -59,11 +63,12 @@ $this->Application->StoreVar('compile_errors', serialize($this->Errors)); $res = floor(($current / $total) * 100); - if ($res == 100 || $current >= $total) { + if ( $res == 100 || $current >= $total ) { $this->Application->RemoveVar('templates_to_compile'); $this->Application->RemoveVar('current_template_to_compile'); $this->Application->Redirect($this->Application->GetVar('finish_template')); } + echo $res; } @@ -102,24 +107,34 @@ return $this->Templates; } - function FindTemplateFiles($folderPath, $options) + /** + * Recursively collects all TPL file across whole installation + * + * @param string $folder_path + * @param Array $options + * @return void + */ + function FindTemplateFiles($folder_path, $options) { // if FULL_PATH = "/" ensure, that all "/" in $folderPath are not deleted - $reg_exp = '/^'.preg_quote(FULL_PATH, '/').'/'; - $folderPath = preg_replace($reg_exp, '', $folderPath, 1); // this make sense, since $folderPath may NOT contain FULL_PATH + $reg_exp = '/^' . preg_quote(FULL_PATH, '/') . '/'; + $folder_path = preg_replace($reg_exp, '', $folder_path, 1); // this make sense, since $folderPath may NOT contain FULL_PATH - $fh = opendir(FULL_PATH.$folderPath); - while (($sub_folder = readdir($fh))) { - $full_path = FULL_PATH.$folderPath.'/'.$sub_folder; - $base_name = basename($full_path); - if (is_dir($full_path) && $base_name != '.' && $base_name != '..') { + $iterator = new DirectoryIterator(FULL_PATH . $folder_path); + /* @var $file_info DirectoryIterator */ + + foreach ($iterator as $file_info) { + $filename = $file_info->getFilename(); + $full_path = $file_info->getPathname(); + + if ( $file_info->isDir() && !$file_info->isDot() && $filename != '.svn' && $filename != 'CVS' ) { $this->FindTemplateFiles($full_path, $options); } - else { - $info = pathinfo($full_path); - if (isset($info['extension']) && $info['extension'] == 'tpl') { - $this->Templates[] = array('module' => mb_strtolower($options['Name']), 'path' => str_replace(FULL_PATH . $options['Path'] . '/', '', preg_replace('/\.tpl$/', '', $full_path))); - } + elseif ( pathinfo($full_path, PATHINFO_EXTENSION) == 'tpl' ) { + $this->Templates[] = Array ( + 'module' => mb_strtolower( $options['Name'] ), + 'path' => str_replace(FULL_PATH . $options['Path'] . '/', '', preg_replace('/\.tpl$/', '', $full_path)) + ); } } }