XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
QueryArgument.class.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
3 
11 {
12 
18 
24 
30 
36 
42 
48 
54 
61  function __construct($tag, $ignore_value = FALSE)
62  {
63  static $number_of_arguments = 0;
64 
65  $this->argument_name = $tag->attrs->var;
66  if(!$this->argument_name)
67  {
68  $this->argument_name = str_replace('.', '_', $tag->attrs->name);
69  }
70  if(!$this->argument_name)
71  {
72  $this->argument_name = str_replace('.', '_', $tag->attrs->column);
73  }
74 
75  $this->variable_name = $this->argument_name;
76 
77  $number_of_arguments++;
78  $this->argument_name .= $number_of_arguments;
79 
80  $name = $tag->attrs->name;
81  if(!$name)
82  {
83  $name = $tag->attrs->column;
84  }
85  if(strpos($name, '.') === FALSE)
86  {
87  $this->column_name = $name;
88  }
89  else
90  {
91  list($prefix, $name) = explode('.', $name);
92  $this->column_name = $name;
93  $this->table_name = $prefix;
94  }
95 
96  if($tag->attrs->operation)
97  {
98  $this->operation = $tag->attrs->operation;
99  }
100 
101  $this->argument_validator = new QueryArgumentValidator($tag, $this);
102  $this->ignore_value = $ignore_value;
103  }
104 
105  function getArgumentName()
106  {
107  return $this->argument_name;
108  }
109 
110  function getColumnName()
111  {
112  return $this->column_name;
113  }
114 
115  function getTableName()
116  {
117  return $this->table_name;
118  }
119 
121  {
122  return $this->argument_validator->toString();
123  }
124 
126  {
127  if($this->operation)
128  {
129  return TRUE;
130  }
131  return FALSE;
132  }
133 
138  function toString()
139  {
140  if($this->isConditionArgument())
141  {
142  // Instantiation
143  $arg = sprintf("\n" . '${\'%s_argument\'} = new ConditionArgument(\'%s\', %s, \'%s\');' . "\n"
144  , $this->argument_name
145  , $this->variable_name
146  , '$args->' . $this->variable_name
147  , $this->operation
148  );
149  // Call methods to validate argument and ensure default value
150  $arg .= $this->argument_validator->toString();
151 
152  // Prepare condition string
153  $arg .= sprintf('${\'%s_argument\'}->createConditionValue();' . "\n"
154  , $this->argument_name
155  );
156 
157  // Check that argument passed validation, else return
158  $arg .= sprintf('if(!${\'%s_argument\'}->isValid()) return ${\'%s_argument\'}->getErrorMessage();' . "\n"
159  , $this->argument_name
160  , $this->argument_name
161  );
162  }
163  else
164  {
165  $arg = sprintf("\n" . '${\'%s_argument\'} = new Argument(\'%s\', %s);' . "\n"
166  , $this->argument_name
167  , $this->variable_name
168  , $this->ignore_value ? 'NULL' : '$args->{\'' . $this->variable_name . '\'}');
169 
170  $arg .= $this->argument_validator->toString();
171 
172  $arg .= sprintf('if(!${\'%s_argument\'}->isValid()) return ${\'%s_argument\'}->getErrorMessage();' . "\n"
175  );
176  }
177 
178  // If the argument is null, skip it
179  if($this->argument_validator->isIgnorable())
180  {
181  $arg = sprintf("if(isset(%s)) {", '$args->' . $this->variable_name)
182  . $arg
183  . sprintf("} else\n" . '${\'%s_argument\'} = NULL;', $this->argument_name);
184  }
185 
186  return $arg;
187  }
188 
189 }
190 /* End of file QueryArgument.class.php */
191 /* Location: ./classes/xml/xmlquery/queryargument/QueryArgument.class.php */
__construct($tag, $ignore_value=FALSE)