XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
Extravar.class.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
3 
9 class ExtraVar
10 {
11 
16  var $module_srl = null;
17 
22  var $keys = null;
23 
31  {
32  return new ExtraVar($module_srl);
33  }
34 
42  {
43  $this->module_srl = $module_srl;
44  }
45 
52  function setExtraVarKeys($extra_keys)
53  {
54  if(!is_array($extra_keys) || count($extra_keys) < 1)
55  {
56  return;
57  }
58 
59  foreach($extra_keys as $val)
60  {
61  $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid);
62  $this->keys[$val->idx] = $obj;
63  }
64  }
65 
71  function getExtraVars()
72  {
73  return $this->keys;
74  }
75 
76 }
77 
83 class ExtraItem
84 {
85 
90  var $module_srl = 0;
91 
96  var $idx = 0;
97 
102  var $name = 0;
103 
108  var $type = 'text';
109 
114  var $default = null;
115 
120  var $desc = '';
121 
126  var $is_required = 'N';
127 
132  var $search = 'N';
133 
138  var $value = null;
139 
144  var $eid = '';
145 
160  function __construct($module_srl, $idx, $name, $type = 'text', $default = null, $desc = '', $is_required = 'N', $search = 'N', $value = null, $eid = '')
161  {
162  if(!$idx)
163  {
164  return;
165  }
166 
167  $this->module_srl = $module_srl;
168  $this->idx = $idx;
169  $this->name = $name;
170  $this->type = $type;
171  $this->default = $default;
172  $this->desc = $desc;
173  $this->is_required = $is_required;
174  $this->search = $search;
175  $this->value = $value;
176  $this->eid = $eid;
177  }
178 
185  function setValue($value)
186  {
187  $this->value = $value;
188  }
189 
198  {
199  $value = trim($value);
200  if(!isset($value))
201  {
202  return;
203  }
204 
205  switch($type)
206  {
207  case 'homepage' :
208  if($value && !preg_match('/^([a-z]+):\/\//i', $value))
209  {
210  $value = 'http://' . $value;
211  }
212  return htmlspecialchars($value, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
213 
214  case 'tel' :
215  if(is_array($value))
216  {
217  $values = $value;
218  }
219  elseif(strpos($value, '|@|') !== FALSE)
220  {
221  $values = explode('|@|', $value);
222  }
223  elseif(strpos($value, ',') !== FALSE)
224  {
225  $values = explode(',', $value);
226  }
227 
228  $values = array_values($values);
229  for($i = 0, $c = count($values); $i < $c; $i++)
230  {
231  $values[$i] = trim(htmlspecialchars($values[$i], ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
232  }
233  return $values;
234 
235  case 'checkbox' :
236  case 'radio' :
237  case 'select' :
238  if(is_array($value))
239  {
240  $values = $value;
241  }
242  elseif(strpos($value, '|@|') !== FALSE)
243  {
244  $values = explode('|@|', $value);
245  }
246  elseif(strpos($value, ',') !== FALSE)
247  {
248  $values = explode(',', $value);
249  }
250  else
251  {
252  $values = array($value);
253  }
254 
255  $values = array_values($values);
256  for($i = 0, $c = count($values); $i < $c; $i++)
257  {
258  $values[$i] = trim(htmlspecialchars($values[$i], ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
259  }
260  return $values;
261 
262  case 'kr_zip' :
263  if(is_array($value))
264  {
265  $values = $value;
266  }
267  elseif(strpos($value, '|@|') !== false)
268  {
269  $values = explode('|@|', $value);
270  }
271  else
272  {
273  $values = array($value);
274  }
275 
276  $values = array_values($values);
277  for($i = 0, $c = count($values); $i < $c; $i++)
278  {
279  $values[$i] = trim(htmlspecialchars($values[$i], ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
280  }
281  return $values;
282 
283  //case 'date' :
284  //case 'email_address' :
285  //case 'text' :
286  //case 'textarea' :
287  default :
288  return htmlspecialchars($value, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
289  }
290  }
291 
297  function getValue()
298  {
299  return $this->_getTypeValue($this->type, $this->value);
300  }
301 
307  function getValueHTML()
308  {
309  $value = $this->_getTypeValue($this->type, $this->value);
310 
311  switch($this->type)
312  {
313  case 'homepage' :
314  return ($value) ? (sprintf('<a href="%s" target="_blank">%s</a>', $value, strlen($value) > 60 ? substr($value, 0, 40) . '...' . substr($value, -10) : $value)) : "";
315 
316  case 'email_address' :
317  return ($value) ? sprintf('<a href="mailto:%s">%s</a>', $value, $value) : "";
318 
319  case 'tel' :
320  return sprintf('%s-%s-%s', $value[0], $value[1], $value[2]);
321 
322  case 'textarea' :
323  return nl2br($value);
324 
325  case 'date' :
326  return zdate($value, "Y-m-d");
327 
328  case 'checkbox' :
329  case 'select' :
330  case 'radio' :
331  if(is_array($value))
332  {
333  return implode(',', $value);
334  }
335  return $value;
336 
337  case 'kr_zip' :
338  if(is_array($value))
339  {
340  return implode(' ', $value);
341  }
342  return $value;
343 
344  // case 'text' :
345  default :
346  return $value;
347  }
348  }
349 
355  function getFormHTML()
356  {
357  static $id_num = 1000;
358 
359  $type = $this->type;
360  $name = $this->name;
361  $value = $this->_getTypeValue($this->type, $this->value);
362  $default = $this->_getTypeValue($this->type, $this->default);
363  $column_name = 'extra_vars' . $this->idx;
364  $tmp_id = $column_name . '-' . $id_num++;
365 
366  $buff = array();
367  switch($type)
368  {
369  // Homepage
370  case 'homepage' :
371  $buff[] = '<input type="text" name="' . $column_name . '" value="' . $value . '" class="homepage" />';
372  break;
373  // Email Address
374  case 'email_address' :
375  $buff[] = '<input type="text" name="' . $column_name . '" value="' . $value . '" class="email_address" />';
376  break;
377  // Phone Number
378  case 'tel' :
379  $buff[] = '<input type="text" name="' . $column_name . '[]" value="' . $value[0] . '" size="4" maxlength="4" class="tel" />';
380  $buff[] = '<input type="text" name="' . $column_name . '[]" value="' . $value[1] . '" size="4" maxlength="4" class="tel" />';
381  $buff[] = '<input type="text" name="' . $column_name . '[]" value="' . $value[2] . '" size="4" maxlength="4" class="tel" />';
382  break;
383  // textarea
384  case 'textarea' :
385  $buff[] = '<textarea name="' . $column_name . '" rows="8" cols="42">' . $value . '</textarea>';
386  break;
387  // multiple choice
388  case 'checkbox' :
389  $buff[] = '<ul>';
390  foreach($default as $v)
391  {
392  $checked = '';
393  if($value && in_array(trim($v), $value))
394  {
395  $checked = ' checked="checked"';
396  }
397 
398  // Temporary ID for labeling
399  $tmp_id = $column_name . '-' . $id_num++;
400 
401  $buff[] =' <li><input type="checkbox" name="' . $column_name . '[]" id="' . $tmp_id . '" value="' . htmlspecialchars($v, ENT_COMPAT | ENT_HTML401, 'UTF-8', false) . '" ' . $checked . ' /><label for="' . $tmp_id . '">' . $v . '</label></li>';
402  }
403  $buff[] = '</ul>';
404  break;
405  // single choice
406  case 'select' :
407  $buff[] = '<select name="' . $column_name . '" class="select">';
408  foreach($default as $v)
409  {
410  $selected = '';
411  if($value && in_array(trim($v), $value))
412  {
413  $selected = ' selected="selected"';
414  }
415  $buff[] = ' <option value="' . $v . '" ' . $selected . '>' . $v . '</option>';
416  }
417  $buff[] = '</select>';
418  break;
419  // radio
420  case 'radio' :
421  $buff[] = '<ul>';
422  foreach($default as $v)
423  {
424  $checked = '';
425  if($value && in_array(trim($v), $value))
426  {
427  $checked = ' checked="checked"';
428  }
429 
430  // Temporary ID for labeling
431  $tmp_id = $column_name . '-' . $id_num++;
432 
433  $buff[] = '<li><input type="radio" name="' . $column_name . '" id="' . $tmp_id . '" ' . $checked . ' value="' . $v . '" class="radio" /><label for="' . $tmp_id . '">' . $v . '</label></li>';
434  }
435  $buff[] = '</ul>';
436  break;
437  // date
438  case 'date' :
439  // datepicker javascript plugin load
440  Context::loadJavascriptPlugin('ui.datepicker');
441 
442  $buff[] = '<input type="hidden" name="' . $column_name . '" value="' . $value . '" />';
443  $buff[] = '<input type="text" id="date_' . $column_name . '" value="' . zdate($value, 'Y-m-d') . '" class="date" />';
444  $buff[] = '<input type="button" value="' . Context::getLang('cmd_delete') . '" class="btn" id="dateRemover_' . $column_name . '" />';
445  $buff[] = '<script type="text/javascript">';
446  $buff[] = '//<![CDATA[';
447  $buff[] = '(function($){';
448  $buff[] = '$(function(){';
449  $buff[] = ' var option = { dateFormat: "yy-mm-dd", changeMonth:true, changeYear:true, gotoCurrent:false, yearRange:\'-100:+10\', onSelect:function(){';
450  $buff[] = ' $(this).prev(\'input[type="hidden"]\').val(this.value.replace(/-/g,""))}';
451  $buff[] = ' };';
452  $buff[] = ' $.extend(option,$.datepicker.regional[\'' . Context::getLangType() . '\']);';
453  $buff[] = ' $("#date_' . $column_name . '").datepicker(option);';
454  $buff[] = ' $("#date_' . $column_name . '").datepicker("option", "dateFormat", "yy-mm-dd");';
455  $buff[] = ' $("#dateRemover_' . $column_name . '").click(function(){';
456  $buff[] = ' $(this).siblings("input").val("");';
457  $buff[] = ' return false;';
458  $buff[] = ' })';
459  $buff[] = '});';
460  $buff[] = '})(jQuery);';
461  $buff[] = '//]]>';
462  $buff[] = '</script>';
463  break;
464  // address
465  case "kr_zip" :
466  if(($oKrzipModel = getModel('krzip')) && method_exists($oKrzipModel , 'getKrzipCodeSearchHtml' ))
467  {
468  $buff[] = $oKrzipModel->getKrzipCodeSearchHtml($column_name, $value);
469  }
470  break;
471  // General text
472  default :
473  $buff[] =' <input type="text" name="' . $column_name . '" value="' . ($value ? $value : $default) . '" class="text" />';
474  }
475  if($this->desc)
476  {
477  $oModuleController = getController('module');
478  $oModuleController->replaceDefinedLangCode($this->desc);
479  $buff[] = '<p>' . htmlspecialchars($this->desc, ENT_COMPAT | ENT_HTML401, 'UTF-8', false) . '</p>';
480  }
481 
482  return join(PHP_EOL, $buff);
483  }
484 
485 }
486 /* End of file ExtraVar.class.php */
487 /* Location: ./classes/extravar/ExtraVar.class.php */
getController($module_name)
Definition: func.inc.php:90
zdate($str, $format= 'Y-m-d H:i:s', $conversion=TRUE)
Definition: func.inc.php:692
$obj
Definition: ko.install.php:262
__construct($module_srl, $idx, $name, $type= 'text', $default=null, $desc= '', $is_required= 'N', $search= 'N', $value=null, $eid= '')
setExtraVarKeys($extra_keys)
loadJavascriptPlugin($plugin_name)
setValue($value)
_getTypeValue($type, $value)
& getInstance($module_srl)
__construct($module_srl)
getLang($code)
$obj module_srl
Definition: ko.install.php:270
getModel($module_name)
Definition: func.inc.php:145
$oModuleController
Definition: ko.install.php:287