diff options
-rw-r--r-- | engine/lib/elgglib.php | 70 |
1 files changed, 39 insertions, 31 deletions
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index e7bdbe665..1bc05fca2 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -295,7 +295,36 @@ return false;
}
-
+ + /** + * Internal function for retrieving views used by elgg_view_tree + * + * @param unknown_type $dir + * @param unknown_type $base + * @return unknown + */ + function get_views($dir, $base) { + + $return = array(); + if (file_exists($dir) && is_dir($dir)) { + if ($handle = opendir($dir)) { + while ($view = readdir($handle)) { + if (!in_array($view, array('.','..','.svn','CVS'))) { + if (is_dir($dir . '/' . $view)) { + if ($val = get_views($dir . '/' . $view, $base . '/' . $view)) { + $return = array_merge($return, $val); + } + } else { + $view = str_replace('.php','',$view); + $return[] = $base . '/' . $view; + } + } + } + } + } + return $return; + } +
/**
* When given a partial view root (eg 'js' or 'page_elements'), returns an array of views underneath it
*
@@ -306,33 +335,12 @@ global $CONFIG;
static $treecache;
-
- function get_views($dir, $base) {
- $return = array();
- if (file_exists($dir) && is_dir($dir)) {
- if ($handle = opendir($dir)) {
- while ($view = readdir($handle)) {
- if (!in_array($view, array('.','..','.svn','CVS'))) {
- if (is_dir($dir . '/' . $view)) {
- if ($val = get_views($dir . '/' . $view, $base . '/' . $view)) {
- $return = array_merge($return, $val);
- }
- } else {
- $view = str_replace('.php','',$view);
- $return[] = $base . '/' . $view;
- }
- }
- }
- }
- }
- return $return;
- }
-
+
// Has the treecache been initialised?
- if (!isset($treecache)) $treecache = array();
+ if (!isset($treecache)) $treecache = array();
// A little light internal caching
if (!empty($treecache[$view_root])) return $treecache[$view_root];
-
+
// Examine $CONFIG->views->locations
if (isset($CONFIG->views->locations)) {
foreach($CONFIG->views->locations as $view => $path) {
@@ -342,18 +350,18 @@ }
}
}
-
+
// Now examine core
$location = $CONFIG->viewpath;
$viewtype = elgg_get_viewtype();
$root = $location . $viewtype . '/' . $view_root;
-
- if (file_exists($root) && is_dir($root)) {
- $val = get_views($root, $view_root);
- if (!is_array($treecache[$view_root])) $treecache[$view_root] = array();
+
+ if (file_exists($root) && is_dir($root)) {
+ $val = get_views($root, $view_root);
+ if (!is_array($treecache[$view_root])) $treecache[$view_root] = array();
$treecache[$view_root] = array_merge($treecache[$view_root], $val);
}
-
+
return $treecache[$view_root];
}
|