XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
TablesTag.class.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
3 
21 class TablesTag
22 {
23 
28  var $tables;
29 
36  function __construct($xml_tables_tag, $xml_index_hints_tag = NULL)
37  {
38  $this->tables = array();
39 
40  $xml_tables = $xml_tables_tag->table;
41  if(!is_array($xml_tables))
42  {
43  $xml_tables = array($xml_tables);
44  }
45 
46  if($xml_index_hints_tag)
47  {
48  $index_nodes = $xml_index_hints_tag->index;
49  if(!is_array($index_nodes))
50  {
51  $index_nodes = array($index_nodes);
52  }
53  foreach($index_nodes as $index_node)
54  {
55  if(!isset($indexes[$index_node->attrs->table]))
56  {
57  $indexes[$index_node->attrs->table] = array();
58  }
59  $count = count($indexes[$index_node->attrs->table]);
60  $indexes[$index_node->attrs->table][$count] = (object) NULL;
61  $indexes[$index_node->attrs->table][$count]->name = $index_node->attrs->name;
62  $indexes[$index_node->attrs->table][$count]->type = $index_node->attrs->type;
63  }
64  }
65 
66  foreach($xml_tables as $tag)
67  {
68  if($tag->attrs->query == 'true')
69  {
70  $this->tables[] = new QueryTag($tag, true);
71  }
72  else
73  {
74  if(isset($indexes[$tag->attrs->name]) && $indexes[$tag->attrs->name])
75  {
76  $this->tables[] = new HintTableTag($tag, $indexes[$tag->attrs->name]);
77  }
78  else
79  {
80  $this->tables[] = new TableTag($tag);
81  }
82  }
83  }
84  }
85 
86  function getTables()
87  {
88  return $this->tables;
89  }
90 
91  function toString()
92  {
93  $output_tables = 'array(' . PHP_EOL;
94  foreach($this->tables as $table)
95  {
96  if(is_a($table, 'QueryTag'))
97  {
98  $output_tables .= $table->toString() . PHP_EOL . ',';
99  }
100  else
101  {
102  $output_tables .= $table->getTableString() . PHP_EOL . ',';
103  }
104  }
105  $output_tables = substr($output_tables, 0, -1);
106  $output_tables .= ')';
107  return $output_tables;
108  }
109 
110  function getArguments()
111  {
112  $arguments = array();
113  foreach($this->tables as $table)
114  {
115  $arguments = array_merge($arguments, $table->getArguments());
116  }
117  return $arguments;
118  }
119 
120 }
121 /* End of file TablesTag.class.php */
122 /* Location: ./classes/xml/xmlquery/tags/table/TablesTag.class.php */
__construct($xml_tables_tag, $xml_index_hints_tag=NULL)