mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-09 11:44:10 +09:00
Changed code to use dbParser as singleton - instead of passing it in the constructor every time.
git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0-DB@8392 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
abba8761cc
commit
52c3d503bc
20 changed files with 82 additions and 113 deletions
|
|
@ -23,22 +23,20 @@
|
|||
$action = strtolower($xml_obj->query->attrs->action);
|
||||
if(!$action) return;
|
||||
|
||||
//$oDB = &DB::getParser();
|
||||
//$dbParser = $oDB->getParser();
|
||||
$dbParser = $this->getDBParser();
|
||||
$parser = new QueryParser($xml_obj->query, $dbParser);
|
||||
$parser = new QueryParser($xml_obj->query);
|
||||
|
||||
FileHandler::writeFile($cache_file, $parser->toString());
|
||||
}
|
||||
|
||||
// singleton
|
||||
function getDBParser(){
|
||||
if(!$this->dbParser){
|
||||
function &getDBParser(){
|
||||
static $dbParser;
|
||||
if(!$dbParser){
|
||||
//$oDB = &DB::getParser();
|
||||
//$dbParser = $oDB->getParser();
|
||||
$this->dbParser = new DBParser('"');
|
||||
//self::$dbParser = $oDB->getParser();
|
||||
$dbParser = new DBParser('"');
|
||||
}
|
||||
return $this->dbParser;
|
||||
return $dbParser;
|
||||
}
|
||||
|
||||
function getXmlFileContent($xml_file){
|
||||
|
|
|
|||
|
|
@ -17,16 +17,12 @@ class QueryParser {
|
|||
var $action;
|
||||
var $query_id;
|
||||
|
||||
var $dbParser;
|
||||
|
||||
var $column_type;
|
||||
|
||||
function QueryParser($query, $dbParser){
|
||||
function QueryParser($query){
|
||||
$this->query = $query;
|
||||
$this->action = $this->query->attrs->action;
|
||||
$this->query_id = $this->query->attrs->id;
|
||||
|
||||
$this->dbParser = $dbParser;
|
||||
}
|
||||
|
||||
function getQueryId(){
|
||||
|
|
@ -97,20 +93,20 @@ class QueryParser {
|
|||
|
||||
function toString(){
|
||||
if($this->action == 'select'){
|
||||
$columns = new SelectColumnsTag($this->query->columns->column, $this->dbParser);
|
||||
$columns = new SelectColumnsTag($this->query->columns->column);
|
||||
}else if($this->action == 'insert'){
|
||||
$columns = new InsertColumnsTag($this->query->columns->column, $this->dbParser);
|
||||
$columns = new InsertColumnsTag($this->query->columns->column);
|
||||
}else if($this->action == 'update') {
|
||||
$columns = new UpdateColumnsTag($this->query->columns->column, $this->dbParser);
|
||||
$columns = new UpdateColumnsTag($this->query->columns->column);
|
||||
}else if($this->action == 'delete') {
|
||||
$columns = new DeleteColumnsTag($this->query->columns->column, $this->dbParser);
|
||||
$columns = new DeleteColumnsTag($this->query->columns->column);
|
||||
}
|
||||
|
||||
|
||||
$tables = new TablesTag($this->query->tables->table, $this->dbParser);
|
||||
$conditions = new ConditionsTag($this->query->conditions, $this->dbParser);
|
||||
$groups = new GroupsTag($this->query->groups->group, $this->dbParser);
|
||||
$navigation = new NavigationTag($this->query->navigation, $this->dbParser);
|
||||
$tables = new TablesTag($this->query->tables->table);
|
||||
$conditions = new ConditionsTag($this->query->conditions);
|
||||
$groups = new GroupsTag($this->query->groups->group);
|
||||
$navigation = new NavigationTag($this->query->navigation);
|
||||
|
||||
$this->setTableColumnTypes($tables);
|
||||
|
||||
|
|
@ -139,7 +135,6 @@ class QueryParser {
|
|||
$buff .= '$output->orderby = ' . $navigation->getOrderByString() .';';
|
||||
|
||||
return "<?php if(!defined('__ZBXE__')) exit();\n"
|
||||
. "\$dbParser = new DBParser('".$this->dbParser->getEscapeChar()."');\n"
|
||||
. sprintf('$output->query_id = "%s";%s', $this->query_id, "\n")
|
||||
. sprintf('$output->action = "%s";%s', $this->action, "\n")
|
||||
. $prebuff
|
||||
|
|
|
|||
|
|
@ -12,10 +12,8 @@
|
|||
|
||||
class ColumnTag {
|
||||
var $name;
|
||||
var $dbParser;
|
||||
|
||||
function ColumnTag($name, $dbParser){
|
||||
$this->dbParser = $dbParser;
|
||||
function ColumnTag($name){
|
||||
$this->name = $name;
|
||||
}
|
||||
}
|
||||
|
|
@ -10,9 +10,10 @@
|
|||
class DeleteColumnTag extends ColumnTag {
|
||||
var $argument;
|
||||
|
||||
function DeleteColumnTag($column, $dbParser) {
|
||||
parent::ColumnTag($column->attrs->name, $dbParser);
|
||||
$this->name = $this->dbParser->parseColumnName($this->name);
|
||||
function DeleteColumnTag($column) {
|
||||
parent::ColumnTag($column->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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,12 +10,9 @@
|
|||
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/DeleteColumnTag.class.php');
|
||||
|
||||
class DeleteColumnsTag{
|
||||
var $dbParser;
|
||||
var $columns;
|
||||
|
||||
function DeleteColumnsTag($xml_columns, $dbParser) {
|
||||
$this->dbParser = $dbParser;
|
||||
|
||||
function DeleteColumnsTag($xml_columns) {
|
||||
$this->columns = array();
|
||||
|
||||
if(!$xml_columns)
|
||||
|
|
@ -24,7 +21,7 @@
|
|||
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
||||
|
||||
foreach($xml_columns as $column){
|
||||
$this->columns[] = new DeleteColumnTag($column, $this->dbParser);
|
||||
$this->columns[] = new DeleteColumnTag($column);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,9 +10,10 @@
|
|||
class InsertColumnTag extends ColumnTag {
|
||||
var $argument;
|
||||
|
||||
function InsertColumnTag($column, $dbParser) {
|
||||
parent::ColumnTag($column->attrs->name, $dbParser);
|
||||
$this->name = $this->dbParser->parseColumnName($this->name);
|
||||
function InsertColumnTag($column) {
|
||||
parent::ColumnTag($column->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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,12 +10,9 @@
|
|||
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/InsertColumnTag.class.php');
|
||||
|
||||
class InsertColumnsTag{
|
||||
var $dbParser;
|
||||
var $columns;
|
||||
|
||||
function InsertColumnsTag($xml_columns, $dbParser) {
|
||||
$this->dbParser = $dbParser;
|
||||
|
||||
function InsertColumnsTag($xml_columns) {
|
||||
$this->columns = array();
|
||||
|
||||
if(!$xml_columns)
|
||||
|
|
@ -24,7 +21,7 @@
|
|||
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
||||
|
||||
foreach($xml_columns as $column){
|
||||
$this->columns[] = new InsertColumnTag($column, $this->dbParser);
|
||||
$this->columns[] = new InsertColumnTag($column);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,13 @@
|
|||
var $alias;
|
||||
var $click_count;
|
||||
|
||||
function SelectColumnTag($column, $dbParser){
|
||||
parent::ColumnTag($column->attrs->name, $dbParser);
|
||||
function SelectColumnTag($column){
|
||||
parent::ColumnTag($column->attrs->name);
|
||||
if(!$this->name) $this->name = "*";
|
||||
if($this->name != "*")
|
||||
$this->name = $this->dbParser->parseExpression($this->name);
|
||||
if($this->name != "*") {
|
||||
$dbParser = XmlQueryParser::getDBParser();
|
||||
$this->name = $dbParser->parseExpression($this->name);
|
||||
}
|
||||
|
||||
$this->alias = $column->attrs->alias;
|
||||
$this->click_count = $column->attrs->click_count;
|
||||
|
|
@ -25,7 +27,8 @@
|
|||
if($this->name == '*') return "new StarExpression()";
|
||||
if($this->click_count)
|
||||
return sprintf('new ClickCountExpression(%s, %s, $args->%s)', $this->name, $this->alias,$this->click_count);
|
||||
return sprintf('new SelectExpression(\'%s\'%s)', $this->name, $this->alias ? ', \''.$this->dbParser->escape($this->alias) .'\'': '');
|
||||
$dbParser = XmlQueryParser::getDBParser();
|
||||
return sprintf('new SelectExpression(\'%s\'%s)', $this->name, $this->alias ? ', \''.$dbParser->escape($this->alias) .'\'': '');
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -4,23 +4,20 @@
|
|||
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/SelectColumnTag.class.php');
|
||||
|
||||
class SelectColumnsTag {
|
||||
var $dbParser;
|
||||
var $columns;
|
||||
|
||||
function SelectColumnsTag($xml_columns, $dbParser){
|
||||
$this->dbParser = $dbParser;
|
||||
|
||||
function SelectColumnsTag($xml_columns){
|
||||
$this->columns = array();
|
||||
|
||||
if(!$xml_columns) {
|
||||
$this->columns[] = new SelectColumnTag("*", $this->dbParser);
|
||||
$this->columns[] = new SelectColumnTag("*");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
||||
|
||||
foreach($xml_columns as $column){
|
||||
$this->columns[] = new SelectColumnTag($column, $this->dbParser);
|
||||
$this->columns[] = new SelectColumnTag($column);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,9 +12,10 @@
|
|||
class UpdateColumnTag extends ColumnTag {
|
||||
var $argument;
|
||||
|
||||
function UpdateColumnTag($column, $dbParser) {
|
||||
parent::ColumnTag($column->attrs->name, $dbParser);
|
||||
$this->name = $this->dbParser->parseColumnName($this->name);
|
||||
function UpdateColumnTag($column) {
|
||||
parent::ColumnTag($column->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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,23 +11,15 @@
|
|||
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php');
|
||||
|
||||
class UpdateColumnsTag{
|
||||
var $dbParser;
|
||||
var $columns;
|
||||
|
||||
function UpdateColumnsTag($xml_columns, $dbParser) {
|
||||
$this->dbParser = $dbParser;
|
||||
|
||||
function UpdateColumnsTag($xml_columns) {
|
||||
$this->columns = array();
|
||||
|
||||
if(!$xml_columns) {
|
||||
$this->columns[] = new UpdateColumnTag("*", $this->dbParser);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
|
||||
|
||||
foreach($xml_columns as $column){
|
||||
$this->columns[] = new UpdateColumnTag($column, $this->dbParser);
|
||||
$this->columns[] = new UpdateColumnTag($column);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,17 @@
|
|||
<?php
|
||||
|
||||
class ConditionGroupTag {
|
||||
var $dbParser;
|
||||
|
||||
class ConditionGroupTag {
|
||||
var $conditions;
|
||||
var $pipe;
|
||||
|
||||
function ConditionGroupTag($conditions, $dbParser, $pipe = ""){
|
||||
$this->dbParser = $dbParser;
|
||||
function ConditionGroupTag($conditions, $pipe = ""){
|
||||
$this->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){
|
||||
$this->conditions[] = new ConditionTag($condition, $dbParser);
|
||||
$this->conditions[] = new ConditionTag($condition);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
*/
|
||||
|
||||
class ConditionTag {
|
||||
var $dbParser;
|
||||
var $operation;
|
||||
var $column_name;
|
||||
|
||||
|
|
@ -17,15 +16,15 @@
|
|||
var $argument;
|
||||
var $default_column;
|
||||
|
||||
function ConditionTag($condition, $dbParser){
|
||||
$this->dbParser = $dbParser;
|
||||
function ConditionTag($condition){
|
||||
$this->operation = $condition->attrs->operation;
|
||||
$this->pipe = $condition->attrs->pipe;
|
||||
$this->column_name = $this->dbParser->parseColumnName($condition->attrs->column);
|
||||
$dbParser = XmlQueryParser::getDBParser();
|
||||
$this->column_name = $dbParser->parseColumnName($condition->attrs->column);
|
||||
// TODO fix this hack - argument_name is initialized in three places :) [ here, queryArgument and queryArgumentValidator]
|
||||
$this->argument_name = $condition->attrs->var;
|
||||
if(!$this->argument_name) $this->argument_name = $condition->attrs->column;
|
||||
$this->default_column = $this->dbParser->parseColumnName($condition->attrs->default);
|
||||
$this->default_column = $dbParser->parseColumnName($condition->attrs->default);
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php');
|
||||
$this->argument = new QueryArgument($condition);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,14 @@
|
|||
<?php
|
||||
class ConditionsTag {
|
||||
var $dbParser;
|
||||
var $condition_groups;
|
||||
|
||||
function ConditionsTag($xml_conditions, $dbParser){
|
||||
$this->dbParser = $dbParser;
|
||||
function ConditionsTag($xml_conditions){
|
||||
$this->condition_groups = array();
|
||||
|
||||
$xml_condition_list = $xml_conditions->condition;
|
||||
if($xml_condition_list){
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php');
|
||||
$this->condition_groups[] = new ConditionGroupTag($xml_condition_list, $this->dbParser);
|
||||
$this->condition_groups[] = new ConditionGroupTag($xml_condition_list);
|
||||
}
|
||||
|
||||
$xml_groups = $xml_conditions->group;
|
||||
|
|
@ -18,7 +16,7 @@
|
|||
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, $this->dbParser, $group->pipe);
|
||||
$this->condition_groups[] = new ConditionGroupTag($group->condition, $group->pipe);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
class JoinConditionsTag extends ConditionsTag {
|
||||
|
||||
function JoinConditionsTag($xml_conditions, $dbParser){
|
||||
parent::ConditionsTag($xml_conditions, $dbParser);
|
||||
function JoinConditionsTag($xml_conditions){
|
||||
parent::ConditionsTag($xml_conditions);
|
||||
$this->condition_groups[0]->conditions[0]->setPipe("");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,21 +2,20 @@
|
|||
|
||||
class GroupsTag {
|
||||
var $groups;
|
||||
var $dbParser;
|
||||
|
||||
function GroupsTag($xml_groups, $dbParser){
|
||||
$this->dbParser = $dbParser;
|
||||
|
||||
function GroupsTag($xml_groups){
|
||||
$this->groups = array();
|
||||
|
||||
if($xml_groups) {
|
||||
if(!is_array($xml_groups)) $xml_groups = array($xml_groups);
|
||||
|
||||
$dbParser = XmlQueryParser::getDBParser();
|
||||
for($i=0;$i<count($xml_groups);$i++) {
|
||||
$group = $xml_groups[$i];
|
||||
$column = trim($group->attrs->column);
|
||||
if(!$column) continue;
|
||||
$column = $this->dbParser->parseExpression($column);
|
||||
|
||||
$column = $dbParser->parseExpression($column);
|
||||
$this->groups[] = $column;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,17 @@
|
|||
<?php
|
||||
|
||||
class IndexTag {
|
||||
var $dbParser;
|
||||
|
||||
class IndexTag {
|
||||
var $argument_name;
|
||||
var $argument;
|
||||
var $default;
|
||||
var $sort_order;
|
||||
var $sort_order_argument;
|
||||
|
||||
function IndexTag($index, $dbParser){
|
||||
$this->dbParser = $dbParser;
|
||||
function IndexTag($index){
|
||||
$this->argument_name = $index->attrs->var;
|
||||
$index->attrs->default = $this->dbParser->parseExpression($index->attrs->default);
|
||||
|
||||
$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);
|
||||
|
|
|
|||
|
|
@ -2,20 +2,19 @@
|
|||
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/navigation/IndexTag.class.php');
|
||||
|
||||
class NavigationTag {
|
||||
var $dbParser;
|
||||
var $order;
|
||||
var $list_count;
|
||||
var $page_count;
|
||||
var $page;
|
||||
|
||||
function NavigationTag($xml_navigation, $dbParser){
|
||||
function NavigationTag($xml_navigation){
|
||||
$this->order = array();
|
||||
if($xml_navigation) {
|
||||
$order = $xml_navigation->index;
|
||||
if($order) {
|
||||
if(!is_array($order)) $order = array($order);
|
||||
foreach($order as $order_info) {
|
||||
$this->order[] = new IndexTag($order_info, $dbParser);
|
||||
$this->order[] = new IndexTag($order_info);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,13 +15,12 @@
|
|||
var $join_type;
|
||||
var $conditions;
|
||||
|
||||
var $dbParser;
|
||||
|
||||
function TableTag($table, $dbParser){
|
||||
$this->dbParser = $dbParser;
|
||||
function TableTag($table){
|
||||
|
||||
$this->unescaped_name = $table->attrs->name;
|
||||
$this->name = $this->dbParser->parseTableName($table->attrs->name);
|
||||
|
||||
$dbParser = XmlQueryParser::getDBParser();
|
||||
$this->name = $dbParser->parseTableName($table->attrs->name);
|
||||
$this->alias = $table->attrs->alias;
|
||||
//if(!$this->alias) $this->alias = $alias;
|
||||
|
||||
|
|
@ -44,16 +43,17 @@
|
|||
}
|
||||
|
||||
function getTableString(){
|
||||
$dbParser = XmlQueryParser::getDBParser();
|
||||
if($this->isJoinTable()){
|
||||
$conditionsTag = new JoinConditionsTag($this->conditions, $this->dbParser);
|
||||
$conditionsTag = new JoinConditionsTag($this->conditions);
|
||||
return sprintf('new JoinTable(\'%s\', \'%s\', "%s", %s)'
|
||||
, $this->dbParser->escape($this->name)
|
||||
, $this->dbParser->escape($this->alias)
|
||||
, $dbParser->escape($this->name)
|
||||
, $dbParser->escape($this->alias)
|
||||
, $this->join_type, $conditionsTag->toString());
|
||||
}
|
||||
return sprintf('new Table(\'%s\'%s)'
|
||||
, $this->dbParser->escape($this->name)
|
||||
, $this->alias ? ', \'' . $this->dbParser->escape($this->alias) .'\'' : '');
|
||||
, $dbParser->escape($this->name)
|
||||
, $this->alias ? ', \'' . $dbParser->escape($this->alias) .'\'' : '');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,16 @@
|
|||
<?php
|
||||
|
||||
class TablesTag {
|
||||
var $dbParser;
|
||||
var $tables;
|
||||
|
||||
function TablesTag($xml_tables, $dbParser){
|
||||
$this->dbParser = $dbParser;
|
||||
function TablesTag($xml_tables){
|
||||
$this->tables = array();
|
||||
if(!is_array($xml_tables)) $xml_tables = array($xml_tables);
|
||||
|
||||
if(count($xml_tables)) require_once(_XE_PATH_.'classes/xml/xmlquery/tags/table/TableTag.class.php');
|
||||
|
||||
foreach($xml_tables as $table){
|
||||
$this->tables[] = new TableTag($table, $this->dbParser);
|
||||
$this->tables[] = new TableTag($table);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue