diff --git a/classes/xml/xmlquery/argument/Argument.class.php b/classes/xml/xmlquery/argument/Argument.class.php index cf85710a6..a7c275ef9 100644 --- a/classes/xml/xmlquery/argument/Argument.class.php +++ b/classes/xml/xmlquery/argument/Argument.class.php @@ -3,21 +3,13 @@ class Argument { var $value; var $name; - var $type; var $isValid; var $errorMessage; function Argument($name, $value){ - $this->name = $name; - - if($this->type !== 'date'){ - $dbParser = XmlQueryParser::getDBParser(); - $this->value = $dbParser->escapeStringValue($value); - } - else - $this->value = $value; - + $this->value = $value; + $this->name = $name; $this->isValid = true; } @@ -40,22 +32,14 @@ } function escapeValue($value){ - if(in_array($this->type, array('date', 'varchar', 'char','text', 'bigtext'))){ - if(!is_array($value)) - $value = '\''.$value.'\''; - else { - $total = count($value); - for($i = 0; $i < $total; $i++) - $value[$i] = '\''.$value[$i].'\''; - } - } - return $value; - } - - function getType(){ - return $this->type; + if(is_string($value)){ + $dbParser = XmlQueryParser::getDBParser(); + return $dbParser->parseExpression($value); + } + return $value; } + function isValid(){ return $this->isValid; } @@ -69,15 +53,7 @@ $this->value = $default_value; } - function setColumnType($column_type){ - if(!isset($this->value)) return; - if($column_type === '') return; - - $this->type = $column_type; - - //if($column_type === '') $column_type = 'varchar'; - } function checkFilter($filter_type){ if(isset($this->value) && $this->value != ''){ diff --git a/classes/xml/xmlquery/argument/ConditionArgument.class.php b/classes/xml/xmlquery/argument/ConditionArgument.class.php index cad112b90..2d0c526a1 100644 --- a/classes/xml/xmlquery/argument/ConditionArgument.class.php +++ b/classes/xml/xmlquery/argument/ConditionArgument.class.php @@ -2,10 +2,16 @@ class ConditionArgument extends Argument { var $operation; - + var $type; + function ConditionArgument($name, $value, $operation){ parent::Argument($name, $value); $this->operation = $operation; + + if($this->type !== 'date'){ + $dbParser = XmlQueryParser::getDBParser(); + $this->value = $dbParser->escapeStringValue($this->value); + } } function createConditionValue(){ @@ -119,6 +125,35 @@ */ } - } + + function getType(){ + return $this->type; + } + + function setColumnType($column_type){ + if(!isset($this->value)) return; + if($column_type === '') return; + + $this->type = $column_type; + + //if($column_type === '') $column_type = 'varchar'; + + } + + function escapeValue($value){ + if(in_array($this->type, array('date', 'varchar', 'char','text', 'bigtext'))){ + if(!is_array($value)) + $value = '\''.$value.'\''; + else { + $total = count($value); + for($i = 0; $i < $total; $i++) + $value[$i] = '\''.$value[$i].'\''; + } + } + return $value; + } + + + } ?> \ 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 de5e8cfc9..5f7e0c73c 100644 --- a/classes/xml/xmlquery/queryargument/QueryArgument.class.php +++ b/classes/xml/xmlquery/queryargument/QueryArgument.class.php @@ -49,8 +49,13 @@ return $this->argument_validator->toString(); } + function isConditionArgument(){ + if($this->operation) return true; + return false; + } + function toString(){ - if($this->operation) + if($this->isConditionArgument()) $arg = sprintf("\n$%s_argument = new ConditionArgument('%s', %s, '%s');\n" , $this->argument_name , $this->argument_name @@ -67,7 +72,7 @@ $arg .= $this->argument_validator->toString(); - if($this->operation){ + if($this->isConditionArgument()){ $arg .= sprintf("$%s_argument->createConditionValue();\n" , $this->argument_name ); diff --git a/classes/xml/xmlquery/tags/navigation/IndexTag.class.php b/classes/xml/xmlquery/tags/navigation/IndexTag.class.php index 0d8f9829f..04e545696 100644 --- a/classes/xml/xmlquery/tags/navigation/IndexTag.class.php +++ b/classes/xml/xmlquery/tags/navigation/IndexTag.class.php @@ -10,11 +10,14 @@ function IndexTag($index){ $this->argument_name = $index->attrs->var; - $dbParser = XmlQueryParser::getDBParser(); - $index->attrs->default = $dbParser->parseExpression($index->attrs->default); + // Sort index - column by which to sort + //$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'); $this->argument = new QueryArgument($index); + + // Sort order - asc / desc $this->sort_order = $index->attrs->order; if(!in_array($this->sort_order, array("asc", "desc"))){ $arg->var = $this->sort_order; diff --git a/classes/xml/xmlquery/tags/query/QueryTag.class.php b/classes/xml/xmlquery/tags/query/QueryTag.class.php index 4f45aac21..ee8379d13 100644 --- a/classes/xml/xmlquery/tags/query/QueryTag.class.php +++ b/classes/xml/xmlquery/tags/query/QueryTag.class.php @@ -86,9 +86,10 @@ class QueryTag { foreach($arguments as $argument){ if(isset($argument) && $argument->getArgumentName()){ $prebuff .= $argument->toString(); - $prebuff .= sprintf("$%s_argument->setColumnType('%s');\n" - , $argument->getArgumentName() - , $this->column_type[$this->getQueryId()][$argument->getColumnName()] ); + if($argument->isConditionArgument()) + $prebuff .= sprintf("$%s_argument->setColumnType('%s');\n" + , $argument->getArgumentName() + , $this->column_type[$this->getQueryId()][$argument->getColumnName()] ); } } $prebuff .= "\n";