diff options
Diffstat (limited to 'engine')
69 files changed, 1051 insertions, 1163 deletions
| diff --git a/engine/classes/APIException.php b/engine/classes/APIException.php new file mode 100644 index 000000000..d6eb9ce52 --- /dev/null +++ b/engine/classes/APIException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * APIException
 + * The API Exception class, thrown by the API layer when an API call has an issue.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class APIException extends Exception {}
 diff --git a/engine/classes/AccessControlQueryComponent.php b/engine/classes/AccessControlQueryComponent.php new file mode 100644 index 000000000..ad5410ddc --- /dev/null +++ b/engine/classes/AccessControlQueryComponent.php @@ -0,0 +1,40 @@ +<?php
 +/**
 + * @class AccessControlQueryComponent
 + * Access control component.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class AccessControlQueryComponent extends QueryComponent
 +{
 +	/**
 +	 * Construct the ACL.
 +	 *
 +	 * @param string $acl_table The table where the access control field is.
 +	 * @param string $acl_field The field containing the access control.
 +	 * @param string $object_owner_table The table containing the owner information for the stuff you're retrieving.
 +	 * @param string $object_owner_id_field The field in $object_owner_table containing the owner information
 +	 */
 +	function __construct($acl_table = "entities", $acl_field = "access_id", $object_owner_table = "entities", $object_owner_id_field = "owner_guid")
 +	{
 +		global $CONFIG;
 +
 +		$this->acl_table = $CONFIG->dbprefix . sanitise_string($acl_table);
 +		$this->acl_field = sanitise_string($acl_field);
 +		$this->object_owner_table = $CONFIG->dbprefix . sanitise_string($object_owner_table);
 +		$this->object_owner_id_field = sanitise_string($object_owner_id_field);
 +	}
 +
 +	function __toString()
 +	{
 +		//$access = get_access_list();
 +		// KJ - changed to use get_access_sql_suffix
 +		// Note: currently get_access_sql_suffix is hardwired to use
 +		// $acl_field = "access_id", $object_owner_table = $acl_table, and
 +		// $object_owner_id_field = "owner_guid"
 +		// @todo recode get_access_sql_suffix to make it possible to specify alternate field names
 +		return "and ".get_access_sql_suffix($this->acl_table); // Add access controls
 +
 +		//return "and ({$this->acl_table}.{$this->acl_field} in {$access} or ({$this->acl_table}.{$this->acl_field} = 0 and {$this->object_owner_table}.{$this->object_owner_id_field} = {$_SESSION['id']}))";
 +	}
 +}
 diff --git a/engine/classes/CallException.php b/engine/classes/CallException.php new file mode 100644 index 000000000..369ce19bd --- /dev/null +++ b/engine/classes/CallException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * CallException
 + * An exception thrown when there is a problem calling something.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class CallException extends Exception {}
 diff --git a/engine/classes/ClassException.php b/engine/classes/ClassException.php new file mode 100644 index 000000000..6dfb57b0e --- /dev/null +++ b/engine/classes/ClassException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * ClassException
 + * A class Exception, throw when there is a class error.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class ClassException extends Exception {}
 diff --git a/engine/classes/ClassNotFoundException.php b/engine/classes/ClassNotFoundException.php new file mode 100644 index 000000000..f344e6b28 --- /dev/null +++ b/engine/classes/ClassNotFoundException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * ClassNotFoundException
 + * An Class not found Exception, throw when an class can not be found occurs.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class ClassNotFoundException extends ClassException {}
