diff options
Diffstat (limited to 'engine/lib/elgglib.php')
| -rw-r--r-- | engine/lib/elgglib.php | 41 | 
1 files changed, 39 insertions, 2 deletions
| diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 110cafcab..9d0bae0b6 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -1473,6 +1473,8 @@ function autoregister_views($view_base, $folder, $base_location_path, $viewtype)  	if ($handle = opendir($folder)) {  		while ($view = readdir($handle)) {  			if (!in_array($view,array('.','..','.svn','CVS')) && !is_dir($folder . "/" . $view)) { +				// this includes png files because some icons are stored within view directories. +				// See commit [1705]  				if ((substr_count($view,".php") > 0) || (substr_count($view,".png") > 0)) {  					if (!empty($view_base)) {  						$view_base_new = $view_base . "/"; @@ -1480,9 +1482,9 @@ function autoregister_views($view_base, $folder, $base_location_path, $viewtype)  						$view_base_new = "";  					} -					set_view_location($view_base_new . str_replace(".php","",$view), $base_location_path, $viewtype); +					set_view_location($view_base_new . str_replace('.php', '', $view), $base_location_path, $viewtype);  				} -			} else if (!in_array($view,array('.','..','.svn','CVS')) && is_dir($folder . "/" . $view)) { +			} else if (!in_array($view, array('.', '..', '.svn', 'CVS')) && is_dir($folder . "/" . $view)) {  				if (!empty($view_base)) {  					$view_base_new = $view_base . "/";  				} else { @@ -1491,7 +1493,10 @@ function autoregister_views($view_base, $folder, $base_location_path, $viewtype)  				autoregister_views($view_base_new . $view, $folder . "/" . $view, $base_location_path, $viewtype);  			}  		} +		return TRUE;  	} + +	return FALSE;  }  /** @@ -3151,11 +3156,26 @@ function __elgg_shutdown_hook() {   * @return unknown_type   */  function elgg_init() { +	global $CONFIG; +  	// Page handler for JS  	register_page_handler('js','js_page_handler');  	// Register an event triggered at system shutdown  	register_shutdown_function('__elgg_shutdown_hook'); + +	// discover the built-in view types +	// @todo cache this +	$view_path = $CONFIG->viewpath; +	$CONFIG->view_types = array(); + +	$views = scandir($view_path); + +	foreach ($views as $view) { +		if ('.' !== substr($view, 0, 1) && is_dir($view_path . $view)) { +			$CONFIG->view_types[] = $view; +		} +	}  }  function elgg_walled_garden_index() { @@ -3342,6 +3362,11 @@ function elgg_http_url_is_identical($url1, $url2, $ignore_params = array('offset  	return TRUE;  } +/** + * Checks walled garden status upon Elgg init. + * + * @since 1.8 + */  function elgg_walled_garden() {  	global $CONFIG; @@ -3352,6 +3377,18 @@ function elgg_walled_garden() {  }  /** + * Checks if $view_type is valid on this installation. + * + * @param string $view_type + * @return bool + */ +function elgg_is_valid_view_type($view_type) { +	global $CONFIG; + +	return in_array($view_type, $CONFIG->view_types); +} + +/**   * Some useful constant definitions   */  define('ACCESS_DEFAULT', -1); | 
