From 833dcfae37079bef310726034b28f77ca62d95d8 Mon Sep 17 00:00:00 2001 From: ucorina Date: Mon, 5 Sep 2011 14:15:20 +0000 Subject: [PATCH] Updated the way DB class files are included. git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9034 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DB.class.php | 87 +++++++++---- classes/xml/XmlQueryParser.class.php | 63 ++++++--- classes/xml/xmlquery/QueryParser.class.php | 121 ++++++++---------- .../queryargument/QueryArgument.class.php | 1 - .../QueryArgumentValidator.class.php | 2 - .../validator/Validator.class.php | 7 - .../tags/column/InsertColumnTag.class.php | 19 ++- .../tags/column/InsertColumnsTag.class.php | 31 ++--- .../tags/column/SelectColumnsTag.class.php | 37 +++--- .../tags/column/UpdateColumnTag.class.php | 15 +-- .../tags/column/UpdateColumnsTag.class.php | 29 ++--- .../condition/ConditionGroupTag.class.php | 21 ++- .../tags/condition/ConditionTag.class.php | 2 - .../tags/condition/ConditionsTag.class.php | 22 ++-- .../tags/navigation/IndexTag.class.php | 2 - .../tags/navigation/LimitTag.class.php | 2 - .../tags/navigation/NavigationTag.class.php | 23 ++-- .../xmlquery/tags/table/TablesTag.class.php | 28 ++-- 18 files changed, 270 insertions(+), 242 deletions(-) delete mode 100644 classes/xml/xmlquery/queryargument/validator/Validator.class.php diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index e822e9bdb..0fb1f4584 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -13,24 +13,30 @@ * queryid = module_name.query_name **/ - require_once(_XE_PATH_.'classes/xml/xmlquery/DBParser.class.php'); - require_once(_XE_PATH_.'classes/xml/xmlquery/argument/Argument.class.php'); - require_once(_XE_PATH_.'classes/xml/xmlquery/argument/SortArgument.class.php'); - require_once(_XE_PATH_.'classes/xml/xmlquery/argument/ConditionArgument.class.php'); - require_once(_XE_PATH_.'classes/xml/XmlQueryParser.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/expression/Expression.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/expression/SelectExpression.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/expression/InsertExpression.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/expression/UpdateExpression.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/table/Table.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/table/JoinTable.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/condition/ConditionGroup.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/condition/Condition.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/expression/StarExpression.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/order/OrderByColumn.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/limit/Limit.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/Query.class.php'); - require_once(_XE_PATH_.'classes/db/queryparts/Subquery.class.php'); + if(!defined('__XE_LOADED_DB_CLASS__')){ + define('__XE_LOADED_DB_CLASS__', 1); + + require(_XE_PATH_.'classes/xml/xmlquery/DBParser.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/QueryParser.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/argument/Argument.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/argument/SortArgument.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/argument/ConditionArgument.class.php'); + require(_XE_PATH_.'classes/xml/XmlQueryParser.class.php'); + + require(_XE_PATH_.'classes/db/queryparts/expression/Expression.class.php'); + require(_XE_PATH_.'classes/db/queryparts/expression/SelectExpression.class.php'); + require(_XE_PATH_.'classes/db/queryparts/expression/InsertExpression.class.php'); + require(_XE_PATH_.'classes/db/queryparts/expression/UpdateExpression.class.php'); + require(_XE_PATH_.'classes/db/queryparts/table/Table.class.php'); + require(_XE_PATH_.'classes/db/queryparts/table/JoinTable.class.php'); + require(_XE_PATH_.'classes/db/queryparts/condition/ConditionGroup.class.php'); + require(_XE_PATH_.'classes/db/queryparts/condition/Condition.class.php'); + require(_XE_PATH_.'classes/db/queryparts/expression/StarExpression.class.php'); + require(_XE_PATH_.'classes/db/queryparts/order/OrderByColumn.class.php'); + require(_XE_PATH_.'classes/db/queryparts/limit/Limit.class.php'); + require(_XE_PATH_.'classes/db/queryparts/Query.class.php'); + require(_XE_PATH_.'classes/db/queryparts/Subquery.class.php'); + } class DB { @@ -56,6 +62,7 @@ var $errstr = ''; ///< error message var $query = ''; ///< query string of latest executed query var $elapsed_time = 0; ///< elapsed time of latest executed query + var $elapsed_dbclass_time = 0; ///< elapsed time of latest executed query var $transaction_started = false; ///< transaction flag @@ -313,7 +320,10 @@ **/ function executeQuery($query_id, $args = NULL, $arg_columns = NULL, $database_type = 'master') { if(!$query_id) return new Object(-1, 'msg_invalid_queryid'); - $this->query_id = $query_id; + + $this->actDBClassStart(); + + $this->query_id = $query_id; $id_args = explode('.', $query_id); if(count($id_args) == 2) { @@ -322,20 +332,31 @@ $id = $id_args[1]; } elseif(count($id_args) == 3) { $target = $id_args[0]; - if(!in_array($target, array('addons','widgets'))) return; + if(!in_array($target, array('addons','widgets'))){ + $this->actDBClassFinish(); + return; + } $module = $id_args[1]; $id = $id_args[2]; } - if(!$target || !$module || !$id) return new Object(-1, 'msg_invalid_queryid'); + if(!$target || !$module || !$id){ + $this->actDBClassFinish(); + return new Object(-1, 'msg_invalid_queryid'); + } $xml_file = sprintf('%s%s/%s/queries/%s.xml', _XE_PATH_, $target, $module, $id); - if(!file_exists($xml_file)) return new Object(-1, 'msg_invalid_queryid'); + if(!file_exists($xml_file)){ + $this->actDBClassFinish(); + return new Object(-1, 'msg_invalid_queryid'); + } // look for cache file $cache_file = $this->checkQueryCacheFile($query_id, $xml_file); + $result = $this->_executeQuery($cache_file, $args, $query_id, $arg_columns, $database_type); + $this->actDBClassFinish(); // execute query - return $this->_executeQuery($cache_file, $args, $query_id, $arg_columns, $database_type); + return $result; } @@ -746,7 +767,27 @@ $this->_afterConnect($result); } + /** + * @brief start recording DBClass log + * @return none + **/ + function actDBClassStart() { + $this->setError(0, 'success'); + $this->act_dbclass_start = getMicroTime(); + $this->elapsed_dbclass_time = 0; + } + /** + * @brief finish recording DBClass log + * @return none + **/ + function actDBClassFinish() { + if(!$this->query) return; + $this->act_dbclass_finish = getMicroTime(); + $elapsed_dbclass_time = $this->act_dbclass_finish - $this->act_dbclass_start; + $this->elapsed_dbclass_time = $elapsed_dbclass_time; + $GLOBALS['__dbclass_elapsed_time__'] += $elapsed_dbclass_time; + } } ?> diff --git a/classes/xml/XmlQueryParser.class.php b/classes/xml/XmlQueryParser.class.php index 72ac107f1..ce893ed50 100644 --- a/classes/xml/XmlQueryParser.class.php +++ b/classes/xml/XmlQueryParser.class.php @@ -2,69 +2,100 @@ /** * @class NewXmlQueryParser * @author NHN (developers@xpressengine.com) - * @brief case to parse XE xml query + * @brief case to parse XE xml query * @version 0.1 * * @todo need to support extend query such as subquery, union * @todo include info about column types for parsing user input **/ - require_once(_XE_PATH_.'classes/xml/xmlquery/DBParser.class.php'); - require_once(_XE_PATH_.'classes/xml/xmlquery/QueryParser.class.php'); + if(!defined('__XE_LOADED_XML_CLASS__')){ + define('__XE_LOADED_XML_CLASS__', 1); + + require(_XE_PATH_.'classes/xml/xmlquery/tags/query/QueryTag.class.php'); + + require(_XE_PATH_.'classes/xml/xmlquery/tags/table/TableTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/table/TablesTag.class.php'); + + require(_XE_PATH_.'classes/xml/xmlquery/tags/column/ColumnTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/column/SelectColumnTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/column/InsertColumnTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/column/SelectColumnsTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/column/InsertColumnsTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/column/UpdateColumnsTag.class.php'); + + require(_XE_PATH_.'classes/xml/xmlquery/tags/condition/ConditionTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/condition/ConditionsTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/condition/JoinConditionsTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php'); + + require(_XE_PATH_.'classes/xml/xmlquery/tags/group/GroupsTag.class.php'); + + require(_XE_PATH_.'classes/xml/xmlquery/tags/navigation/NavigationTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/navigation/IndexTag.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/tags/navigation/LimitTag.class.php'); + + require(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/queryargument/SortQueryArgument.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php'); + require(_XE_PATH_.'classes/xml/xmlquery/queryargument/DefaultValue.class.php'); + } + class XmlQueryParser extends XmlParser { static $dbParser = null; var $db_type; - + function XmlQueryParser($db_type = NULL){ $this->db_type = $db_type; } - + function &getInstance($db_type = NULL){ static $theInstance = null; if(!isset($theInstance)){ $theInstance = new XmlQueryParser($db_type); - } + } return $theInstance; } - + function parse($query_id, $xml_file, $cache_file) { - + // Read xml file - $xml_obj = $this->getXmlFileContent($xml_file); - + $xml_obj = $this->getXmlFileContent($xml_file); + // insert, update, delete, select action $action = strtolower($xml_obj->query->attrs->action); if(!$action) return; $parser = new QueryParser($xml_obj->query); - + FileHandler::writeFile($cache_file, $parser->toString()); } - + // singleton function &getDBParser(){ if(!$self->dbParser){ is_a($this,'XmlQueryParser')?$self=&$this:$self=&XmlQueryParser::getInstance(); if(isset($self->db_type)) $oDB = &DB::getInstance($self->db_type); - else + else $oDB = &DB::getInstance(); $self->dbParser = $oDB->getParser(); } return $self->dbParser; } - + function setDBParser($value){ $self->dbParser = $value; } - + function getXmlFileContent($xml_file){ $buff = FileHandler::readFile($xml_file); $xml_obj = parent::parse($buff); if(!$xml_obj) return; unset($buff); - return $xml_obj; + return $xml_obj; } } ?> diff --git a/classes/xml/xmlquery/QueryParser.class.php b/classes/xml/xmlquery/QueryParser.class.php index 08fda0f27..2f1a3f20c 100644 --- a/classes/xml/xmlquery/QueryParser.class.php +++ b/classes/xml/xmlquery/QueryParser.class.php @@ -1,74 +1,65 @@ queryTag = new QueryTag($query, $isSubQuery); - } - - function getTableInfo($query_id, $table_name){ - $column_type = array(); - - $id_args = explode('.', $query_id); - if(count($id_args)==2) { - $target = 'modules'; - $module = $id_args[0]; - $id = $id_args[1]; - } elseif(count($id_args)==3) { - $target = $id_args[0]; - if(!in_array($target, array('modules','addons','widgets'))) return; - $module = $id_args[1]; - $id = $id_args[2]; - } - - // get column properties from the table - $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $module, $table_name); - if(!file_exists($table_file)) { - $searched_list = FileHandler::readDir(_XE_PATH_.'modules'); - $searched_count = count($searched_list); - for($i=0;$i<$searched_count;$i++) { - $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $searched_list[$i], $table_name); - if(file_exists($table_file)) break; + var $queryTag; + + function QueryParser($query, $isSubQuery = false) { + $this->queryTag = new QueryTag($query, $isSubQuery); + } + + function getTableInfo($query_id, $table_name) { + $column_type = array(); + + $id_args = explode('.', $query_id); + if (count($id_args) == 2) { + $target = 'modules'; + $module = $id_args[0]; + $id = $id_args[1]; + } elseif (count($id_args) == 3) { + $target = $id_args[0]; + if (!in_array($target, array('modules', 'addons', 'widgets'))) + return; + $module = $id_args[1]; + $id = $id_args[2]; } - } - if(file_exists($table_file)) { - $table_xml = FileHandler::readFile($table_file); - $xml_parser = new XmlParser(); - $table_obj = $xml_parser->parse($table_xml); - if($table_obj->table) { - if(isset($table_obj->table->column) && !is_array($table_obj->table->column)) - { - $table_obj->table->column = array($table_obj->table->column); - } - - foreach($table_obj->table->column as $k => $v) { - $column_type[$v->attrs->name] = $v->attrs->type; + // get column properties from the table + $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $module, $table_name); + if (!file_exists($table_file)) { + $searched_list = FileHandler::readDir(_XE_PATH_ . 'modules'); + $searched_count = count($searched_list); + for ($i = 0; $i < $searched_count; $i++) { + $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $searched_list[$i], $table_name); + if (file_exists($table_file)) + break; } } - } - - return $column_type; - } - - function toString(){ - return "queryTag->toString() - . 'return $query; ?>'; - } -} + + if (file_exists($table_file)) { + $table_xml = FileHandler::readFile($table_file); + $xml_parser = new XmlParser(); + $table_obj = $xml_parser->parse($table_xml); + if ($table_obj->table) { + if (isset($table_obj->table->column) && !is_array($table_obj->table->column)) { + $table_obj->table->column = array($table_obj->table->column); + } + + foreach ($table_obj->table->column as $k => $v) { + $column_type[$v->attrs->name] = $v->attrs->type; + } + } + } + + return $column_type; + } + + function toString() { + return "queryTag->toString() + . 'return $query; ?>'; + } + + } ?> \ No newline at end of file diff --git a/classes/xml/xmlquery/queryargument/QueryArgument.class.php b/classes/xml/xmlquery/queryargument/QueryArgument.class.php index d76f6bb26..3b55e467e 100644 --- a/classes/xml/xmlquery/queryargument/QueryArgument.class.php +++ b/classes/xml/xmlquery/queryargument/QueryArgument.class.php @@ -29,7 +29,6 @@ if($tag->attrs->operation) $this->operation = $tag->attrs->operation; - require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php'); $this->argument_validator = new QueryArgumentValidator($tag, $this); } diff --git a/classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php b/classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php index 03816e447..9d6d0baa5 100644 --- a/classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php +++ b/classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php @@ -1,6 +1,4 @@ \ No newline at end of file diff --git a/classes/xml/xmlquery/tags/column/InsertColumnTag.class.php b/classes/xml/xmlquery/tags/column/InsertColumnTag.class.php index c34f1bafc..18bb4b2de 100644 --- a/classes/xml/xmlquery/tags/column/InsertColumnTag.class.php +++ b/classes/xml/xmlquery/tags/column/InsertColumnTag.class.php @@ -1,4 +1,4 @@ -attrs->name); $dbParser = XmlQueryParser::getDBParser(); $this->name = $dbParser->parseColumnName($this->name); - require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php'); $this->argument = new QueryArgument($column); - } - + } + function getExpressionString(){ return sprintf('new InsertExpression(\'%s\', $%s_argument)' , $this->name - , $this->argument->argument_name); - } - + , $this->argument->argument_name); + } + function getArgument(){ return $this->argument; - } - + } + } ?> \ No newline at end of file diff --git a/classes/xml/xmlquery/tags/column/InsertColumnsTag.class.php b/classes/xml/xmlquery/tags/column/InsertColumnsTag.class.php index a067a6d10..88ed19ccb 100644 --- a/classes/xml/xmlquery/tags/column/InsertColumnsTag.class.php +++ b/classes/xml/xmlquery/tags/column/InsertColumnsTag.class.php @@ -1,4 +1,4 @@ -columns = array(); - + + function InsertColumnsTag($xml_columns) { + $this->columns = array(); + if(!$xml_columns) return; - - if(!is_array($xml_columns)) $xml_columns = array($xml_columns); - + + if(!is_array($xml_columns)) $xml_columns = array($xml_columns); + foreach($xml_columns as $column){ if($column->name === 'query') $this->columns[] = new QueryTag($column, true); else $this->columns[] = new InsertColumnTag($column); - } + } } - + function toString(){ $output_columns = 'array(' . PHP_EOL; foreach($this->columns as $column){ $output_columns .= $column->getExpressionString() . PHP_EOL . ','; } $output_columns = substr($output_columns, 0, -1); - $output_columns .= ')'; - return $output_columns; + $output_columns .= ')'; + return $output_columns; } function getArguments(){ @@ -42,8 +39,8 @@ $arguments[] = $column->getArgument(); } return $arguments; - } - + } + } ?> \ No newline at end of file diff --git a/classes/xml/xmlquery/tags/column/SelectColumnsTag.class.php b/classes/xml/xmlquery/tags/column/SelectColumnsTag.class.php index e23c48aed..404107a2f 100644 --- a/classes/xml/xmlquery/tags/column/SelectColumnsTag.class.php +++ b/classes/xml/xmlquery/tags/column/SelectColumnsTag.class.php @@ -1,40 +1,37 @@ column; $xml_queries = $xml_columns_tag->query; - - $this->columns = array(); - + + $this->columns = array(); + if(!$xml_columns) { $this->columns[] = new SelectColumnTag("*"); return; } - - if(!is_array($xml_columns)) $xml_columns = array($xml_columns); + + if(!is_array($xml_columns)) $xml_columns = array($xml_columns); foreach($xml_columns as $column){ $this->columns[] = new SelectColumnTag($column); } - - + + if(!$xml_queries) { return; } - - if(!is_array($xml_queries)) $xml_queries = array($xml_queries); + + if(!is_array($xml_queries)) $xml_queries = array($xml_queries); foreach($xml_queries as $column){ $this->columns[] = new QueryTag($column, true); - } + } } - + function toString(){ $output_columns = 'array(' . PHP_EOL; foreach($this->columns as $column){ @@ -44,10 +41,10 @@ $output_columns .= $column->getExpressionString() . PHP_EOL . ','; } $output_columns = substr($output_columns, 0, -1); - $output_columns .= ')'; - return $output_columns; + $output_columns .= ')'; + return $output_columns; } - + function getArguments(){ $arguments = array(); foreach($this->columns as $column){ @@ -55,6 +52,6 @@ $arguments = array_merge($arguments, $column->getArguments()); } return $arguments; - } + } } ?> \ No newline at end of file diff --git a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php index 9dcf1be9a..147c7bbe5 100644 --- a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php +++ b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php @@ -1,4 +1,4 @@ -attrs->name); $dbParser = XmlQueryParser::getDBParser(); $this->name = $dbParser->parseColumnName($this->name); - require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php'); $this->argument = new QueryArgument($column); } - + function getExpressionString(){ return sprintf('new UpdateExpression(\'%s\', $%s_argument)' , $this->name - , $this->argument->argument_name); - } - + , $this->argument->argument_name); + } + function getArgument(){ return $this->argument; - } + } } ?> \ No newline at end of file diff --git a/classes/xml/xmlquery/tags/column/UpdateColumnsTag.class.php b/classes/xml/xmlquery/tags/column/UpdateColumnsTag.class.php index 581f9ad8a..eb6ca94ea 100644 --- a/classes/xml/xmlquery/tags/column/UpdateColumnsTag.class.php +++ b/classes/xml/xmlquery/tags/column/UpdateColumnsTag.class.php @@ -1,4 +1,4 @@ -columns = array(); - - if(!is_array($xml_columns)) $xml_columns = array($xml_columns); - + + function UpdateColumnsTag($xml_columns) { + $this->columns = array(); + + if(!is_array($xml_columns)) $xml_columns = array($xml_columns); + foreach($xml_columns as $column){ if($column->name === 'query') $this->columns[] = new QueryTag($column, true); else $this->columns[] = new UpdateColumnTag($column); - } + } } - + function toString(){ $output_columns = 'array(' . PHP_EOL; foreach($this->columns as $column){ $output_columns .= $column->getExpressionString() . PHP_EOL . ','; } $output_columns = substr($output_columns, 0, -1); - $output_columns .= ')'; - return $output_columns; + $output_columns .= ')'; + return $output_columns; } - + function getArguments(){ $arguments = array(); foreach($this->columns as $column){ @@ -41,7 +38,7 @@ } return $arguments; } - + } ?> \ No newline at end of file diff --git a/classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php b/classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php index 1ddba44e6..2fa3609db 100644 --- a/classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php +++ b/classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php @@ -1,25 +1,24 @@ -pipe = $pipe; - + if(!is_array($conditions)) $conditions = array($conditions); - if(count($conditions))require_once(_XE_PATH_.'classes/xml/xmlquery/tags/condition/ConditionTag.class.php'); - + foreach($conditions as $condition){ //if($condition->node_name === 'query') $this->conditions[] = new QueryTag($condition, true); $this->conditions[] = new ConditionTag($condition); } } - + function getConditions(){ return $this->conditions; } - + function getConditionGroupString(){ $conditions_string = 'array('.PHP_EOL; foreach($this->conditions as $condition){ @@ -27,10 +26,10 @@ } $conditions_string = substr($conditions_string, 0, -2);//remove ',' $conditions_string .= ')'; - + return sprintf("new ConditionGroup(%s%s)", $conditions_string, $this->pipe ? ',\''.$this->pipe . '\'': ''); } - + function getArguments(){ $arguments = array(); foreach($this->conditions as $condition){ @@ -38,6 +37,6 @@ } return $arguments; } - + } ?> \ No newline at end of file diff --git a/classes/xml/xmlquery/tags/condition/ConditionTag.class.php b/classes/xml/xmlquery/tags/condition/ConditionTag.class.php index 38cebf2cc..29dfa70e9 100644 --- a/classes/xml/xmlquery/tags/condition/ConditionTag.class.php +++ b/classes/xml/xmlquery/tags/condition/ConditionTag.class.php @@ -31,8 +31,6 @@ $this->default_column = $this->query->toString(); } else if(($condition->attrs->var && !$isColumnName) || $isColumnName === false){ - require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php'); - $this->argument = new QueryArgument($condition); $this->argument_name = $this->argument->getArgumentName(); } diff --git a/classes/xml/xmlquery/tags/condition/ConditionsTag.class.php b/classes/xml/xmlquery/tags/condition/ConditionsTag.class.php index 828220b50..dcd676494 100644 --- a/classes/xml/xmlquery/tags/condition/ConditionsTag.class.php +++ b/classes/xml/xmlquery/tags/condition/ConditionsTag.class.php @@ -1,42 +1,40 @@ -condition_groups = array(); - + $xml_condition_list = array(); if($xml_conditions->condition) $xml_condition_list = $xml_conditions->condition; - + if($xml_conditions->query){ if(!is_array($xml_condition_list)) $xml_condition_list = array($xml_condition_list); if(!is_array($xml_conditions->query)) $xml_conditions->query = array($xml_conditions->query); $xml_condition_list = array_merge($xml_condition_list, $xml_conditions->query); } if($xml_condition_list){ - require_once(_XE_PATH_.'classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php'); $this->condition_groups[] = new ConditionGroupTag($xml_condition_list); } - + $xml_groups = $xml_conditions->group; if($xml_groups){ if(!is_array($xml_groups)) $xml_groups = array($xml_groups); - require_once(_XE_PATH_.'classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php'); foreach($xml_groups as $group){ $this->condition_groups[] = new ConditionGroupTag($group->condition, $group->attrs->pipe); } - } + } } - + function toString(){ $output_conditions = 'array(' . PHP_EOL; foreach($this->condition_groups as $condition){ $output_conditions .= $condition->getConditionGroupString() . PHP_EOL . ','; } $output_conditions = substr($output_conditions, 0, -1); - $output_conditions .= ')'; - return $output_conditions; + $output_conditions .= ')'; + return $output_conditions; } function getArguments(){ @@ -45,6 +43,6 @@ $arguments = array_merge($arguments, $condition->getArguments()); } return $arguments; - } + } } ?> \ No newline at end of file diff --git a/classes/xml/xmlquery/tags/navigation/IndexTag.class.php b/classes/xml/xmlquery/tags/navigation/IndexTag.class.php index 8fa708576..e12fe1c7b 100644 --- a/classes/xml/xmlquery/tags/navigation/IndexTag.class.php +++ b/classes/xml/xmlquery/tags/navigation/IndexTag.class.php @@ -14,8 +14,6 @@ //$dbParser = XmlQueryParser::getDBParser(); //$index->attrs->default = $dbParser->parseExpression($index->attrs->default); $this->default = $index->attrs->default; - require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php'); - require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/SortQueryArgument.class.php'); $this->argument = new QueryArgument($index); // Sort order - asc / desc diff --git a/classes/xml/xmlquery/tags/navigation/LimitTag.class.php b/classes/xml/xmlquery/tags/navigation/LimitTag.class.php index 2e6fb9a15..fc9350675 100644 --- a/classes/xml/xmlquery/tags/navigation/LimitTag.class.php +++ b/classes/xml/xmlquery/tags/navigation/LimitTag.class.php @@ -7,8 +7,6 @@ var $list_count; function LimitTag($index){ - require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php'); - if($index->page->attrs && $index->page_count->attrs){ $this->page = new QueryArgument($index->page); $this->page_count = new QueryArgument($index->page_count); diff --git a/classes/xml/xmlquery/tags/navigation/NavigationTag.class.php b/classes/xml/xmlquery/tags/navigation/NavigationTag.class.php index 1c364643e..062ae6ad3 100644 --- a/classes/xml/xmlquery/tags/navigation/NavigationTag.class.php +++ b/classes/xml/xmlquery/tags/navigation/NavigationTag.class.php @@ -1,14 +1,11 @@ -order = array(); if($xml_navigation) { @@ -19,10 +16,10 @@ $this->order[] = new IndexTag($order_info); } } - + if($xml_navigation->page->attrs || $xml_navigation->list_count->attrs) $this->limit = new LimitTag($xml_navigation); - + $list_count = $xml_navigation->list_count->attrs; $this->list_count = $list_count; @@ -31,19 +28,19 @@ $page = $xml_navigation->page->attrs; $this->page = $page ; - } + } } - + function getOrderByString(){ $output = 'array(' . PHP_EOL; foreach($this->order as $order){ $output .= $order->toString() . PHP_EOL . ','; } $output = substr($output, 0, -1); - $output .= ')'; - return $output; + $output .= ')'; + return $output; } - + function getLimitString(){ if ($this->limit) return $this->limit->toString(); else return ""; @@ -56,7 +53,7 @@ } if($this->limit) $arguments = array_merge($this->limit->getArguments(), $arguments); return $arguments; - } + } } ?> \ No newline at end of file diff --git a/classes/xml/xmlquery/tags/table/TablesTag.class.php b/classes/xml/xmlquery/tags/table/TablesTag.class.php index 3c1d6fcdb..19412658b 100644 --- a/classes/xml/xmlquery/tags/table/TablesTag.class.php +++ b/classes/xml/xmlquery/tags/table/TablesTag.class.php @@ -1,4 +1,4 @@ - or */ - require_once(_XE_PATH_.'classes/xml/xmlquery/tags/table/TableTag.class.php'); - class TablesTag { var $tables; - - function TablesTag($xml_tables_tag){ + + function TablesTag($xml_tables_tag){ $this->tables = array(); - + $xml_tables = $xml_tables_tag->table; if(!is_array($xml_tables)) $xml_tables = array($xml_tables); - + foreach($xml_tables as $tag){ if($tag->attrs->query == 'true'){ $this->tables[] = new QueryTag($tag, true); @@ -34,26 +32,26 @@ else { $this->tables[] = new TableTag($tag); } - } + } } - + function getTables(){ return $this->tables; } - + function toString(){ $output_tables = 'array(' . PHP_EOL; - foreach($this->tables as $table){ + foreach($this->tables as $table){ if(is_a($table, 'QueryTag')) $output_tables .= $table->toString() . PHP_EOL . ','; else - $output_tables .= $table->getTableString() . PHP_EOL . ','; + $output_tables .= $table->getTableString() . PHP_EOL . ','; } $output_tables = substr($output_tables, 0, -1); - $output_tables .= ')'; - return $output_tables; + $output_tables .= ')'; + return $output_tables; } - + function getArguments(){ $arguments = array(); foreach($this->tables as $table)