From 3928e8ec370eaa384678de6716befd0bb0a32fea Mon Sep 17 00:00:00 2001 From: ucorina Date: Tue, 1 Nov 2011 13:56:24 +0000 Subject: [PATCH] Fix for xml condition tag - when no "var" attribute existed, functions were not evaluated (e.g. "curdate"). git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9785 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../tags/condition/ConditionTag.class.php | 32 ++++++++++++------- .../db/xml_query/cubrid/CubridSelectTest.php | 9 ++++++ 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/classes/xml/xmlquery/tags/condition/ConditionTag.class.php b/classes/xml/xmlquery/tags/condition/ConditionTag.class.php index 41474b172..c2eedd66d 100644 --- a/classes/xml/xmlquery/tags/condition/ConditionTag.class.php +++ b/classes/xml/xmlquery/tags/condition/ConditionTag.class.php @@ -37,19 +37,29 @@ $this->argument_name = $this->argument->getArgumentName(); } else { - $default_value = $condition->attrs->default; - if(isset($default_value)){ - if($isColumnName){ - $default_value = "'" . $default_value . "'"; - } - else if(in_array($this->operation, array('in', 'between', 'not in'))) - $default_value = "\"" . $default_value . "\""; - else if(!$isColumnName && !is_numeric($default_value) && !is_array($default_value)){ - if(strpos($default_value, "'")) - $default_value = "\"\'" . $default_value . "\"\'"; + if(isset($condition->attrs->default)){ + if(in_array($this->operation, array('in', 'between', 'not in'))){ + $default_value = $condition->attrs->default; + if(strpos($default_value, "'") !== false) + $default_value = "\"" . $default_value . "\""; else - $default_value = "\"'" . $default_value . "'\""; + $default_value = "'" . $default_value . "'"; + } + else { + $default_value_object = new DefaultValue($this->column_name, $condition->attrs->default); + $default_value = $default_value_object->toString(); + + if($default_value_object->isStringFromFunction()){ + $default_value = '"\'".' . $default_value . '."\'"'; } + + if($default_value_object->isString() && !$isColumnName && !is_numeric( $condition->attrs->default)){ + if(strpos($default_value, "'") !== false) + $default_value = "\"" . $default_value . "\""; + else + $default_value = "'" . $default_value . "'"; + } + } $this->default_column = $default_value; } else diff --git a/test-phpUnit/db/xml_query/cubrid/CubridSelectTest.php b/test-phpUnit/db/xml_query/cubrid/CubridSelectTest.php index 113d9c1b0..44514a630 100644 --- a/test-phpUnit/db/xml_query/cubrid/CubridSelectTest.php +++ b/test-phpUnit/db/xml_query/cubrid/CubridSelectTest.php @@ -385,4 +385,13 @@ $this->_test($xml_file, $argsString, $expected); } + function test_getExpiredSession_curdate(){ + $xml_file = _XE_PATH_ . "modules/session/queries/getExpiredSessions.xml"; + $argsString = ''; + $expected = 'select "session_key" + from "xe_session" as "session" + where "expired" <= ' . date("YmdHis"); + $this->_test($xml_file, $argsString, $expected); + } + } \ No newline at end of file