diff options
Diffstat (limited to 'engine/lib/elgglib.php')
| -rw-r--r-- | engine/lib/elgglib.php | 320 | 
1 files changed, 314 insertions, 6 deletions
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index e6c71813d..e8d47eaca 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -214,7 +214,7 @@ function elgg_register_external_file($type, $url, $id, $location) {  	}  	if (!isset($CONFIG->externals[$type])) { -		$CONFIG->externals[$type] = array(); +		$CONFIG->externals[$type]  = array();  	}  	if (!isset($CONFIG->externals[$type][$location])) { @@ -387,6 +387,22 @@ function elgg_count_comments($entity) {  }  /** + * Returns all php files in a directory. + * + * @deprecated 1.7 Use elgg_get_file_list() instead + * + * @param string $directory  Directory to look in + * @param array  $exceptions Array of extensions (with .!) to ignore + * @param array  $list       A list files to include in the return + * + * @return array + */ +function get_library_files($directory, $exceptions = array(), $list = array()) { +	elgg_deprecated_notice('get_library_files() deprecated by elgg_get_file_list()', 1.7); +	return elgg_get_file_list($directory, $exceptions, $list, array('.php')); +} + +/**   * Returns a list of files in $directory.   *   * Only returns files.  Does not recurse into subdirs. @@ -476,7 +492,7 @@ $children_array = array()) {  	}  	if (!isset($CONFIG->registers[$register_name])) { -		$CONFIG->registers[$register_name] = array(); +		$CONFIG->registers[$register_name]  = array();  	}  	$subregister = new stdClass; @@ -552,6 +568,25 @@ function make_register_object($register_name, $register_value, $children_array =  }  /** + * If it exists, returns a particular register as an array + * + * @param string $register_name The name of the register + * + * @return array|false Depending on success + * @deprecated 1.8 + */ +function get_register($register_name) { +	elgg_deprecated_notice("get_register() has been deprecated", 1.8); +	global $CONFIG; + +	if (isset($CONFIG->registers[$register_name])) { +		return $CONFIG->registers[$register_name]; +	} + +	return false; +} + +/**   * Queues a message to be displayed.   *   * Messages will not be displayed immediately, but are stored in @@ -657,6 +692,33 @@ function register_error($error) {  }  /** + * Deprecated events core function. Code divided between elgg_register_event_handler() + * and trigger_elgg_event(). + * + * @param string  $event       The type of event (eg 'init', 'update', 'delete') + * @param string  $object_type The type of object (eg 'system', 'blog', 'user') + * @param string  $function    The name of the function that will handle the event + * @param int     $priority    Priority to call handler. Lower numbers called first (default 500) + * @param boolean $call        Set to true to call the event rather than add to it (default false) + * @param mixed   $object      Optionally, the object the event is being performed on (eg a user) + * + * @return true|false Depending on success + * @deprecated 1.8 Use explicit register/trigger event functions + */ +function events($event = "", $object_type = "", $function = "", $priority = 500, +$call = false, $object = null) { + +	elgg_deprecated_notice('events() has been deprecated.', 1.8); + +	// leaving this here just in case someone was directly calling this internal function +	if (!$call) { +		return elgg_register_event_handler($event, $object_type, $function, $priority); +	} else { +		return trigger_elgg_event($event, $object_type, $object); +	} +} + +/**   * Register a callback as an Elgg event handler.   *   * Events are emitted by Elgg when certain actions occur.  Plugins @@ -747,6 +809,14 @@ function elgg_register_event_handler($event, $object_type, $callback, $priority  }  /** + * @deprecated 1.8 Use elgg_register_event_handler() instead + */ +function register_elgg_event_handler($event, $object_type, $callback, $priority = 500) { +	elgg_deprecated_notice("register_elgg_event_handler() was deprecated by elgg_register_event_handler()", 1.8); +	return elgg_register_event_handler($event, $object_type, $callback, $priority); +} + +/**   * Unregisters a callback for an event.   *   * @param string $event       The event type @@ -766,6 +836,14 @@ function elgg_unregister_event_handler($event, $object_type, $callback) {  }  /** + * @deprecated 1.8 Use elgg_unregister_event_handler instead + */ +function unregister_elgg_event_handler($event, $object_type, $callback) { +	elgg_deprecated_notice('unregister_elgg_event_handler => elgg_unregister_event_handler', 1.8); +	elgg_unregister_event_handler($event, $object_type, $callback); +} + +/**   * Trigger an Elgg Event and run all handler callbacks registered to that event, type.   *   * This function runs all handlers registered to $event, $object_type or @@ -829,6 +907,14 @@ function elgg_trigger_event($event, $object_type, $object = null) {  }  /** + * @deprecated 1.8 Use elgg_trigger_event() instead + */ +function trigger_elgg_event($event, $object_type, $object = null) { +	elgg_deprecated_notice('trigger_elgg_event() was deprecated by elgg_trigger_event()', 1.8); +	return elgg_trigger_event($event, $object_type, $object); +} + +/**   * Register a callback as a plugin hook handler.   *   * Plugin hooks allow developers to losely couple plugins and features by @@ -926,6 +1012,14 @@ function elgg_register_plugin_hook_handler($hook, $type, $callback, $priority =  }  /** + * @deprecated 1.8 Use elgg_register_plugin_hook_handler() instead + */ +function register_plugin_hook($hook, $type, $callback, $priority = 500) { +	elgg_deprecated_notice("register_plugin_hook() was deprecated by elgg_register_plugin_hook_handler()", 1.8); +	return elgg_register_plugin_hook_handler($hook, $type, $callback, $priority); +} + +/**   * Unregister a callback as a plugin hook.   *   * @param string   $hook        The name of the hook @@ -945,6 +1039,14 @@ function elgg_unregister_plugin_hook_handler($hook, $entity_type, $callback) {  }  /** + * @deprecated 1.8 Use elgg_unregister_plugin_hook_handler() instead + */ +function unregister_plugin_hook($hook, $entity_type, $callback) { +	elgg_deprecated_notice("unregister_plugin_hook() was deprecated by elgg_unregister_plugin_hook_handler()", 1.8); +	elgg_unregister_plugin_hook_handler($hook, $entity_type, $callback); +} + +/**   * Trigger a Plugin Hook and run all handler callbacks registered to that hook:type.   *   * This function runs all handlers regsitered to $hook, $type or @@ -1019,6 +1121,14 @@ function elgg_trigger_plugin_hook($hook, $type, $params = null, $returnvalue = n  }  /** + * @deprecated 1.8 Use elgg_trigger_plugin_hook() instead + */ +function trigger_plugin_hook($hook, $type, $params = null, $returnvalue = null) { +	elgg_deprecated_notice("trigger_plugin_hook() was deprecated by elgg_trigger_plugin_hook()", 1.8); +	return elgg_trigger_plugin_hook($hook, $type, $params, $returnvalue); +} + +/**   * Intercepts, logs, and display uncaught exceptions.   *   * @warning This function should never be called directly. @@ -1079,8 +1189,8 @@ function _elgg_php_error_handler($errno, $errmsg, $filename, $linenum, $vars) {  			throw new Exception($error);  			break; -		case E_WARNING: -		case E_USER_WARNING: +		case E_WARNING : +		case E_USER_WARNING :  			error_log("PHP WARNING: $error");  			break; @@ -1259,6 +1369,163 @@ function elgg_deprecated_notice($msg, $dep_version) {  	return TRUE;  } + +/** + * Checks if code is being called from a certain function. + * + * To use, call this function with the function name (and optional + * file location) that it has to be called from, it will either + * return true or false. + * + * e.g. + * + * function my_secure_function() + * { + * 		if (!call_gatekeeper("my_call_function")) + * 			return false; + * + * 		... do secure stuff ... + * } + * + * function my_call_function() + * { + * 		// will work + * 		my_secure_function(); + * } + * + * function bad_function() + * { + * 		// Will not work + * 		my_secure_function(); + * } + * + * @param mixed  $function The function that this function must have in its call stack, + * 		                   to test against a method pass an array containing a class and + *                         method name. + * @param string $file     Optional file that the function must reside in. + * + * @return bool + * + * @deprecated 1.8 A neat but pointless function + */ +function call_gatekeeper($function, $file = "") { +	elgg_deprecated_notice("call_gatekeeper() is neat but pointless", 1.8); +	// Sanity check +	if (!$function) { +		return false; +	} + +	// Check against call stack to see if this is being called from the correct location +	$callstack = debug_backtrace(); +	$stack_element = false; + +	foreach ($callstack as $call) { +		if (is_array($function)) { +			if ( +				(strcmp($call['class'], $function[0]) == 0) && +				(strcmp($call['function'], $function[1]) == 0) +			) { +				$stack_element = $call; +			} +		} else { +			if (strcmp($call['function'], $function) == 0) { +				$stack_element = $call; +			} +		} +	} + +	if (!$stack_element) { +		return false; +	} + +	// If file then check that this it is being called from this function +	if ($file) { +		$mirror = null; + +		if (is_array($function)) { +			$mirror = new ReflectionMethod($function[0], $function[1]); +		} else { +			$mirror = new ReflectionFunction($function); +		} + +		if ((!$mirror) || (strcmp($file, $mirror->getFileName()) != 0)) { +			return false; +		} +	} + +	return true; +} + +/** + * This function checks to see if it is being called at somepoint by a function defined somewhere + * on a given path (optionally including subdirectories). + * + * This function is similar to call_gatekeeper() but returns true if it is being called + * by a method or function which has been defined on a given path or by a specified file. + * + * @param string $path            The full path and filename that this function must have + *                                in its call stack If a partial path is given and + *                                $include_subdirs is true, then the function will return + *                                true if called by any function in or below the specified path. + * @param bool   $include_subdirs Are subdirectories of the path ok, or must you specify an + *                                absolute path and filename. + * @param bool   $strict_mode     If true then the calling method or function must be directly + *                                called by something on $path, if false the whole call stack is + *                                searched. + * + * @return void + * + * @deprecated 1.8 A neat but pointless function + */ +function callpath_gatekeeper($path, $include_subdirs = true, $strict_mode = false) { +	elgg_deprecated_notice("callpath_gatekeeper() is neat but pointless", 1.8); + +	global $CONFIG; + +	$path = sanitise_string($path); + +	if ($path) { +		$callstack = debug_backtrace(); + +		foreach ($callstack as $call) { +			$call['file'] = str_replace("\\", "/", $call['file']); + +			if ($include_subdirs) { +				if (strpos($call['file'], $path) === 0) { + +					if ($strict_mode) { +						$callstack[1]['file'] = str_replace("\\", "/", $callstack[1]['file']); +						if ($callstack[1] === $call) { +							return true; +						} +					} else { +						return true; +					} +				} +			} else { +				if (strcmp($path, $call['file']) == 0) { +					if ($strict_mode) { +						if ($callstack[1] === $call) { +							return true; +						} +					} else { +						return true; +					} +				} +			} + +		} +		return false; +	} + +	if (isset($CONFIG->debug)) { +		system_message("Gatekeeper'd function called from {$callstack[1]['file']}:" +			. "{$callstack[1]['line']}\n\nStack trace:\n\n" . print_r($callstack, true)); +	} + +	return false; +} +  /**   * Returns the current page's complete URL.   * @@ -1391,6 +1658,23 @@ function elgg_add_action_tokens_to_url($url, $html_encode = FALSE) {  	return elgg_http_build_url($components, $html_encode);  } + +/** + * Add action tokens to URL. + * + * @param string $url URL + * + * @return string + * + * @deprecated 1.7 final + */ +function elgg_validate_action_url($url) { +	elgg_deprecated_notice('elgg_validate_action_url() deprecated by elgg_add_action_tokens_to_url().', +		'1.7b'); + +	return elgg_add_action_tokens_to_url($url); +} +  /**   * Removes an element from a URL's query string.   * @@ -1726,7 +2010,7 @@ $sort_type = SORT_LOCALE_STRING) {  		} else {  			$sort[] = NULL;  		} -	} +	};  	return array_multisort($sort, $sort_order, $sort_type, $array);  } @@ -1767,7 +2051,7 @@ function elgg_get_ini_setting_in_bytes($setting) {  	// convert INI setting when shorthand notation is used  	$last = strtolower($val[strlen($val) - 1]); -	switch ($last) { +	switch($last) {  		case 'g':  			$val *= 1024;  		case 'm': @@ -1834,6 +2118,30 @@ function elgg_normalise_plural_options_array($options, $singulars) {  }  /** + * Does nothing. + * + * @deprecated 1.7 + * @return 0 + */ +function test_ip() { +	elgg_deprecated_notice('test_ip() was removed because of licensing issues.', 1.7); + +	return 0; +} + +/** + * Does nothing. + * + * @return bool + * @deprecated 1.7 + */ +function is_ip_in_array() { +	elgg_deprecated_notice('is_ip_in_array() was removed because of licensing issues.', 1.7); + +	return false; +} + +/**   * Emits a shutdown:system event upon PHP shutdown, but before database connections are dropped.   *   * @tip Register for the shutdown:system event to perform functions at the end of page loads.  | 