\ No newline at end of file diff --git a/engine/classes/ConfigurationException.php b/engine/classes/ConfigurationException.php new file mode 100644 index 000000000..a3c7c38cc --- /dev/null +++ b/engine/classes/ConfigurationException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * ConfigurationException
 + * There is a configuration error
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class ConfigurationException extends Exception {}
 diff --git a/engine/classes/DataFormatException.php b/engine/classes/DataFormatException.php new file mode 100644 index 000000000..2038f1fb7 --- /dev/null +++ b/engine/classes/DataFormatException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * Data format exception
 + * An exception thrown when there is a problem in the format of some data.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class DataFormatException extends Exception {}
 diff --git a/engine/classes/DatabaseException.php b/engine/classes/DatabaseException.php new file mode 100644 index 000000000..ffc414abf --- /dev/null +++ b/engine/classes/DatabaseException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * DatabaseException
 + * An database exception, throw when a database exception happens, subclass if more detail is needed.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class DatabaseException extends Exception {}
 diff --git a/engine/classes/DeleteQueryTypeQueryComponent.php b/engine/classes/DeleteQueryTypeQueryComponent.php new file mode 100644 index 000000000..645e95cb5 --- /dev/null +++ b/engine/classes/DeleteQueryTypeQueryComponent.php @@ -0,0 +1,14 @@ +<?php
 +/**
 + * @class DeleteQueryTypeQueryComponent
 + * A delete query.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class DeleteQueryTypeQueryComponent extends QueryTypeQueryComponent
 +{
 +	function __construct()
 +	{
 +		$this->query_type = "DELETE FROM";
 +	}
 +}
 diff --git a/engine/classes/IOException.php b/engine/classes/IOException.php new file mode 100644 index 000000000..683be32a1 --- /dev/null +++ b/engine/classes/IOException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * IOException
 + * An IO Exception, throw when an IO Exception occurs. Subclass for specific IO Exceptions.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class IOException extends Exception {}
 diff --git a/engine/classes/InsertQueryTypeQueryComponent.php b/engine/classes/InsertQueryTypeQueryComponent.php new file mode 100644 index 000000000..20d1a7adf --- /dev/null +++ b/engine/classes/InsertQueryTypeQueryComponent.php @@ -0,0 +1,14 @@ +<?php
 +/**
 + * @class InsertQueryTypeQueryComponent
 + * An insert query.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class InsertQueryTypeQueryComponent extends QueryTypeQueryComponent
 +{
 +	function __construct()
 +	{
 +		$this->query_type = "INSERT INTO";
 +	}
 +}
 diff --git a/engine/classes/InstallationException.php b/engine/classes/InstallationException.php new file mode 100644 index 000000000..96bd9beff --- /dev/null +++ b/engine/classes/InstallationException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * InstallationException
 + * Thrown when there is a major problem with the installation.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class InstallationException extends ConfigurationException {}
 diff --git a/engine/classes/InvalidClassException.php b/engine/classes/InvalidClassException.php new file mode 100644 index 000000000..84d3b3625 --- /dev/null +++ b/engine/classes/InvalidClassException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * InvalidClassException
 + * An invalid class Exception, throw when a class is invalid.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class InvalidClassException extends ClassException {}
 diff --git a/engine/classes/InvalidParameterException.php b/engine/classes/InvalidParameterException.php new file mode 100644 index 000000000..a94904da0 --- /dev/null +++ b/engine/classes/InvalidParameterException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * InvalidParameterException
 + * A parameter is invalid.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class InvalidParameterException extends CallException {}
 diff --git a/engine/classes/JoinQueryComponent.php b/engine/classes/JoinQueryComponent.php new file mode 100644 index 000000000..8300cf710 --- /dev/null +++ b/engine/classes/JoinQueryComponent.php @@ -0,0 +1,33 @@ +<?php
 +/**
 + * @class JoinQueryComponent Join query.
 + * Represents a join query.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class JoinQueryComponent extends QueryComponent
 +{
 +	/**
 +	 * Construct a join query.
 +	 * @param string $table Table one to join...
 +	 * @param string $field Field 1 with...
 +	 * @param string $table2 Table 2 ...
 +	 * @param string $field2 Field...
 +	 * @param string $operator Using this operator
 +	 */
 +	function __construct($table1, $field1, $table2, $field2, $operator = "=")
 +	{
 +		global $CONFIG;
 +
 +		$this->table1 = $CONFIG->dbprefix . sanitise_string($table1);
 +		$this->field1 = sanitise_string($field1);
 +		$this->table2 = $CONFIG->dbprefix . sanitise_string($table2);
 +		$this->field2 = sanitise_string($field2);
 +		$this->operator = sanitise_string($operator);
 +	}
 +
 +	function __toString()
 +	{
 +		return "join {$this->table2} on {$this->$table}.{$this->$field} {$this->$operator} {$this->$table2}.{$this->$field2}";
 +	}
 +}
 diff --git a/engine/classes/LimitOffsetQueryComponent.php b/engine/classes/LimitOffsetQueryComponent.php new file mode 100644 index 000000000..2cc77dd47 --- /dev/null +++ b/engine/classes/LimitOffsetQueryComponent.php @@ -0,0 +1,26 @@ +<?php
 +/**
 + * @class LimitOffsetQueryComponent
 + * Limit and offset clauses of a query.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class LimitOffsetQueryComponent extends QueryComponent
 +{
 +	/**
 +	 * Specify a limit and an offset.
 +	 *
 +	 * @param int $limit The limit.
 +	 * @param int $offset The offset.
 +	 */
 +	function __construct($limit = 25, $offset = 0)
 +	{
 +		$this->limit = (int)$limit;
 +		$this->offset = (int)$offset;
 +	}
 +
 +	function __toString()
 +	{
 +		return "limit {$this->offset}, {$this->limit}";
 +	}
 +}
 diff --git a/engine/classes/NotImplementedException.php b/engine/classes/NotImplementedException.php new file mode 100644 index 000000000..f95c88c47 --- /dev/null +++ b/engine/classes/NotImplementedException.php @@ -0,0 +1,11 @@ +<?php
 +/**
 + * NotImplementedException
 + * Thrown when a method or function has not been implemented, primarily used in development... you should
 + * not see these!
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class NotImplementedException extends CallException {}
 diff --git a/engine/classes/NotificationException.php b/engine/classes/NotificationException.php new file mode 100644 index 000000000..78ea4c57e --- /dev/null +++ b/engine/classes/NotificationException.php @@ -0,0 +1,6 @@ +<?php
 +/**
 + * Notification exception.
 + * @author Curverider Ltd
 + */
 +class NotificationException extends Exception {}
 diff --git a/engine/classes/OrderQueryComponent.php b/engine/classes/OrderQueryComponent.php new file mode 100644 index 000000000..04bb309c9 --- /dev/null +++ b/engine/classes/OrderQueryComponent.php @@ -0,0 +1,23 @@ +<?php
 +/**
 + * @class OrderQueryComponent
 + * Order the query results.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class OrderQueryComponent extends QueryComponent
 +{
 +	function __construct($table, $field, $order = "asc")
 +	{
 +		global $CONFIG;
 +
 +		$this->table = $CONFIG->dbprefix . sanitise_string($table);
 +		$this->field = sanitise_string($field);
 +		$this->order = sanitise_string($order);
 +	}
 +
 +	function __toString()
 +	{
 +		return "order by {$this->table}.{$this->field} {$this->order}";
 +	}
 +}
 diff --git a/engine/classes/PluginException.php b/engine/classes/PluginException.php new file mode 100644 index 000000000..4da15791d --- /dev/null +++ b/engine/classes/PluginException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * PluginException
 + *
 + * A plugin Exception, thrown when an Exception occurs relating to the plugin mechanism. Subclass for specific plugin Exceptions.
 + *
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class PluginException extends Exception {}
\ No newline at end of file diff --git a/engine/classes/Query.php b/engine/classes/Query.php new file mode 100644 index 000000000..ebc7e1474 --- /dev/null +++ b/engine/classes/Query.php @@ -0,0 +1,286 @@ +<?php
 +/**
 + * @class Query Provides a framework to construct complex queries in a safer environment.
 + *
 + * The usage of this class depends on the type of query you are executing, but the basic idea is to
 + * construct a query out of pluggable classes.
 + *
 + * Once constructed SQL can be generated using the toString method, this should happen automatically
 + * if you pass the Query object to get_data or similar.
 + *
 + * To construct a query, create a new Query() object and begin populating it with the various classes
 + * that define the various aspects of the query.
 + *
 + * Notes:
 + * 	- You do not have to specify things in any particular order, provided you specify all required
 + * 	  components.
 + *  - With database tables you do not have to specify your db prefix, this will be added automatically.
 + *  - When constructing your query keep an eye on the error log - any problems will get spit out here.
 + * 	  Note also that __toString won't let you throw Exceptions (!!!) so these are caught and echoed to
 + *    the log instead.
 + *
 + * Here is an example of a select query which requests some data out of the entities table with an
 + * order and limit that uses a subset where and some normal where queries:
 + *
 + * <blockquote>
 + * 		// Construct the query
 + * 		$query = new Query();
 + *
 + * 		// Say which table we're interested in
 + * 		$query->addTable(new TableQueryComponent("entities"));
 + *
 + * 		// What fields are we interested in
 + * 		$query->addSelectField(new SelectFieldQueryComponent("entities","*"));
 + *
 + * 		// Add access control (Default access control uses default fields on entities table.
 + * 		// Note that it will error without something specified here!
 + * 		$query->setAccessControl(new AccessControlQueryComponent());
 + *
 + * 		// Set a limit and offset, may be omitted.
 + * 		$query->setLimitAndOffset(new LimitOffsetQueryComponent(10,0));
 + *
 + * 		// Specify the order, may be omitted
 + * 		$query->setOrder(new OrderQueryComponent("entities", "subtype", "desc"));
 + *
 + * 		// Construct a where query
 + * 		//
 + * 		// This demonstrates a WhereSet which lets you have sub wheres, a
 + * 		// WhereStatic which lets you compare a table field against a value and a
 + * 		// Where which lets you compare a table/field with another table/field.
 + * 		$query->addWhere(
 + * 			new WhereSetQueryComponent(
 + * 				array(
 + * 					new WhereStaticQueryComponent("entities", "subtype","=", 1),
 + * 					new WhereQueryComponent("entities","subtype","=", "entities", "subtype")
 + * 				)
 + * 			)
 + * 		);
 + *
 + * 		get_data($query);
 + * </blockquote>
 + *
 + * @author Curverider Ltd
 + */
 +class Query
 +{
 +
 +	/// The limit of the query
 +	private $limit_and_offset;
 +
 +	/// Fields to return on a query
 +	private $fields;
 +
 +	/// Tables to use in a from query
 +	private $tables;
 +
 +	/// Join tables
 +	private $joins;
 +
 +	/// Set values
 +	private $sets;
 +
 +	/// Where query
 +	private $where;
 +
 +	/// Order by
 +	private $order;
 +
 +	/// The query type
 +	private $query_type;
 +
 +	/// ACL
 +	private $access_control;
 +
 +	/**
 +	 * Construct query & initialise variables
 +	 */
 +	function __construct()
 +	{
 +		$this->fields = array();
 +		$this->tables = array();
 +		$this->joins = array();
 +		$this->where = array();
 +		$this->sets = array();
 +
 +		$this->setQueryType(new SelectQueryTypeQueryComponent());
 +	}
 +
 +	/**
 +	 * Add limits and offsets to the query.
 +	 *
 +	 * @param LimitOffsetQueryComponent $component The limit and offset.
 +	 */
 +	public function setLimitAndOffset(LimitOffsetQueryComponent $component) { $this->limit_and_offset = $component; }
 +
 +	/**
 +	 * Reset and set the field to the select statement.
 +	 *
 +	 * @param SelectFieldQueryComponent $component Table and field component.
 +	 */
 +	public function setSelectField(SelectFieldQueryComponent $component)
 +	{
 +		$this->fields = array();
 +		return $this->addSelectField($component);
 +	}
 +
 +	/**
 +	 * Add a select field.
 +	 *
 +	 * @param SelectFieldQueryComponent $component Add a component.
 +	 */
 +	public function addSelectField(SelectFieldQueryComponent $component) { $this->fields[] = $component; }
 +
 +	/**
 +	 * Add a join to the component.
 +	 *
 +	 * @param JoinQueryComponent $component The join.
 +	 */
 +	public function addJoin(JoinQueryComponent $component) { $this->joins[] = $component; }
 +
 +	/**
 +	 * Set a field value in an update or insert statement.
 +	 *
 +	 * @param SetQueryComponent $component Fields to set.
 +	 */
 +	public function addSet(SetQueryComponent $component) { $this->sets[] = $component; }
 +
 +	/**
 +	 * Set the query type, i.e. "select", "update", "insert" & "delete".
 +	 *
 +	 * @param QueryTypeQueryComponent $component The query type.
 +	 */
 +	public function setQueryType(QueryTypeQueryComponent $component) { $this->query_type = $component; }
 +
 +	/**
 +	 * Attach an order component.
 +	 *
 +	 * @param OrderQueryComponent $component The order component.
 +	 */
 +	public function setOrder(OrderQueryComponent $component) { $this->order = $component; }
 +
 +	/**
 +	 * Add a table to the query.
 +	 *
 +	 * @param TableQueryComponent $component Table to add.
 +	 */
 +	public function addTable(TableQueryComponent $component) { $this->tables[] = $component; }
 +
 +	/**
 +	 * Add a where clause to the query.
 +	 *
 +	 * @param WhereQueryComponent $component The where component
 +	 */
 +	public function addWhere(WhereQueryComponent $component) { $this->where[] = $component; }
 +
 +	/**
 +	 * Set access control.
 +	 *
 +	 * @param AccessControlQueryComponent $component Access control.
 +	 */
 +	public function setAccessControl(AccessControlQueryComponent $component) { $this->access_control = $component; }
 +
 +	public function __toString()
 +	{
 +		global $CONFIG;
 +
 +		$sql = "";
 +
 +		try
 +		{
 +			// Query prefix & fields
 +			if (!empty($this->query_type))
 +			{
 +				$sql .= "{$this->query_type} ";
 +
 +				if (!empty($this->fields))
 +				{
 +					$fields = "";
 +
 +					foreach ($this->fields as $field)
 +						$fields .= "$field";
 +
 +					$sql .= " $fields from ";
 +				}
 +				else
 +					throw new DatabaseException(elgg_echo('DatabaseException:SelectFieldsMissing'));
 +			}
 +			else
 +				throw new DatabaseException(elgg_echo('DatabaseException:UnspecifiedQueryType'));
 +
 +			// Tables
 +			if (!empty($this->tables))
 +			{
 +				foreach($this->tables as $table)
 +					$sql .= "$table, ";
 +
 +				$sql = trim($sql, ", ");
 +			}
 +			else
 +				throw new DatabaseException(elgg_echo('DatabaseException:NoTablesSpecified'));
 +
 +			// Joins on select queries
 +			if ($this->query_type->query_type == 'select')
 +			{
 +				if (!empty($this->joins))
 +				{
 +					foreach($this->joins as $join)
 +						$sql .= "$join ";
 +				}
 +			}
 +
 +			// Setting values
 +			if (
 +				($this->query_type->query_type == 'update') ||
 +				($this->query_type->query_type == 'insert')
 +			)
 +			{
 +				$sql .= "set ";
 +
 +				foreach ($this->sets as $set)
 +					$sql .= "$set, ";
 +
 +				$sql = trim($sql, ", ") . " ";
 +			}
 +
 +			// Where
 +			if (!empty($this->where))
 +			{
 +				$sql .= " where 1 ";
 +
 +				foreach ($this->where as $where)
 +					$sql .= "$where ";
 +			}
 +
 +			// Access control
 +			if (!empty($this->access_control))
 +			{
 +
 +				// Catch missing Where
 +				if (empty($this->where))
 +					$sql .= " where 1 ";
 +
 +				$sql .= "{$this->access_control} ";
 +			}
 +			else
 +				throw new DatabaseException(elgg_echo('DatabaseException:NoACL'));
 +
 +			// Order by
 +			if (!empty($this->order))
 +				$sql .= "{$this->order} ";
 +
 +			// Limits
 +			if (!empty($this->limit_and_offset))
 +				$sql .= "{$this->limit_and_offset} ";
 +
 +
 +
 +		} catch (Exception $e) {
 +			trigger_error($e, E_USER_WARNING);
 +		}
 +
 +
 +		return $sql;
 +	}
 +
 +}
 +
 diff --git a/engine/classes/QueryComponent.php b/engine/classes/QueryComponent.php new file mode 100644 index 000000000..cfe7683b1 --- /dev/null +++ b/engine/classes/QueryComponent.php @@ -0,0 +1,42 @@ +<?php
 +/**
 + * @class QueryComponent Query component superclass.
 + * Component of a query.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +abstract class QueryComponent
 +{
 +	/**
 +	 * Associative array of fields and values
 +	 */
 +	private $fields;
 +
 +	function __construct()
 +	{
 +		$this->fields = array();
 +	}
 +
 +	/**
 +	 * Class member get overloading
 +	 *
 +	 * @param string $name
 +	 * @return mixed
 +	 */
 +	function __get($name) {
 +		return $this->fields[$name];
 +	}
 +
 +	/**
 +	 * Class member set overloading
 +	 *
 +	 * @param string $name
 +	 * @param mixed $value
 +	 * @return void
 +	 */
 +	function __set($name, $value) {
 +		$this->fields[$name] = $value;
 +
 +		return true;
 +	}
 +}
 diff --git a/engine/classes/QueryTypeQueryComponent.php b/engine/classes/QueryTypeQueryComponent.php new file mode 100644 index 000000000..231faa733 --- /dev/null +++ b/engine/classes/QueryTypeQueryComponent.php @@ -0,0 +1,14 @@ +<?php
 +/**
 + * @class QueryTypeQueryComponent
 + * What type of query is this?
 + * @author Curverider Ltd
 + * @see Query
 + */
 +abstract class QueryTypeQueryComponent extends QueryComponent
 +{
 +	function __toString()
 +	{
 +		return $this->query_type;
 +	}
 +}
 diff --git a/engine/classes/RegistrationException.php b/engine/classes/RegistrationException.php new file mode 100644 index 000000000..5efea3904 --- /dev/null +++ b/engine/classes/RegistrationException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * RegistrationException
 + * Could not register a new user for whatever reason.
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class RegistrationException extends InstallationException {}
\ No newline at end of file diff --git a/engine/classes/SecurityException.php b/engine/classes/SecurityException.php new file mode 100644 index 000000000..3075f0b8e --- /dev/null +++ b/engine/classes/SecurityException.php @@ -0,0 +1,10 @@ +<?php
 +/**
 + * SecurityException
 + * An Security Exception, throw when a Security Exception occurs. Subclass for specific Security Execeptions (access problems etc)
 + *
 + * @author Curverider Ltd <info@elgg.com>
 + * @package Elgg
 + * @subpackage Exceptions
 + */
 +class SecurityException extends Exception {}
 diff --git a/engine/classes/SelectFieldQueryComponent.php b/engine/classes/SelectFieldQueryComponent.php new file mode 100644 index 000000000..fbc4a81c1 --- /dev/null +++ b/engine/classes/SelectFieldQueryComponent.php @@ -0,0 +1,28 @@ +<?php
 +/**
 + * @class SelectFieldQueryComponent Class representing a select field.
 + * This class represents a select field component.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class SelectFieldQueryComponent extends QueryComponent
 +{
 +	/**
 +	 * Construct a select field component
 +	 *
 +	 * @param string $table The table containing the field.
 +	 * @param string $field The field or "*"
 +	 */
 +	function __construct($table, $field)
 +	{
 +		global $CONFIG;
 +
 +		$this->table = $CONFIG->dbprefix . sanitise_string($table);
 +		$this->field = sanitise_string($field);
 +	}
 +
 +	function __toString()
 +	{
 +		return "{$this->table}.{$this->field}";
 +	}
 +}
 diff --git a/engine/classes/SelectQueryTypeQueryComponent.php b/engine/classes/SelectQueryTypeQueryComponent.php new file mode 100644 index 000000000..61e7e5017 --- /dev/null +++ b/engine/classes/SelectQueryTypeQueryComponent.php @@ -0,0 +1,14 @@ +<?php
 +/**
 + * @class SelectQueryTypeQueryComponent
 + * A select query.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class SelectQueryTypeQueryComponent extends QueryTypeQueryComponent
 +{
 +	function __construct()
 +	{
 +		$this->query_type = "SELECT";
 +	}
 +}
 diff --git a/engine/classes/SetQueryComponent.php b/engine/classes/SetQueryComponent.php new file mode 100644 index 000000000..0acd5718c --- /dev/null +++ b/engine/classes/SetQueryComponent.php @@ -0,0 +1,33 @@ +<?php
 +/**
 + * @class SetQueryComponent Set query.
 + * Represents an update set query.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class SetQueryComponent extends QueryComponent
 +{
 +	/**
 +	 * Construct a setting query
 +	 *
 +	 * @param string $table The table to modify
 +	 * @param string $field The field to modify
 +	 * @param mixed $value The value to set it to
 +	 */
 +	function __construct($table, $field, $value)
 +	{
 +		global $CONFIG;
 +
 +		$this->table = $CONFIG->dbprefix . sanitise_string($table);
 +		$this->field = sanitise_string($field);
 +		if (is_numeric($value))
 +			$this->value = (int)$value;
 +		else
 +			$this->value = "'".sanitise_string($value)."'";
 +	}
 +
 +	function __toString()
 +	{
 +		return "{$this->table}.{$this->field}={$this->value}";
 +	}
 +}
 diff --git a/engine/classes/SimpleQuery.php b/engine/classes/SimpleQuery.php new file mode 100644 index 000000000..cf5a18a50 --- /dev/null +++ b/engine/classes/SimpleQuery.php @@ -0,0 +1,152 @@ +<?php
 +/**
 + * @class SimpleQuery A wrapper for Query which provides simple interface for common functions.
 + *
 + * This class provides simple interface functions for constructing a (reasonably) standard database
 + * query.
 + *
 + * The constructor for this class sets a number of defaults, for example sets default access controls
 + * and a limit and offset - to change this then set it manually.
 + *
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class SimpleQuery extends Query
 +{
 +	function __construct()
 +	{
 +		parent::__construct();
 +
 +		// Set a default query type (select)
 +		$this->simpleQueryType();
 +
 +		// Set a default access control
 +		$this->simpleAccessControl();
 +
 +		// Set default limit and offset
 +		$this->simpleLimitAndOffset();
 +	}
 +
 +	/**
 +	 * Set the query type.
 +	 *
 +	 * @param string $type The type of search - available are "select", "update", "delete", "insert".
 +	 */
 +	public function simpleQueryType($type = "select")
 +	{
 +		$type = strtolower(sanitise_string($type));
 +
 +		switch ($type)
 +		{
 +			case "insert" :
 +				return $this->setQueryType(InsertQueryTypeQueryComponent());
 +			break;
 +			case "delete" :
 +				return $this->setQueryType(DeleteQueryTypeQueryComponent());
 +			break;
 +			case "update" :
 +				return $this->setQueryType(UpdateQueryTypeQueryComponent());
 +			break;
 +			default: return $this->setQueryType(SelectQueryTypeQueryComponent());
 +		}
 +	}
 +
 +	/**
 +	 * Set a field to query in a select statement.
 +	 *
 +	 * @param string $table Table to query.
 +	 * @param string $field Field in that table.
 +	 */
 +	public function simpleSelectField($table, $field) { return $this->setSelectField(new SelectFieldQueryComponent($table, $field)); }
 +
 +	/**
 +	 * Add a select field to query in a select statement.
 +	 *
 +	 * @param string $table Table to query.
 +	 * @param string $field Field in that table.
 +	 */
 +	public function simpleAddSelectField($table, $field) { return $this->addSelectField(new SelectFieldQueryComponent($table, $field)); }
 +
 +	/**
 +	 * Add a set value to an update query.
 +	 *
 +	 * @param string $table The table to update.
 +	 * @param string $field The field in the table.
 +	 * @param mixed $value The value to set it to.
 +	 */
 +	public function simpleSet($table, $field, $value) { return $this->addSet(new SetQueryComponent($table, $field, $value)); }
 +
 +	/**
 +	 * Add a join to the table.
 +	 *
 +	 * @param string $table Table one to join...
 +	 * @param string $field Field 1 with...
 +	 * @param string $table2 Table 2 ...
 +	 * @param string $field2 Field...
 +	 * @param string $operator Using this operator
 +	 */
 +	public function simpleJoin($table1, $field1, $table2, $field2, $operator = "=") { return $this->addJoin(new JoinQueryComponent($table1, $field1, $table2, $field2, $operator)); }
 +
 +	/**
 +	 * Add a table to the query.
 +	 *
 +	 * @param string $table The table.
 +	 */
 +	public function simpleTable($table) { return $this->addTable(new TableQueryComponent($table)); }
 +
 +	/**
 +	 * Compare one table/field to another table/field.
 +	 *
 +	 * @param string $left_table The table on the left of the operator
 +	 * @param string $left_field The left field
 +	 * @param string $operator The operator eg "=" or "<"
 +	 * @param string $right_table The table on the right of the operator
 +	 * @param string $right_field The right field
 +	 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or"
 +	 */
 +	public function simpleWhereOnTable($left_table, $left_field, $operator, $right_table, $right_field, $link_operator = "and") { return $this->addWhere(new WhereQueryComponent($left_table, $left_field, $operator, $right_table, $right_field, $link_operator)); }
 +
 +	/**
 +	 * Compare one table/field to a value.
 +	 *
 +	 * @param string $left_table The table on the left of the operator
 +	 * @param string $left_field The left field
 +	 * @param string $operator The operator eg "=" or "<"
 +	 * @param string $value The value
 +	 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or"
 +	 */
 +	public function simpleWhereOnValue($left_table, $left_field, $operator, $value, $link_operator = "and") { return $this->addWhere(new WhereStaticQueryComponent($left_table, $left_field, $operator, $value, $link_operator)); }
 +
 +	/**
 +	 * Set access control.
 +	 *
 +	 * @param string $acl_table The table where the access control field is.
 +	 * @param string $acl_field The field containing the access control.
 +	 * @param string $object_owner_id_field The field in $object_owner_table containing the owner information.
 +	 */
 +	public function simpleAccessControl($acl_table = "entities", $acl_field = "access_id", $object_owner_id_field = "owner_guid") { return $this->setAccessControl(new AccessControlQueryComponent($acl_table, $acl_field, $acl_table, $object_owner_id_field)); }
 +
 +	/**
 +	 * Set the limit and offset.
 +	 *
 +	 * @param int $limit The limit.
 +	 * @param int $offset The offset.
 +	 */
 +	public function simpleLimitAndOffset($limit = 25, $offset = 0) { return $this->setLimitAndOffset(new LimitOffsetQueryComponent($limit, $offset)); }
 +
 +	/**
 +	 * Set the order query.
 +	 *
 +	 * @param string $table The table to query
 +	 * @param string $field The field to query
 +	 * @param string $order Order the query
 +	 */
 +	public function simpleOrder($table, $field, $order = "desc")
 +	{
 +		$table = sanitise_string($table);
 +		$field = sanitise_string($field);
 +		$order = strtolower(sanitise_string($order));
 +
 +		return $this->setOrder(new OrderQueryComponent($table, $field, $order)); break;
 +	}
 +}
 diff --git a/engine/classes/TableQueryComponent.php b/engine/classes/TableQueryComponent.php new file mode 100644 index 000000000..54e6ab021 --- /dev/null +++ b/engine/classes/TableQueryComponent.php @@ -0,0 +1,21 @@ +<?php
 +/**
 + * @class TableQueryComponent
 + * List of tables to select from or insert into.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class TableQueryComponent extends QueryComponent
 +{
 +	function __construct($table)
 +	{
 +		global $CONFIG;
 +
 +		$this->table = $CONFIG->dbprefix . sanitise_string($table);
 +	}
 +
 +	function __toString()
 +	{
 +		return $this->table;
 +	}
 +}
 diff --git a/engine/classes/UpdateQueryTypeQueryComponent.php b/engine/classes/UpdateQueryTypeQueryComponent.php new file mode 100644 index 000000000..226b14be7 --- /dev/null +++ b/engine/classes/UpdateQueryTypeQueryComponent.php @@ -0,0 +1,14 @@ +<?php
 +/**
 + * @class UpdateQueryTypeQueryComponent
 + * An update query.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class UpdateQueryTypeQueryComponent extends QueryTypeQueryComponent
 +{
 +	function __construct()
 +	{
 +		$this->query_type = "UPDATE";
 +	}
 +}
 diff --git a/engine/classes/WhereQueryComponent.php b/engine/classes/WhereQueryComponent.php new file mode 100644 index 000000000..3130be7f8 --- /dev/null +++ b/engine/classes/WhereQueryComponent.php @@ -0,0 +1,44 @@ +<?php
 +/**
 + * @class WhereQueryComponent
 + * A component of a where query.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class WhereQueryComponent extends QueryComponent
 +{
 +	/**
 +	 * A where query.
 +	 *
 +	 * @param string $left_table The table on the left of the operator
 +	 * @param string $left_field The left field
 +	 * @param string $operator The operator eg "=" or "<"
 +	 * @param string $right_table The table on the right of the operator
 +	 * @param string $right_field The right field
 +	 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or"
 +	 */
 +	function __construct($left_table, $left_field, $operator, $right_table, $right_field, $link_operator = "and")
 +	{
 +		global $CONFIG;
 +
 +		$this->link_operator = sanitise_string($link_operator);
 +		$this->left_table = $CONFIG->dbprefix . sanitise_string($left_table);
 +		$this->left_field = sanitise_string($left_field);
 +		$this->operator = sanitise_string($operator);
 +		$this->right_table = $CONFIG->dbprefix . sanitise_string($right_table);
 +		$this->right_field = sanitise_string($right_field);
 +	}
 +
 +	/**
 +	 * Return the SQL without the link operator.
 +	 */
 +	public function toStringNoLink()
 +	{
 +		return "{$this->left_table }.{$this->left_field} {$this->operator} {$this->right_table}.{$this->right_field}";
 +	}
 +
 +	function __toString()
 +	{
 +		return "{$this->link_operator} " . $this->toStringNoLink();
 +	}
 +}
 diff --git a/engine/classes/WhereSetQueryComponent.php b/engine/classes/WhereSetQueryComponent.php new file mode 100644 index 000000000..b5fe439a0 --- /dev/null +++ b/engine/classes/WhereSetQueryComponent.php @@ -0,0 +1,41 @@ +<?php
 +/**
 + * @class WhereSetQueryComponent
 + * A where query that may contain other where queries (in brackets).
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class WhereSetQueryComponent extends WhereQueryComponent
 +{
 +	/**
 +	 * Construct a subset of wheres.
 +	 *
 +	 * @param array $wheres An array of WhereQueryComponent
 +	 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or"
 +	 */
 +	function __construct(array $wheres, $link_operator = "and")
 +	{
 +		$this->link_operator = sanitise_string($link_operator);
 +		$this->wheres = $wheres;
 +	}
 +
 +	public function toStringNoLink()
 +	{
 +		$cnt = 0;
 +		$string = " (";
 +		foreach ($this->wheres as $where) {
 +			if (!($where instanceof WhereQueryComponent))
 +				throw new DatabaseException(elgg_echo('DatabaseException:WhereSetNonQuery'));
 +
 +			if (!$cnt)
 +				$string.= $where->toStringNoLink();
 +			else
 +				$string.=" $where ";
 +
 +			$cnt ++;
 +		}
 +		$string .= ")";
 +
 +		return $string;
 +	}
 +}
 diff --git a/engine/classes/WhereStaticQueryComponent.php b/engine/classes/WhereStaticQueryComponent.php new file mode 100644 index 000000000..ddc036fd1 --- /dev/null +++ b/engine/classes/WhereStaticQueryComponent.php @@ -0,0 +1,40 @@ +<?php
 +/**
 + * @class WhereStaticQueryComponent
 + * A component of a where query where there is no right hand table, rather a static value.
 + * @author Curverider Ltd
 + * @see Query
 + */
 +class WhereStaticQueryComponent extends WhereQueryComponent
 +{
 +	/**
 +	 * A where query.
 +	 *
 +	 * @param string $left_table The table on the left of the operator
 +	 * @param string $left_field The left field
 +	 * @param string $operator The operator eg "=" or "<"
 +	 * @param string $value The value
 +	 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or"
 +	 */
 +	function __construct($left_table, $left_field, $operator, $value, $link_operator = "and")
 +	{
 +		global $CONFIG;
 +
 +		$this->link_operator = sanitise_string($link_operator);
 +		$this->left_table = $CONFIG->dbprefix . sanitise_string($left_table);
 +		$this->left_field = sanitise_string($left_field);
 +		$this->operator = sanitise_string($operator);
 +		if (is_numeric($value))
 +			$this->value = (int)$value;
 +		else
 +			$this->value = "'".sanitise_string($value)."'";
 +	}
 +
 +	/**
 +	 * Return the SQL without the link operator.
 +	 */
 +	public function toStringNoLink()
 +	{
 +		return "{$this->left_table }.{$this->left_field} {$this->operator} {$this->value}";
 +	}
 +}
 diff --git a/engine/lib/access.php b/engine/lib/access.php index 4155fc408..80065fa72 100644 --- a/engine/lib/access.php +++ b/engine/lib/access.php @@ -11,9 +11,6 @@   * @link http://elgg.org/   */ -include dirname(dirname(__FILE__)).'/classes/ElggAccess.php'; - -  /**   * Return a string of access_ids for $user_id appropriate for inserting into an SQL IN clause.   * diff --git a/engine/lib/actions.php b/engine/lib/actions.php index c7abd5f18..cdad8ebab 100644 --- a/engine/lib/actions.php +++ b/engine/lib/actions.php @@ -257,5 +257,4 @@ function elgg_action_exist($action) {  	return (isset($CONFIG->actions[$action]) && file_exists($CONFIG->actions[$action]['file']));  } -  register_elgg_event_handler("init","system","actions_init"); diff --git a/engine/lib/admin.php b/engine/lib/admin.php index 8426adf8b..2fb38c230 100644 --- a/engine/lib/admin.php +++ b/engine/lib/admin.php @@ -9,7 +9,6 @@   * @link http://elgg.org/   */ -  /**   * Register an admin page with the admin panel.   * This function extends the view "admin/main" with the provided view. This view should provide a description @@ -292,7 +291,6 @@ function elgg_admin_notice_exists($id) {  	return ($notice) ? TRUE : FALSE;  } -  // Register init functions  register_elgg_event_handler('init', 'system', 'admin_init');  register_elgg_event_handler('pagesetup', 'system', 'admin_pagesetup'); diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php index 3c8bb2aad..806b4c806 100644 --- a/engine/lib/annotations.php +++ b/engine/lib/annotations.php @@ -9,10 +9,6 @@   * @link http://elgg.org/   */ -require_once 'extender.php'; - -require_once dirname(dirname(__FILE__)).'/classes/ElggAnnotation.php'; -  /**   * Convert a database row to a new ElggAnnotation   * diff --git a/engine/lib/api.php b/engine/lib/api.php index 7a6fd54af..d6e4557cb 100644 --- a/engine/lib/api.php +++ b/engine/lib/api.php @@ -9,13 +9,6 @@   * @link http://elgg.org/   */ -// Result classes ///////////////////////////////////////////////////////////////////////// - -require_once dirname(dirname(__FILE__)).'/classes/GenericResult.php'; -require_once dirname(dirname(__FILE__)).'/classes/SuccessResult.php'; -require_once dirname(dirname(__FILE__)).'/classes/ErrorResult.php'; -require_once dirname(dirname(__FILE__)).'/classes/ElggHMACCache.php'; -  // Primary Services API Server functions /////////////////////////////////////////////////////////////////////  /** diff --git a/engine/lib/cache.php b/engine/lib/cache.php index 3e8a75d7b..3414be140 100644 --- a/engine/lib/cache.php +++ b/engine/lib/cache.php @@ -7,9 +7,5 @@   * @subpackage API   * @author Curverider Ltd <info@elgg.com>   * @link http://elgg.org/ + * @todo deprecate this file?   */ - -require_once dirname(dirname(__FILE__)).'/classes/ElggCache.php'; -require_once dirname(dirname(__FILE__)).'/classes/ElggSharedMemoryCache.php'; -require_once dirname(dirname(__FILE__)).'/classes/ElggStaticVariableCache.php'; -require_once dirname(dirname(__FILE__)).'/classes/ElggFileCache.php'; diff --git a/engine/lib/calendar.php b/engine/lib/calendar.php index 5e4584515..115defa01 100644 --- a/engine/lib/calendar.php +++ b/engine/lib/calendar.php @@ -8,8 +8,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/Notable.php'; -  /**   * Return a timestamp for the start of a given day (defaults today).   * diff --git a/engine/lib/cron.php b/engine/lib/cron.php index 408a5c51f..7dc2ff3bd 100644 --- a/engine/lib/cron.php +++ b/engine/lib/cron.php @@ -8,8 +8,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/CronException.php'; -  /**   * Initialisation   * diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index ae6509454..7ddb91600 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -1919,8 +1919,6 @@ function is_ip_in_array(array $networks, $ip) {  	return false;  } -require_once dirname(dirname(__FILE__)).'/classes/Friendable.php'; -  /**   * Builds a URL from the a parts array like one returned by {@link parse_url()}.   * @@ -2268,6 +2266,10 @@ function js_page_handler($page) {  	}  } +function __autoload($class) { +    require_once dirname(dirname(__FILE__))."/classes/$class.php"; +} +  /**   * Emits a shutdown:system event upon PHP shutdown, but before database connections are dropped.   * diff --git a/engine/lib/entities.php b/engine/lib/entities.php index f2ff5108c..c75923250 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -15,12 +15,6 @@ $ENTITY_CACHE = NULL;  /// Cache subtype searches  $SUBTYPE_CACHE = NULL; -/// Require the locatable interface -// @todo Move this into start.php? -require_once('location.php'); - -require_once dirname(dirname(__FILE__)).'/classes/ElggEntity.php'; -  /**   * Initialise the entity cache.   */ diff --git a/engine/lib/exceptions.php b/engine/lib/exceptions.php index ccf017062..740ff885b 100644 --- a/engine/lib/exceptions.php +++ b/engine/lib/exceptions.php @@ -9,153 +9,3 @@   * @link http://elgg.org/   */ -// Top level ////////////////////////////////////////////////////////////////////////////// - -/** - * IOException - * An IO Exception, throw when an IO Exception occurs. Subclass for specific IO Exceptions. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class IOException extends Exception {} - -/** - * ClassException - * A class Exception, throw when there is a class error. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class ClassException extends Exception {} - -/** - * ConfigurationException - * There is a configuration error - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class ConfigurationException extends Exception {} - -/** - * SecurityException - * An Security Exception, throw when a Security Exception occurs. Subclass for specific Security Execeptions (access problems etc) - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class SecurityException extends Exception {} - -/** - * ClassNotFoundException - * An database exception, throw when a database exception happens, subclass if more detail is needed. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class DatabaseException extends Exception {} - -/** - * APIException - * The API Exception class, thrown by the API layer when an API call has an issue. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class APIException extends Exception {} - -/** - * CallException - * An exception thrown when there is a problem calling something. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class CallException extends Exception {} - -/** - * Data format exception - * An exception thrown when there is a problem in the format of some data. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class DataFormatException extends Exception {} - -// Class exceptions /////////////////////////////////////////////////////////////////////// - -/** - * InvalidClassException - * An invalid class Exception, throw when a class is invalid. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class InvalidClassException extends ClassException {} - -/** - * ClassNotFoundException - * An Class not found Exception, throw when an class can not be found occurs. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class ClassNotFoundException extends ClassException {} - -// Configuration exceptions /////////////////////////////////////////////////////////////// - -/** - * InstallationException - * Thrown when there is a major problem with the installation. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class InstallationException extends ConfigurationException {} - -// Call exceptions //////////////////////////////////////////////////////////////////////// - -/** - * NotImplementedException - * Thrown when a method or function has not been implemented, primarily used in development... you should - * not see these! - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class NotImplementedException extends CallException {} - -/** - * InvalidParameterException - * A parameter is invalid. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class InvalidParameterException extends CallException {} - -// Installation exception ///////////////////////////////////////////////////////////////// - -/** - * RegistrationException - * Could not register a new user for whatever reason. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Exceptions - */ -class RegistrationException extends InstallationException {}
