summaryrefslogtreecommitdiff
path: root/core/helpers
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-03-26 06:32:48 +0000
committerBharat Mediratta <bharat@menalto.com>2009-03-26 06:32:48 +0000
commit15eb1a9c8d7ff2cd02e7a65e061bd1c9333ffdf9 (patch)
tree92da49844f38dad62c5b14625b40dd9a1c2a3d52 /core/helpers
parent09243aa72ec1ae06d6053d15f185a096591d85b9 (diff)
Replace iterators with stack based scanner, which we can serialize into the task context.
Diffstat (limited to 'core/helpers')
-rw-r--r--core/helpers/l10n_scanner.php57
1 files changed, 23 insertions, 34 deletions
diff --git a/core/helpers/l10n_scanner.php b/core/helpers/l10n_scanner.php
index 89cd3337..af2c04cf 100644
--- a/core/helpers/l10n_scanner.php
+++ b/core/helpers/l10n_scanner.php
@@ -27,17 +27,31 @@ class l10n_scanner_Core {
// @todo Report progress via callback
static function update_index() {
- // Index all files
- $dir = new L10n_Scanner_File_Filter_Iterator(
- new RecursiveIteratorIterator(
- new L10n_Scanner_Directory_Filter_Iterator(
- new RecursiveDirectoryIterator(DOCROOT))));
- foreach ($dir as $file) {
- if (pathinfo($file->getFilename(), PATHINFO_EXTENSION) == "php") {
- l10n_scanner::_scan_php_file($file);
+ $stack = array(DOCROOT . "core",
+ DOCROOT . "modules",
+ DOCROOT . "themes",
+ DOCROOT . "installer");
+
+ while ($stack) {
+ $path = array_pop($stack);
+ if (basename($path) == "tests") {
+ continue;
+ }
+
+ if (is_dir($path)) {
+ $stack = array_merge($stack, glob("$path/*"));
} else {
- l10n_scanner::_scan_info_file($file);
+ switch (pathinfo($path, PATHINFO_EXTENSION)) {
+ case "php":
+ l10n_scanner::_scan_php_file($path);
+ break;
+
+ case "info":
+ l10n_scanner::_scan_info_file($path);
+ break;
+ }
}
+ flush();
}
}
@@ -155,28 +169,3 @@ class l10n_scanner_Core {
return addcslashes($str, "\0..\37\\\"");
}
}
-
-class L10n_Scanner_Directory_Filter_Iterator extends RecursiveFilterIterator {
- function accept() {
- if ($this->getInnerIterator()->isFile()) {
- return true;
- }
-
- // Skip anything that doesn't need to be localized.
- $folder = $this->getInnerIterator()->getFilename();
- $path_name = $this->getInnerIterator()->getPathName();
- return !(
- $folder == ".svn" ||
- $folder == "tests" ||
- strpos($path_name, DOCROOT . "var") !== false ||
- strpos($path_name . "/", SYSPATH) !== false);
- }
-}
-
-class L10n_Scanner_File_Filter_Iterator extends FilterIterator {
- function accept() {
- // Skip anything that doesn't need to be localized.
- $filename = $this->getInnerIterator()->getFilename();
- return in_array(pathinfo($filename, PATHINFO_EXTENSION), array("php", "info"));
- }
-}