From e5edab721ea12ba5ac937a5adeda53f5e3393611 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 12 Feb 2008 16:12:50 +0000 Subject: Sanitisation git-svn-id: https://code.elgg.org/elgg/trunk@7 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/elgglib.php | 60 ++++++++++++++++++++++++++++++----------- engine/start.php | 73 ++++++++++++++++++++++++++++---------------------- 2 files changed, 85 insertions(+), 48 deletions(-) (limited to 'engine') diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 734407530..3a0d6f2a4 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -143,10 +143,16 @@ * * @return true|false True if everything is ok (or Elgg is fit enough to run); false if not. */ - function sanitise() { + function sanitised() { - if (!file_exists(dirname(dirname(__FILE__)) . "/settings.php")) + $sanitised = true; + + if (!file_exists(dirname(dirname(__FILE__)) . "/settings.php")) { register_error(elgg_view("messages/sanitisation/settings")); + $sanitised = false; + } + + return $sanitised; } @@ -164,30 +170,42 @@ * @return true|false|array Either the array of messages, or a response regarding whether the message addition was successful */ - function system_messages($message = null, $register = "messages") { + function system_messages($message = null, $register = "messages", $count = false) { static $messages; if (!isset($messages)) { $messages = array(); } - if (!isset($messages[$register])) { + if (!isset($messages[$register]) && !empty($register)) { $messages[$register] = array(); } - if (!empty($message) && is_array($message)) { - $messages[$register] = array_merge($messages[$register], $message); - return true; - } else if (!empty($message) && is_string($message)) { - $messages[$register][] = $message; - return true; - } else if (!is_string($message) && !is_array($message)) { + if (!$count) { + if (!empty($message) && is_array($message)) { + $messages[$register] = array_merge($messages[$register], $message); + return true; + } else if (!empty($message) && is_string($message)) { + $messages[$register][] = $message; + return true; + } else if (!is_string($message) && !is_array($message)) { + if (!empty($register)) { + $returnarray = $messages[$register]; + $messages[$register] = array(); + } else { + $returnarray = $messages; + $messages = array(); + } + return $returnarray; + } + } else { if (!empty($register)) { - $returnarray = $messages[$register]; - $messages[$register] = array(); + return sizeof($messages[$register]); } else { - $returnarray = $messages; - $messages = array(); + $count = 0; + foreach($messages as $register => $submessages) { + $count += sizeof($submessages); + } + return $count; } - return $returnarray; } return false; @@ -212,5 +230,15 @@ function register_error($error) { return system_messages($error, "errors"); } + + /** + * Counts the number of messages, either globally or in a particular register + * + * @param string $register Optionally, the register + * @return integer The number of messages + */ + function count_messages($register = "") { + return system_messages(null,$register,true); + } ?> \ No newline at end of file diff --git a/engine/start.php b/engine/start.php index 864b2b112..7a38f7155 100644 --- a/engine/start.php +++ b/engine/start.php @@ -20,49 +20,58 @@ echo "Error in installation: could not load the main Elgg library."; exit; } - if (!@include_once(dirname(__FILE__) . "/lib/database.php")) // Database connection - register_error("Could not load the main Elgg database library."); - - /** - * Ensure the installation is correctly formed - */ - - sanitise(); - + /** * Load the system settings */ if (!@include_once(dirname(__FILE__) . "/settings.php")) // Global settings register_error("Could not load the settings file."); - + /** - * Load the remaining libraries from /lib/ in alphabetical order, - * except for a few exceptions + * If there are basic issues with the way the installation is formed, don't bother trying + * to load any more files */ - // We don't want to load or reload these files - - $file_exceptions = array( - '.','..', - '.svn', - 'settings.php','settings.example.php','elgglib.php','database.php' - ); - - // Get the list of files to include, and alphabetically sort them - - $files = get_library_files(dirname(__FILE__) . "/lib",$file_exceptions); - asort($files); - - // Include them + if (sanitised()) { // Begin portion for sanitised installs only - foreach($files as $file) { - if (!@include_once($file)) - register_error("Could not load {$file}"); - } + /** + * Load and initialise the database + */ + + if (!@include_once(dirname(__FILE__) . "/lib/database.php")) // Database connection + register_error("Could not load the main Elgg database library."); + + + /** + * Load the remaining libraries from /lib/ in alphabetical order, + * except for a few exceptions + */ + + // We don't want to load or reload these files + + $file_exceptions = array( + '.','..', + '.svn', + 'settings.php','settings.example.php','elgglib.php','database.php' + ); + + // Get the list of files to include, and alphabetically sort them + + $files = get_library_files(dirname(__FILE__) . "/lib",$file_exceptions); + asort($files); + + // Include them + + foreach($files as $file) { + if (!@include_once($file)) + register_error("Could not load {$file}"); + } - if ($errors = system_messages(null, "errors")) { - // Do something! + } // End portion for sanitised installs only + + if ($count = count_messages("errors")) { + } ?> \ No newline at end of file -- cgit v1.2.3