\ No newline at end of file diff --git a/engine/lib/export.php b/engine/lib/export.php index 9fbd62a4d..5e97fecea 100644 --- a/engine/lib/export.php +++ b/engine/lib/export.php @@ -8,11 +8,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/Exportable.php'; -require_once dirname(dirname(__FILE__)).'/classes/Importable.php'; -require_once dirname(dirname(__FILE__)).'/classes/ExportException.php'; -require_once dirname(dirname(__FILE__)).'/classes/ImportException.php'; -  /**   * Get a UUID from a given object.   * diff --git a/engine/lib/extender.php b/engine/lib/extender.php index e222c2926..b36eefe04 100644 --- a/engine/lib/extender.php +++ b/engine/lib/extender.php @@ -9,8 +9,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/ElggExtender.php'; -  /**   * Detect the value_type for a given value.   * Currently this is very crude. diff --git a/engine/lib/filestore.php b/engine/lib/filestore.php index 74a8b0315..a7f395704 100644 --- a/engine/lib/filestore.php +++ b/engine/lib/filestore.php @@ -10,12 +10,6 @@   * @link http://elgg.org/   */ -include_once("objects.php"); - -require_once dirname(dirname(__FILE__)).'/classes/ElggFilestore.php'; -require_once dirname(dirname(__FILE__)).'/classes/ElggDiskFilestore.php'; -require_once dirname(dirname(__FILE__)).'/classes/ElggFile.php'; -  /**   * Get the size of the specified directory.   * diff --git a/engine/lib/group.php b/engine/lib/group.php index 22badc4b9..d103026bf 100644 --- a/engine/lib/group.php +++ b/engine/lib/group.php @@ -12,8 +12,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/ElggGroup.php'; -  /**   * Get the group entity.   * diff --git a/engine/lib/input.php b/engine/lib/input.php index 7e650c8de..17a330851 100644 --- a/engine/lib/input.php +++ b/engine/lib/input.php @@ -250,7 +250,6 @@ function input_livesearch_page_handler($page) {  	exit;  } -  function input_init() {  	// register an endpoint for live search / autocomplete.  	register_page_handler('livesearch', 'input_livesearch_page_handler'); diff --git a/engine/lib/install.php b/engine/lib/install.php index 42df3e17f..f1ad74b23 100644 --- a/engine/lib/install.php +++ b/engine/lib/install.php @@ -67,7 +67,6 @@ function db_check_settings($user, $password, $dbname, $host) {  	return $result;  } -  /**   * Returns whether or not the database has been installed   * diff --git a/engine/lib/location.php b/engine/lib/location.php index a424ece25..d0b3d6339 100644 --- a/engine/lib/location.php +++ b/engine/lib/location.php @@ -8,8 +8,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/Locatable.php'; -  /**   * Encode a location into a latitude and longitude, caching the result.   * diff --git a/engine/lib/memcache.php b/engine/lib/memcache.php index de1c001b5..d20e04625 100644 --- a/engine/lib/memcache.php +++ b/engine/lib/memcache.php @@ -10,8 +10,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/ElggMemcache.php'; -  /**   * Return true if memcache is available and configured.   * diff --git a/engine/lib/metadata.php b/engine/lib/metadata.php index 9ab32912a..b0a2a1e53 100644 --- a/engine/lib/metadata.php +++ b/engine/lib/metadata.php @@ -9,10 +9,6 @@   * @link http://elgg.org/   */ -require_once 'extender.php'; - -require_once dirname(dirname(__FILE__)).'/classes/ElggMetadata.php'; -  /**   * Convert a database row to a new ElggMetadata   * diff --git a/engine/lib/notification.php b/engine/lib/notification.php index 475a590ec..1bf6c3e79 100644 --- a/engine/lib/notification.php +++ b/engine/lib/notification.php @@ -213,13 +213,6 @@ function set_user_notification_setting($user_guid, $method, $value) {  }  /** - * Notification exception. - * @author Curverider Ltd - */ -class NotificationException extends Exception {} - - -/**   * Send a notification via email.   *   * @param ElggEntity $from The from user/site/object diff --git a/engine/lib/objects.php b/engine/lib/objects.php index 1c7f1640c..21fcf4cf7 100644 --- a/engine/lib/objects.php +++ b/engine/lib/objects.php @@ -1,5 +1,4 @@  <?php -  /**   * Elgg objects   * Functions to manage multiple or single objects in an Elgg install @@ -10,8 +9,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/ElggObject.php'; -  /**   * Return the object specific details of a object by a row.   * diff --git a/engine/lib/opendd.php b/engine/lib/opendd.php index dae6bc9d0..ae382881f 100644 --- a/engine/lib/opendd.php +++ b/engine/lib/opendd.php @@ -9,12 +9,6 @@   * @link http://elgg.org/   */ -include_once("xml.php"); - -require_once dirname(dirname(__FILE__)).'/classes/ODDDocument.php'; -require_once dirname(dirname(__FILE__)).'/classes/ODD.php'; -require_once dirname(dirname(__FILE__)).'/classes/ODDEntity.php'; -  /**   * Attempt to construct an ODD object out of a XmlElement or sub-elements.   * diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index e89e6007a..a36f2bf6d 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -9,23 +9,10 @@   * @link http://elgg.org/   */ -  /// Cache enabled plugins per page  $ENABLED_PLUGINS_CACHE = NULL;  /** - * PluginException - * - * A plugin Exception, thrown when an Exception occurs relating to the plugin mechanism. Subclass for specific plugin Exceptions. - * - * @package Elgg - * @subpackage Exceptions - */ -class PluginException extends Exception {} - -require_once dirname(dirname(__FILE__)).'/classes/ElggPlugin.php'; - -/**   * Returns a list of plugins to load, in the order that they should be loaded.   *   * @return array List of plugins diff --git a/engine/lib/query.php b/engine/lib/query.php index bdb28559f..d03d43339 100644 --- a/engine/lib/query.php +++ b/engine/lib/query.php @@ -1,889 +1,11 @@  <?php -	/** -	 * Elgg database query -	 * Contains a wrapper for performing database queries in a structured way. -	 * -	 * @package Elgg -	 * @subpackage Core -	 * @author Curverider Ltd -	 * @link http://elgg.org/ -	 */ - - -	/** -	 * @class QueryComponent Query component superclass. -	 * Component of a query. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	abstract class QueryComponent -	{ -		/** -		 * Associative array of fields and values -		 */ -		private $fields; - -		function __construct() -		{ -			$this->fields = array(); -		} - -		/** -		 * Class member get overloading -		 * -		 * @param string $name -		 * @return mixed -		 */ -		function __get($name) { -			return $this->fields[$name]; -		} - -		/** -		 * Class member set overloading -		 * -		 * @param string $name -		 * @param mixed $value -		 * @return void -		 */ -		function __set($name, $value) { -			$this->fields[$name] = $value; - -			return true; -		} -	} - -	/** -	 * @class SelectFieldQueryComponent Class representing a select field. -	 * This class represents a select field component. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class SelectFieldQueryComponent extends QueryComponent -	{ -		/** -		 * Construct a select field component -		 * -		 * @param string $table The table containing the field. -		 * @param string $field The field or "*" -		 */ -		function __construct($table, $field) -		{ -			global $CONFIG; - -			$this->table = $CONFIG->dbprefix . sanitise_string($table); -			$this->field = sanitise_string($field); -		} - -		function __toString() -		{ -			return "{$this->table}.{$this->field}"; -		} -	} - -	/** -	 * @class LimitOffsetQueryComponent -	 * Limit and offset clauses of a query. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class LimitOffsetQueryComponent extends QueryComponent -	{ -		/** -		 * Specify a limit and an offset. -		 * -		 * @param int $limit The limit. -		 * @param int $offset The offset. -		 */ -		function __construct($limit = 25, $offset = 0) -		{ -			$this->limit = (int)$limit; -			$this->offset = (int)$offset; -		} - -		function __toString() -		{ -			return "limit {$this->offset}, {$this->limit}"; -		} -	} - -	/** -	 * @class OrderQueryComponent -	 * Order the query results. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class OrderQueryComponent extends QueryComponent -	{ -		function __construct($table, $field, $order = "asc") -		{ -			global $CONFIG; - -			$this->table = $CONFIG->dbprefix . sanitise_string($table); -			$this->field = sanitise_string($field); -			$this->order = sanitise_string($order); -		} - -		function __toString() -		{ -			return "order by {$this->table}.{$this->field} {$this->order}"; -		} -	} - -	/** -	 * @class TableQueryComponent -	 * List of tables to select from or insert into. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class TableQueryComponent extends QueryComponent -	{ -		function __construct($table) -		{ -			global $CONFIG; - -			$this->table = $CONFIG->dbprefix . sanitise_string($table); -		} - -		function __toString() -		{ -			return $this->table; -		} -	} - -	/** -	 * @class AccessControlQueryComponent -	 * Access control component. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class AccessControlQueryComponent extends QueryComponent -	{ -		/** -		 * Construct the ACL. -		 * -		 * @param string $acl_table The table where the access control field is. -		 * @param string $acl_field The field containing the access control. -		 * @param string $object_owner_table The table containing the owner information for the stuff you're retrieving. -		 * @param string $object_owner_id_field The field in $object_owner_table containing the owner information -		 */ -		function __construct($acl_table = "entities", $acl_field = "access_id", $object_owner_table = "entities", $object_owner_id_field = "owner_guid") -		{ -			global $CONFIG; - -			$this->acl_table = $CONFIG->dbprefix . sanitise_string($acl_table); -			$this->acl_field = sanitise_string($acl_field); -			$this->object_owner_table = $CONFIG->dbprefix . sanitise_string($object_owner_table); -			$this->object_owner_id_field = sanitise_string($object_owner_id_field); -		} - -		function __toString() -		{ -			//$access = get_access_list(); -			// KJ - changed to use get_access_sql_suffix -			// Note: currently get_access_sql_suffix is hardwired to use -			// $acl_field = "access_id", $object_owner_table = $acl_table, and -			// $object_owner_id_field = "owner_guid" -			// @todo recode get_access_sql_suffix to make it possible to specify alternate field names -			return "and ".get_access_sql_suffix($this->acl_table); // Add access controls - -			//return "and ({$this->acl_table}.{$this->acl_field} in {$access} or ({$this->acl_table}.{$this->acl_field} = 0 and {$this->object_owner_table}.{$this->object_owner_id_field} = {$_SESSION['id']}))"; -		} -	} - -	/** -	 * @class JoinQueryComponent Join query. -	 * Represents a join query. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class JoinQueryComponent extends QueryComponent -	{ -		/** -		 * Construct a join query. -		 * @param string $table Table one to join... -		 * @param string $field Field 1 with... -		 * @param string $table2 Table 2 ... -		 * @param string $field2 Field... -		 * @param string $operator Using this operator -		 */ -		function __construct($table1, $field1, $table2, $field2, $operator = "=") -		{ -			global $CONFIG; - -			$this->table1 = $CONFIG->dbprefix . sanitise_string($table1); -			$this->field1 = sanitise_string($field1); -			$this->table2 = $CONFIG->dbprefix . sanitise_string($table2); -			$this->field2 = sanitise_string($field2); -			$this->operator = sanitise_string($operator); -		} - -		function __toString() -		{ -			return "join {$this->table2} on {$this->$table}.{$this->$field} {$this->$operator} {$this->$table2}.{$this->$field2}"; -		} -	} - -	/** -	 * @class SetQueryComponent Set query. -	 * Represents an update set query. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class SetQueryComponent extends QueryComponent -	{ -		/** -		 * Construct a setting query -		 * -		 * @param string $table The table to modify -		 * @param string $field The field to modify -		 * @param mixed $value The value to set it to -		 */ -		function __construct($table, $field, $value) -		{ -			global $CONFIG; - -			$this->table = $CONFIG->dbprefix . sanitise_string($table); -			$this->field = sanitise_string($field); -			if (is_numeric($value)) -				$this->value = (int)$value; -			else -				$this->value = "'".sanitise_string($value)."'"; -		} - -		function __toString() -		{ -			return "{$this->table}.{$this->field}={$this->value}"; -		} -	} - -	/** -	 * @class WhereQueryComponent -	 * A component of a where query. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class WhereQueryComponent extends QueryComponent -	{ -		/** -		 * A where query. -		 * -		 * @param string $left_table The table on the left of the operator -		 * @param string $left_field The left field -		 * @param string $operator The operator eg "=" or "<" -		 * @param string $right_table The table on the right of the operator -		 * @param string $right_field The right field -		 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or" -		 */ -		function __construct($left_table, $left_field, $operator, $right_table, $right_field, $link_operator = "and") -		{ -			global $CONFIG; - -			$this->link_operator = sanitise_string($link_operator); -			$this->left_table = $CONFIG->dbprefix . sanitise_string($left_table); -			$this->left_field = sanitise_string($left_field); -			$this->operator = sanitise_string($operator); -			$this->right_table = $CONFIG->dbprefix . sanitise_string($right_table); -			$this->right_field = sanitise_string($right_field); -		} - -		/** -		 * Return the SQL without the link operator. -		 */ -		public function toStringNoLink() -		{ -			return "{$this->left_table }.{$this->left_field} {$this->operator} {$this->right_table}.{$this->right_field}"; -		} - -		function __toString() -		{ -			return "{$this->link_operator} " . $this->toStringNoLink(); -		} -	} - -	/** -	 * @class WhereStaticQueryComponent -	 * A component of a where query where there is no right hand table, rather a static value. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class WhereStaticQueryComponent extends WhereQueryComponent -	{ -		/** -		 * A where query. -		 * -		 * @param string $left_table The table on the left of the operator -		 * @param string $left_field The left field -		 * @param string $operator The operator eg "=" or "<" -		 * @param string $value The value -		 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or" -		 */ -		function __construct($left_table, $left_field, $operator, $value, $link_operator = "and") -		{ -			global $CONFIG; - -			$this->link_operator = sanitise_string($link_operator); -			$this->left_table = $CONFIG->dbprefix . sanitise_string($left_table); -			$this->left_field = sanitise_string($left_field); -			$this->operator = sanitise_string($operator); -			if (is_numeric($value)) -				$this->value = (int)$value; -			else -				$this->value = "'".sanitise_string($value)."'"; -		} - -		/** -		 * Return the SQL without the link operator. -		 */ -		public function toStringNoLink() -		{ -			return "{$this->left_table }.{$this->left_field} {$this->operator} {$this->value}"; -		} -	} - -	/** -	 * @class WhereSetQueryComponent -	 * A where query that may contain other where queries (in brackets). -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class WhereSetQueryComponent extends WhereQueryComponent -	{ -		/** -		 * Construct a subset of wheres. -		 * -		 * @param array $wheres An array of WhereQueryComponent -		 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or" -		 */ -		function __construct(array $wheres, $link_operator = "and") -		{ -			$this->link_operator = sanitise_string($link_operator); -			$this->wheres = $wheres; -		} - -		public function toStringNoLink() -		{ -			$cnt = 0; -			$string = " ("; -			foreach ($this->wheres as $where) { -				if (!($where instanceof WhereQueryComponent)) -					throw new DatabaseException(elgg_echo('DatabaseException:WhereSetNonQuery')); - -				if (!$cnt) -					$string.= $where->toStringNoLink(); -				else -					$string.=" $where "; - -				$cnt ++; -			} -			$string .= ")"; - -			return $string; -		} -	} - -	/** -	 * @class QueryTypeQueryComponent -	 * What type of query is this? -	 * @author Curverider Ltd -	 * @see Query -	 */ -	abstract class QueryTypeQueryComponent extends QueryComponent -	{ -		function __toString() -		{ -			return $this->query_type; -		} -	} - -	/** -	 * @class SelectQueryTypeQueryComponent -	 * A select query. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class SelectQueryTypeQueryComponent extends QueryTypeQueryComponent -	{ -		function __construct() -		{ -			$this->query_type = "SELECT"; -		} -	} - -	/** -	 * @class InsertQueryTypeQueryComponent -	 * An insert query. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class InsertQueryTypeQueryComponent extends QueryTypeQueryComponent -	{ -		function __construct() -		{ -			$this->query_type = "INSERT INTO"; -		} -	} - -	/** -	 * @class DeleteQueryTypeQueryComponent -	 * A delete query. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class DeleteQueryTypeQueryComponent extends QueryTypeQueryComponent -	{ -		function __construct() -		{ -			$this->query_type = "DELETE FROM"; -		} -	} - -	/** -	 * @class UpdateQueryTypeQueryComponent -	 * An update query. -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class UpdateQueryTypeQueryComponent extends QueryTypeQueryComponent -	{ -		function __construct() -		{ -			$this->query_type = "UPDATE"; -		} -	} - -	/** -	 * @class Query Provides a framework to construct complex queries in a safer environment. -	 * -	 * The usage of this class depends on the type of query you are executing, but the basic idea is to -	 * construct a query out of pluggable classes. -	 * -	 * Once constructed SQL can be generated using the toString method, this should happen automatically -	 * if you pass the Query object to get_data or similar. -	 * -	 * To construct a query, create a new Query() object and begin populating it with the various classes -	 * that define the various aspects of the query. -	 * -	 * Notes: -	 * 	- You do not have to specify things in any particular order, provided you specify all required -	 * 	  components. -	 *  - With database tables you do not have to specify your db prefix, this will be added automatically. -	 *  - When constructing your query keep an eye on the error log - any problems will get spit out here. -	 * 	  Note also that __toString won't let you throw Exceptions (!!!) so these are caught and echoed to -	 *    the log instead. -	 * -	 * Here is an example of a select query which requests some data out of the entities table with an -	 * order and limit that uses a subset where and some normal where queries: -	 * -	 * <blockquote> -	 * 		// Construct the query -	 * 		$query = new Query(); -	 * -	 * 		// Say which table we're interested in -	 * 		$query->addTable(new TableQueryComponent("entities")); -	 * -	 * 		// What fields are we interested in -	 * 		$query->addSelectField(new SelectFieldQueryComponent("entities","*")); -	 * -	 * 		// Add access control (Default access control uses default fields on entities table. -	 * 		// Note that it will error without something specified here! -	 * 		$query->setAccessControl(new AccessControlQueryComponent()); -	 * -	 * 		// Set a limit and offset, may be omitted. -	 * 		$query->setLimitAndOffset(new LimitOffsetQueryComponent(10,0)); -	 * -	 * 		// Specify the order, may be omitted -	 * 		$query->setOrder(new OrderQueryComponent("entities", "subtype", "desc")); -	 * -	 * 		// Construct a where query -	 * 		// -	 * 		// This demonstrates a WhereSet which lets you have sub wheres, a -	 * 		// WhereStatic which lets you compare a table field against a value and a -	 * 		// Where which lets you compare a table/field with another table/field. -	 * 		$query->addWhere( -	 * 			new WhereSetQueryComponent( -	 * 				array( -	 * 					new WhereStaticQueryComponent("entities", "subtype","=", 1), -	 * 					new WhereQueryComponent("entities","subtype","=", "entities", "subtype") -	 * 				) -	 * 			) -	 * 		); -	 * -	 * 		get_data($query); -	 * </blockquote> -	 * -	 * @author Curverider Ltd -	 */ -	class Query -	{ - -		/// The limit of the query -		private $limit_and_offset; - -		/// Fields to return on a query -		private $fields; - -		/// Tables to use in a from query -		private $tables; - -		/// Join tables -		private $joins; - -		/// Set values -		private $sets; - -		/// Where query -		private $where; - -		/// Order by -		private $order; - -		/// The query type -		private $query_type; - -		/// ACL -		private $access_control; - -		/** -		 * Construct query & initialise variables -		 */ -		function __construct() -		{ -			$this->fields = array(); -			$this->tables = array(); -			$this->joins = array(); -			$this->where = array(); -			$this->sets = array(); - -			$this->setQueryType(new SelectQueryTypeQueryComponent()); -		} - -		/** -		 * Add limits and offsets to the query. -		 * -		 * @param LimitOffsetQueryComponent $component The limit and offset. -		 */ -		public function setLimitAndOffset(LimitOffsetQueryComponent $component) { $this->limit_and_offset = $component; } - -		/** -		 * Reset and set the field to the select statement. -		 * -		 * @param SelectFieldQueryComponent $component Table and field component. -		 */ -		public function setSelectField(SelectFieldQueryComponent $component) -		{ -			$this->fields = array(); -			return $this->addSelectField($component); -		} - -		/** -		 * Add a select field. -		 * -		 * @param SelectFieldQueryComponent $component Add a component. -		 */ -		public function addSelectField(SelectFieldQueryComponent $component) { $this->fields[] = $component; } - -		/** -		 * Add a join to the component. -		 * -		 * @param JoinQueryComponent $component The join. -		 */ -		public function addJoin(JoinQueryComponent $component) { $this->joins[] = $component; } - -		/** -		 * Set a field value in an update or insert statement. -		 * -		 * @param SetQueryComponent $component Fields to set. -		 */ -		public function addSet(SetQueryComponent $component) { $this->sets[] = $component; } - -		/** -		 * Set the query type, i.e. "select", "update", "insert" & "delete". -		 * -		 * @param QueryTypeQueryComponent $component The query type. -		 */ -		public function setQueryType(QueryTypeQueryComponent $component) { $this->query_type = $component; } - -		/** -		 * Attach an order component. -		 * -		 * @param OrderQueryComponent $component The order component. -		 */ -		public function setOrder(OrderQueryComponent $component) { $this->order = $component; } - -		/** -		 * Add a table to the query. -		 * -		 * @param TableQueryComponent $component Table to add. -		 */ -		public function addTable(TableQueryComponent $component) { $this->tables[] = $component; } - -		/** -		 * Add a where clause to the query. -		 * -		 * @param WhereQueryComponent $component The where component -		 */ -		public function addWhere(WhereQueryComponent $component) { $this->where[] = $component; } - -		/** -		 * Set access control. -		 * -		 * @param AccessControlQueryComponent $component Access control. -		 */ -		public function setAccessControl(AccessControlQueryComponent $component) { $this->access_control = $component; } - -		public function __toString() -		{ -			global $CONFIG; - -			$sql = ""; - -			try -			{ -				// Query prefix & fields -				if (!empty($this->query_type)) -				{ -					$sql .= "{$this->query_type} "; - -					if (!empty($this->fields)) -					{ -						$fields = ""; - -						foreach ($this->fields as $field) -							$fields .= "$field"; - -						$sql .= " $fields from "; -					} -					else -						throw new DatabaseException(elgg_echo('DatabaseException:SelectFieldsMissing')); -				} -				else -					throw new DatabaseException(elgg_echo('DatabaseException:UnspecifiedQueryType')); - -				// Tables -				if (!empty($this->tables)) -				{ -					foreach($this->tables as $table) -						$sql .= "$table, "; - -					$sql = trim($sql, ", "); -				} -				else -					throw new DatabaseException(elgg_echo('DatabaseException:NoTablesSpecified')); - -				// Joins on select queries -				if ($this->query_type->query_type == 'select') -				{ -					if (!empty($this->joins)) -					{ -						foreach($this->joins as $join) -							$sql .= "$join "; -					} -				} - -				// Setting values -				if ( -					($this->query_type->query_type == 'update') || -					($this->query_type->query_type == 'insert') -				) -				{ -					$sql .= "set "; - -					foreach ($this->sets as $set) -						$sql .= "$set, "; - -					$sql = trim($sql, ", ") . " "; -				} - -				// Where -				if (!empty($this->where)) -				{ -					$sql .= " where 1 "; - -					foreach ($this->where as $where) -						$sql .= "$where "; -				} - -				// Access control -				if (!empty($this->access_control)) -				{ - -					// Catch missing Where -					if (empty($this->where)) -						$sql .= " where 1 "; - -					$sql .= "{$this->access_control} "; -				} -				else -					throw new DatabaseException(elgg_echo('DatabaseException:NoACL')); - -				// Order by -				if (!empty($this->order)) -					$sql .= "{$this->order} "; - -				// Limits -				if (!empty($this->limit_and_offset)) -					$sql .= "{$this->limit_and_offset} "; - - - -			} catch (Exception $e) { -				trigger_error($e, E_USER_WARNING); -			} - - -			return $sql; -		} - -	} - -	/** -	 * @class SimpleQuery A wrapper for Query which provides simple interface for common functions. -	 * -	 * This class provides simple interface functions for constructing a (reasonably) standard database -	 * query. -	 * -	 * The constructor for this class sets a number of defaults, for example sets default access controls -	 * and a limit and offset - to change this then set it manually. -	 * -	 * @author Curverider Ltd -	 * @see Query -	 */ -	class SimpleQuery extends Query -	{ -		function __construct() -		{ -			parent::__construct(); - -			// Set a default query type (select) -			$this->simpleQueryType(); - -			// Set a default access control -			$this->simpleAccessControl(); - -			// Set default limit and offset -			$this->simpleLimitAndOffset(); -		} - -		/** -		 * Set the query type. -		 * -		 * @param string $type The type of search - available are "select", "update", "delete", "insert". -		 */ -		public function simpleQueryType($type = "select") -		{ -			$type = strtolower(sanitise_string($type)); - -			switch ($type) -			{ -				case "insert" : -					return $this->setQueryType(InsertQueryTypeQueryComponent()); -				break; -				case "delete" : -					return $this->setQueryType(DeleteQueryTypeQueryComponent()); -				break; -				case "update" : -					return $this->setQueryType(UpdateQueryTypeQueryComponent()); -				break; -				default: return $this->setQueryType(SelectQueryTypeQueryComponent()); -			} -		} - -		/** -		 * Set a field to query in a select statement. -		 * -		 * @param string $table Table to query. -		 * @param string $field Field in that table. -		 */ -		public function simpleSelectField($table, $field) { return $this->setSelectField(new SelectFieldQueryComponent($table, $field)); } - -		/** -		 * Add a select field to query in a select statement. -		 * -		 * @param string $table Table to query. -		 * @param string $field Field in that table. -		 */ -		public function simpleAddSelectField($table, $field) { return $this->addSelectField(new SelectFieldQueryComponent($table, $field)); } - -		/** -		 * Add a set value to an update query. -		 * -		 * @param string $table The table to update. -		 * @param string $field The field in the table. -		 * @param mixed $value The value to set it to. -		 */ -		public function simpleSet($table, $field, $value) { return $this->addSet(new SetQueryComponent($table, $field, $value)); } - -		/** -		 * Add a join to the table. -		 * -		 * @param string $table Table one to join... -		 * @param string $field Field 1 with... -		 * @param string $table2 Table 2 ... -		 * @param string $field2 Field... -		 * @param string $operator Using this operator -		 */ -		public function simpleJoin($table1, $field1, $table2, $field2, $operator = "=") { return $this->addJoin(new JoinQueryComponent($table1, $field1, $table2, $field2, $operator)); } - -		/** -		 * Add a table to the query. -		 * -		 * @param string $table The table. -		 */ -		public function simpleTable($table) { return $this->addTable(new TableQueryComponent($table)); } - -		/** -		 * Compare one table/field to another table/field. -		 * -		 * @param string $left_table The table on the left of the operator -		 * @param string $left_field The left field -		 * @param string $operator The operator eg "=" or "<" -		 * @param string $right_table The table on the right of the operator -		 * @param string $right_field The right field -		 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or" -		 */ -		public function simpleWhereOnTable($left_table, $left_field, $operator, $right_table, $right_field, $link_operator = "and") { return $this->addWhere(new WhereQueryComponent($left_table, $left_field, $operator, $right_table, $right_field, $link_operator)); } - -		/** -		 * Compare one table/field to a value. -		 * -		 * @param string $left_table The table on the left of the operator -		 * @param string $left_field The left field -		 * @param string $operator The operator eg "=" or "<" -		 * @param string $value The value -		 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or" -		 */ -		public function simpleWhereOnValue($left_table, $left_field, $operator, $value, $link_operator = "and") { return $this->addWhere(new WhereStaticQueryComponent($left_table, $left_field, $operator, $value, $link_operator)); } - -		/** -		 * Set access control. -		 * -		 * @param string $acl_table The table where the access control field is. -		 * @param string $acl_field The field containing the access control. -		 * @param string $object_owner_id_field The field in $object_owner_table containing the owner information. -		 */ -		public function simpleAccessControl($acl_table = "entities", $acl_field = "access_id", $object_owner_id_field = "owner_guid") { return $this->setAccessControl(new AccessControlQueryComponent($acl_table, $acl_field, $acl_table, $object_owner_id_field)); } - -		/** -		 * Set the limit and offset. -		 * -		 * @param int $limit The limit. -		 * @param int $offset The offset. -		 */ -		public function simpleLimitAndOffset($limit = 25, $offset = 0) { return $this->setLimitAndOffset(new LimitOffsetQueryComponent($limit, $offset)); } - -		/** -		 * Set the order query. -		 * -		 * @param string $table The table to query -		 * @param string $field The field to query -		 * @param string $order Order the query -		 */ -		public function simpleOrder($table, $field, $order = "desc") -		{ -			$table = sanitise_string($table); -			$field = sanitise_string($field); -			$order = strtolower(sanitise_string($order)); - -			return $this->setOrder(new OrderQueryComponent($table, $field, $order)); break; -		} -	} +/** + * Elgg database query + * Contains a wrapper for performing database queries in a structured way. + * + * @package Elgg + * @subpackage Core + * @author Curverider Ltd + * @link http://elgg.org/ + * @todo deprecate this file? + */
\ No newline at end of file diff --git a/engine/lib/relationships.php b/engine/lib/relationships.php index 81d18d1ca..7096ba882 100644 --- a/engine/lib/relationships.php +++ b/engine/lib/relationships.php @@ -9,8 +9,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/ElggRelationship.php'; -  /**   * Convert a database row to a new ElggRelationship   * diff --git a/engine/lib/river.php b/engine/lib/river.php index 09799aa59..15ad69c4b 100644 --- a/engine/lib/river.php +++ b/engine/lib/river.php @@ -135,7 +135,6 @@ function remove_from_river_by_id($id) {  	return delete_data("delete from {$CONFIG->dbprefix}river where id = {$id}");  } -  /**   * Sets the access ID on river items for a particular object   * diff --git a/engine/lib/sessions.php b/engine/lib/sessions.php index f2a534294..3af571f5c 100644 --- a/engine/lib/sessions.php +++ b/engine/lib/sessions.php @@ -13,9 +13,6 @@  /** Elgg magic session */  global $SESSION; -require_once dirname(dirname(__FILE__)).'/classes/ElggSession.php'; - -  /**   * Return the current logged in user, or NULL if no user is logged in.   * diff --git a/engine/lib/sites.php b/engine/lib/sites.php index ee556e86c..98f29952a 100644 --- a/engine/lib/sites.php +++ b/engine/lib/sites.php @@ -9,8 +9,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/ElggSite.php'; -  /**   * Return the site specific details of a site by a row.   * diff --git a/engine/lib/system_log.php b/engine/lib/system_log.php index 9a94fb94e..257f6e064 100644 --- a/engine/lib/system_log.php +++ b/engine/lib/system_log.php @@ -9,8 +9,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/Loggable.php'; -  /**   * Retrieve the system log based on a number of parameters.   * diff --git a/engine/lib/tags.php b/engine/lib/tags.php index e73444930..bb3b0e687 100644 --- a/engine/lib/tags.php +++ b/engine/lib/tags.php @@ -9,7 +9,6 @@   * @link http://elgg.org/   */ -  /**   * The algorithm working out the size of font based on the number of tags.   * This is quick and dirty. diff --git a/engine/lib/users.php b/engine/lib/users.php index 03d0d06c4..281833625 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -15,8 +15,6 @@ $USERNAME_TO_GUID_MAP_CACHE = array();  /// Map a user code to a cached GUID  $CODE_TO_GUID_MAP_CACHE = array(); -require_once dirname(dirname(__FILE__)).'/classes/ElggUser.php'; -  /**   * Return the user specific details of a user by a row.   * diff --git a/engine/lib/widgets.php b/engine/lib/widgets.php index 210aa198f..d8c0984b8 100644 --- a/engine/lib/widgets.php +++ b/engine/lib/widgets.php @@ -8,8 +8,6 @@   * @link http://elgg.org/   */ -require_once dirname(dirname(__FILE__)).'/classes/ElggWidget.php'; -  /**   * Register a particular context for use with widgets.   * diff --git a/engine/lib/xml-rpc.php b/engine/lib/xml-rpc.php index 79c3eba07..1c7f4ba38 100644 --- a/engine/lib/xml-rpc.php +++ b/engine/lib/xml-rpc.php @@ -9,26 +9,6 @@  	 * @link http://elgg.org/  	 */ -	// XMLRPC Call //////////////////////////////////////////////////////////////////////////// - -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCCall.php'; - -	 -	// Response classes /////////////////////////////////////////////////////////////////////// - -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCParameter.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCIntParameter.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCBoolParameter.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCStringParameter.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCDoubleParameter.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCDateParameter.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCBase64Parameter.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCStructParameter.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCArrayParameter.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCResponse.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCSuccessResponse.php'; -	require_once dirname(dirname(__FILE__)).'/classes/XMLRPCErrorResponse.php'; -	  	// Helper functions ///////////////////////////////////////////////////////////////////////  	/** diff --git a/engine/lib/xml.php b/engine/lib/xml.php index f9c5985c9..f186dd4bf 100644 --- a/engine/lib/xml.php +++ b/engine/lib/xml.php @@ -9,8 +9,6 @@  	 * @link http://elgg.org/  	 */ -	require_once dirname(dirname(__FILE__)).'/classes/XmlElement.php'; -  	/**  	 * This function serialises an object recursively into an XML representation.  	 * The function attempts to call $data->export() which expects a stdClass in return, otherwise it will attempt to | 
