From ce16e90e8792f69f4b733a044280e0f38d651bb2 Mon Sep 17 00:00:00 2001 From: brettp Date: Mon, 25 Oct 2010 14:25:57 +0000 Subject: Closes #2511. Query object classes removed. git-svn-id: http://code.elgg.org/elgg/trunk@7119 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/classes/AccessControlQueryComponent.php | 39 ---- engine/classes/DeleteQueryTypeQueryComponent.php | 16 -- engine/classes/InsertQueryTypeQueryComponent.php | 13 -- engine/classes/JoinQueryComponent.php | 32 --- engine/classes/LimitOffsetQueryComponent.php | 25 -- engine/classes/OrderQueryComponent.php | 22 -- engine/classes/Query.php | 285 ----------------------- engine/classes/QueryComponent.php | 41 ---- engine/classes/QueryTypeQueryComponent.php | 13 -- engine/classes/SelectFieldQueryComponent.php | 27 --- engine/classes/SelectQueryTypeQueryComponent.php | 13 -- engine/classes/SetQueryComponent.php | 32 --- engine/classes/SimpleQuery.php | 151 ------------ engine/classes/TableQueryComponent.php | 20 -- engine/classes/UpdateQueryTypeQueryComponent.php | 13 -- engine/classes/WhereQueryComponent.php | 43 ---- engine/classes/WhereSetQueryComponent.php | 40 ---- engine/classes/WhereStaticQueryComponent.php | 39 ---- 18 files changed, 864 deletions(-) delete mode 100644 engine/classes/AccessControlQueryComponent.php delete mode 100644 engine/classes/DeleteQueryTypeQueryComponent.php delete mode 100644 engine/classes/InsertQueryTypeQueryComponent.php delete mode 100644 engine/classes/JoinQueryComponent.php delete mode 100644 engine/classes/LimitOffsetQueryComponent.php delete mode 100644 engine/classes/OrderQueryComponent.php delete mode 100644 engine/classes/Query.php delete mode 100644 engine/classes/QueryComponent.php delete mode 100644 engine/classes/QueryTypeQueryComponent.php delete mode 100644 engine/classes/SelectFieldQueryComponent.php delete mode 100644 engine/classes/SelectQueryTypeQueryComponent.php delete mode 100644 engine/classes/SetQueryComponent.php delete mode 100644 engine/classes/SimpleQuery.php delete mode 100644 engine/classes/TableQueryComponent.php delete mode 100644 engine/classes/UpdateQueryTypeQueryComponent.php delete mode 100644 engine/classes/WhereQueryComponent.php delete mode 100644 engine/classes/WhereSetQueryComponent.php delete mode 100644 engine/classes/WhereStaticQueryComponent.php diff --git a/engine/classes/AccessControlQueryComponent.php b/engine/classes/AccessControlQueryComponent.php deleted file mode 100644 index 07028462f..000000000 --- a/engine/classes/AccessControlQueryComponent.php +++ /dev/null @@ -1,39 +0,0 @@ -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']}))"; - } -} \ No newline at end of file diff --git a/engine/classes/DeleteQueryTypeQueryComponent.php b/engine/classes/DeleteQueryTypeQueryComponent.php deleted file mode 100644 index a697306d4..000000000 --- a/engine/classes/DeleteQueryTypeQueryComponent.php +++ /dev/null @@ -1,16 +0,0 @@ -query_type = "DELETE FROM"; - } -} diff --git a/engine/classes/InsertQueryTypeQueryComponent.php b/engine/classes/InsertQueryTypeQueryComponent.php deleted file mode 100644 index 17dc2f62f..000000000 --- a/engine/classes/InsertQueryTypeQueryComponent.php +++ /dev/null @@ -1,13 +0,0 @@ -query_type = "INSERT INTO"; - } -} diff --git a/engine/classes/JoinQueryComponent.php b/engine/classes/JoinQueryComponent.php deleted file mode 100644 index 25966f269..000000000 --- a/engine/classes/JoinQueryComponent.php +++ /dev/null @@ -1,32 +0,0 @@ -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 deleted file mode 100644 index dc938c74c..000000000 --- a/engine/classes/LimitOffsetQueryComponent.php +++ /dev/null @@ -1,25 +0,0 @@ -limit = (int)$limit; - $this->offset = (int)$offset; - } - - function __toString() - { - return "limit {$this->offset}, {$this->limit}"; - } -} diff --git a/engine/classes/OrderQueryComponent.php b/engine/classes/OrderQueryComponent.php deleted file mode 100644 index 06549df3a..000000000 --- a/engine/classes/OrderQueryComponent.php +++ /dev/null @@ -1,22 +0,0 @@ -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/Query.php b/engine/classes/Query.php deleted file mode 100644 index 6078894aa..000000000 --- a/engine/classes/Query.php +++ /dev/null @@ -1,285 +0,0 @@ - - * // 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); - * - * - */ -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 deleted file mode 100644 index 98d26c94e..000000000 --- a/engine/classes/QueryComponent.php +++ /dev/null @@ -1,41 +0,0 @@ -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 deleted file mode 100644 index 299a60be7..000000000 --- a/engine/classes/QueryTypeQueryComponent.php +++ /dev/null @@ -1,13 +0,0 @@ -query_type; - } -} diff --git a/engine/classes/SelectFieldQueryComponent.php b/engine/classes/SelectFieldQueryComponent.php deleted file mode 100644 index 322ddcb80..000000000 --- a/engine/classes/SelectFieldQueryComponent.php +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 983533054..000000000 --- a/engine/classes/SelectQueryTypeQueryComponent.php +++ /dev/null @@ -1,13 +0,0 @@ -query_type = "SELECT"; - } -} diff --git a/engine/classes/SetQueryComponent.php b/engine/classes/SetQueryComponent.php deleted file mode 100644 index 86084f1ae..000000000 --- a/engine/classes/SetQueryComponent.php +++ /dev/null @@ -1,32 +0,0 @@ -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 deleted file mode 100644 index 38dfaa7df..000000000 --- a/engine/classes/SimpleQuery.php +++ /dev/null @@ -1,151 +0,0 @@ -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 deleted file mode 100644 index 19dbe7c4e..000000000 --- a/engine/classes/TableQueryComponent.php +++ /dev/null @@ -1,20 +0,0 @@ -table = $CONFIG->dbprefix . sanitise_string($table); - } - - function __toString() - { - return $this->table; - } -} diff --git a/engine/classes/UpdateQueryTypeQueryComponent.php b/engine/classes/UpdateQueryTypeQueryComponent.php deleted file mode 100644 index 44d8781fa..000000000 --- a/engine/classes/UpdateQueryTypeQueryComponent.php +++ /dev/null @@ -1,13 +0,0 @@ -query_type = "UPDATE"; - } -} diff --git a/engine/classes/WhereQueryComponent.php b/engine/classes/WhereQueryComponent.php deleted file mode 100644 index 92062de32..000000000 --- a/engine/classes/WhereQueryComponent.php +++ /dev/null @@ -1,43 +0,0 @@ -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 deleted file mode 100644 index e476d9b43..000000000 --- a/engine/classes/WhereSetQueryComponent.php +++ /dev/null @@ -1,40 +0,0 @@ -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 deleted file mode 100644 index becc587ff..000000000 --- a/engine/classes/WhereStaticQueryComponent.php +++ /dev/null @@ -1,39 +0,0 @@ -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}"; - } -} -- cgit v1.2.3