XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
QueryParser.class.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
3 
17 {
18 
24  var $queryTag;
25 
33  function __construct($query = NULL, $isSubQuery = FALSE)
34  {
35  if($query)
36  {
37  $this->queryTag = new QueryTag($query, $isSubQuery);
38  }
39  }
40 
51  function getTableInfo($query_id, $table_name)
52  {
53  $column_type = array();
54  $module = '';
55 
56  $id_args = explode('.', $query_id);
57  if(count($id_args) == 2)
58  {
59  $target = 'modules';
60  $module = $id_args[0];
61  $id = $id_args[1];
62  }
63  else if(count($id_args) == 3)
64  {
65  $target = $id_args[0];
66  $targetList = array('modules' => 1, 'addons' => 1, 'widgets' => 1);
67  if(!isset($targetList[$target]))
68  {
69  return;
70  }
71  $module = $id_args[1];
72  $id = $id_args[2];
73  }
74 
75  // get column properties from the table
76  $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $module, $table_name);
77  if(!file_exists($table_file))
78  {
79  $searched_list = FileHandler::readDir(_XE_PATH_ . 'modules');
80  $searched_count = count($searched_list);
81  for($i = 0; $i < $searched_count; $i++)
82  {
83  $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $searched_list[$i], $table_name);
84  if(file_exists($table_file))
85  {
86  break;
87  }
88  }
89  }
90 
91  if(file_exists($table_file))
92  {
93  $table_xml = FileHandler::readFile($table_file);
94  $xml_parser = new XmlParser();
95  $table_obj = $xml_parser->parse($table_xml);
96  if($table_obj->table)
97  {
98  if(isset($table_obj->table->column) && !is_array($table_obj->table->column))
99  {
100  $table_obj->table->column = array($table_obj->table->column);
101  }
102 
103  foreach($table_obj->table->column as $k => $v)
104  {
105  $column_type[$v->attrs->name] = $v->attrs->type;
106  }
107  }
108  }
109 
110  return $column_type;
111  }
112 
118  function toString()
119  {
120  return "<?php if(!defined('__XE__')) exit();\n"
121  . $this->queryTag->toString()
122  . 'return $query; ?>';
123  }
124 
125 }
126 /* End of file QueryParser.class.php */
127 /* Location: ./classes/xml/xmlquery/QueryParser.class.php */
getTableInfo($query_id, $table_name)
__construct($query=NULL, $isSubQuery=FALSE)
const _XE_PATH_
Definition: config.inc.php:49
readFile($filename)
readDir($path, $filter= '', $to_lower=FALSE, $concat_prefix=FALSE)