summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2009-02-18 15:07:27 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2009-02-18 15:07:27 +0000
commitc03b4c540823c8e9179fdcd93302a7630bbf0d94 (patch)
tree29d354e36433b2b93e3eaa30ad1ead4a7255d8f5 /includes
parentfb7347bc9d260193f00619fed4b9681670595dc4 (diff)
downloadbrdo-c03b4c540823c8e9179fdcd93302a7630bbf0d94.tar.gz
brdo-c03b4c540823c8e9179fdcd93302a7630bbf0d94.tar.bz2
#255551 by drewish and c960657: Array-itize file_scan_directory()'s parameters (DX improvement).
Diffstat (limited to 'includes')
-rw-r--r--includes/common.inc6
-rw-r--r--includes/file.inc70
-rw-r--r--includes/install.inc2
-rw-r--r--includes/locale.inc4
4 files changed, 48 insertions, 34 deletions
diff --git a/includes/common.inc b/includes/common.inc
index 806ae97e0..2024a25c9 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -2315,7 +2315,7 @@ function _drupal_load_stylesheet($matches) {
* Delete all cached CSS files.
*/
function drupal_clear_css_cache() {
- file_scan_directory(file_create_path('css'), '/.*/', '/(\.\.?|CVS)$/', 'file_unmanaged_delete', TRUE);
+ file_scan_directory(file_create_path('css'), '/.*/', array('callback' => 'file_unmanaged_delete'));
}
/**
@@ -2779,7 +2779,7 @@ function drupal_build_js_cache($files, $filename) {
* Delete all cached JS files.
*/
function drupal_clear_js_cache() {
- file_scan_directory(file_create_path('js'), '/.*/', '/(\.\.?|CVS)$/', 'file_unmanaged_delete', TRUE);
+ file_scan_directory(file_create_path('js'), '/.*/', array('callback' => 'file_unmanaged_delete'));
variable_set('javascript_parsed', array());
}
@@ -3148,7 +3148,7 @@ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1)
// Get current list of items
foreach ($searchdir as $dir) {
- $files = array_merge($files, file_scan_directory($dir, $mask, '/(\.\.?|CVS)$/', 0, TRUE, $key, $min_depth));
+ $files = array_merge($files, file_scan_directory($dir, $mask, array('key' => $key, 'min_depth' => $min_depth)));
}
return $files;
diff --git a/includes/file.inc b/includes/file.inc
index 6c865eeaf..e0d828de7 100644
--- a/includes/file.inc
+++ b/includes/file.inc
@@ -1382,51 +1382,65 @@ function file_download() {
* The base directory for the scan, without trailing slash.
* @param $mask
* The preg_match() regular expression of the files to find.
- * @param $nomask
- * The preg_match() regular expression of the files to ignore.
- * @param $callback
- * The callback function to call for each match.
- * @param $recurse
- * When TRUE, the directory scan will recurse the entire tree
- * starting at the provided directory.
- * @param $key
- * The key to be used for the returned array of files. Possible
- * values are "filename", for the path starting with $dir,
- * "basename", for the basename of the file, and "name" for the name
- * of the file without an extension.
- * @param $min_depth
- * Minimum depth of directories to return files from.
+ * @param $options
+ * An associative array of additional options, with the following keys:
+ * - 'nomask'
+ * The preg_match() regular expression of the files to ignore. Defaults to
+ * '/(\.\.?|CVS)$/'.
+ * - 'callback'
+ * The callback function to call for each match. There is no default
+ * callback.
+ * - 'recurse'
+ * When TRUE, the directory scan will recurse the entire tree starting at
+ * the provided directory. Defaults to TRUE.
+ * - 'key'
+ * The key to be used for the returned array of files. Possible values are
+ * "filename", for the path starting with $dir, "basename", for the
+ * basename of the file, and "name" for the name of the file without an
+ * extension. Defaults to 'filename'.
+ * - 'min_depth'
+ * Minimum depth of directories to return files from. Defaults to 0.
* @param $depth
* Current depth of recursion. This parameter is only used internally and
* should not be passed.
* @return
* An associative array (keyed on the provided key) of objects with
- * "path", "basename", and "name" members corresponding to the
+ * "filename", "basename", and "name" members corresponding to the
* matching files.
*/
-function file_scan_directory($dir, $mask, $nomask = '/(\.\.?|CVS)$/', $callback = 0, $recurse = TRUE, $key = 'filename', $min_depth = 0, $depth = 0) {
- $key = (in_array($key, array('filename', 'basename', 'name')) ? $key : 'filename');
+function file_scan_directory($dir, $mask, $options = array(), $depth = 0) {
+ // Merge in defaults.
+ $options += array(
+ 'nomask' => '/(\.\.?|CVS)$/',
+ 'callback' => 0,
+ 'recurse' => TRUE,
+ 'key' => 'filename',
+ 'min_depth' => 0,
+ );
+
+ $options['key'] = (in_array($options['key'], array('filename', 'basename', 'name')) ? $options['key'] : 'filename');
$files = array();
if (is_dir($dir) && $handle = opendir($dir)) {
while (FALSE !== ($file = readdir($handle))) {
- if (!preg_match($nomask, $file) && $file[0] != '.') {
- if (is_dir("$dir/$file") && $recurse) {
+ if (!preg_match($options['nomask'], $file) && $file[0] != '.') {
+ if (is_dir("$dir/$file") && $options['recurse']) {
// Give priority to files in this folder by merging them in after any subdirectory files.
- $files = array_merge(file_scan_directory("$dir/$file", $mask, $nomask, $callback, $recurse, $key, $min_depth, $depth + 1), $files);
+ $files = array_merge(file_scan_directory("$dir/$file", $mask, $options, $depth + 1), $files);
}
- elseif ($depth >= $min_depth && preg_match($mask, $file)) {
+ elseif ($depth >= $options['min_depth'] && preg_match($mask, $file)) {
// Always use this match over anything already set in $files with the
- // same $$key.
+ // same $$options['key'].
$filename = "$dir/$file";
$basename = basename($file);
$name = substr($basename, 0, strrpos($basename, '.'));
- $files[$$key] = new stdClass();
- $files[$$key]->filename = $filename;
- $files[$$key]->basename = $basename;
- $files[$$key]->name = $name;
- if ($callback) {
- $callback($filename);
+ $files[${$options['key']}] = (object) array(
+ 'filename' => $filename,
+ 'basename' => $basename,
+ 'name' => $name,
+ );
+ if ($options['callback']) {
+ $options['callback']($filename);
}
}
}
diff --git a/includes/install.inc b/includes/install.inc
index f2721aa1d..36d1b6bcb 100644
--- a/includes/install.inc
+++ b/includes/install.inc
@@ -215,7 +215,7 @@ function drupal_detect_database_types() {
// Because we have no registry yet, we need to also include the install.inc
// file for the driver explicitly.
- foreach (file_scan_directory(DRUPAL_ROOT . '/includes/database', '/^[a-z]*$/i', '/(\.\.?|CVS)$/', 0, FALSE) as $file) {
+ foreach (file_scan_directory(DRUPAL_ROOT . '/includes/database', '/^[a-z]*$/i', array('recurse' => FALSE)) as $file) {
include_once "{$file->filename}/install.inc";
include_once "{$file->filename}/database.inc";
$drivers[$file->basename] = $file->filename;
diff --git a/includes/locale.inc b/includes/locale.inc
index 46f268ed6..10e9729bf 100644
--- a/includes/locale.inc
+++ b/includes/locale.inc
@@ -2617,7 +2617,7 @@ function locale_batch_by_language($langcode, $finished = NULL, $skip = array())
// with names ending with $langcode.po. This allows for filenames
// like node-module.de.po to let translators use small files and
// be able to import in smaller chunks.
- $files = array_merge($files, file_scan_directory(dirname($component->filename) . '/translations', '/(^|\.)' . $langcode . '\.po$/', '/(\.\.?|CVS)$/', 0, FALSE));
+ $files = array_merge($files, file_scan_directory(dirname($component->filename) . '/translations', '/(^|\.)' . $langcode . '\.po$/', array('recurse' => FALSE)));
$components[] = $component->name;
}
@@ -2649,7 +2649,7 @@ function locale_batch_by_component($components, $finished = '_locale_batch_syste
// as $langcode.po or with names ending with $langcode.po. This allows
// for filenames like node-module.de.po to let translators use small
// files and be able to import in smaller chunks.
- $files = array_merge($files, file_scan_directory(dirname($component->filename) . '/translations', '/(^|\.)(' . $language_list . ')\.po$/', '/(\.\.?|CVS)$/', 0, FALSE));
+ $files = array_merge($files, file_scan_directory(dirname($component->filename) . '/translations', '/(^|\.)(' . $language_list . ')\.po$/', array('recurse' => FALSE)));
}
}
return _locale_batch_build($files, $finished);