PageRenderTime 35ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/quicky/classes/plugins/block.form.php

https://bitbucket.org/seyar/parshin.local
PHP | 55 lines | 55 code | 0 blank | 0 comment | 13 complexity | 2b755ebf5e4184598441bf17cd206201 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1
  1. <?php
  2. function quicky_block_form($params,$content,$compiler)
  3. {
  4. $block_name = 'form';
  5. $params = $compiler->_parse_params($params);
  6. var_dump($params);
  7. if (!isset($params['name']) && !isset($params['no_quicky_form'])) {return $compiler->_syntax_error('Missing parameter \'name\' in form tag.');}
  8. $mode = !isset($params['no_quicky_form']);
  9. $auto_object = isset($params['auto_object']);
  10. unset($params['no_quicky_form']);
  11. unset($params['auto_object']);
  12. $code = '';
  13. if ($mode)
  14. {
  15. if (!class_exists('Quicky_form'))
  16. {
  17. if ($auto_object) {require_once QUICKY_DIR.'quicky.form.class.php';}
  18. else {return $compiler->_syntax_error('Class Quicky_form isn\'t loaded');}
  19. }
  20. $name = $compiler->_dequote($params['name']);
  21. if (!isset(Quicky_form::$forms[$name]))
  22. {
  23. if ($auto_object)
  24. {
  25. $code = '<?php'."\n".'if (!class_exists(\'Quicky_form\')) {require_once QUICKY_DIR.\'quicky.form.class.php\';}'."\n".'if (!isset(Quicky_form::$forms[\''.$name.'\'])) {$form = new Quicky_form(\''.$name.'\');'."\n";
  26. preg_match_all('~'.preg_quote($compiler->left_delimiter,'~').'(input|textarea)(\s+.*?)?'.preg_quote($compiler->right_delimiter,'~').'~',$content,$m,PREG_SET_ORDER);
  27. foreach ($m as $v)
  28. {
  29. $params = $compiler->_parse_params($v[2],TRUE);
  30. if (!isset($params['name'])) {continue;}
  31. foreach ($params as $k => $v) {$params[$k] = $compiler->_dequote($v);}
  32. $code .= '$form->addElement('.var_export($params['name'],TRUE).','.var_export($params,TRUE).');'."\n";
  33. }
  34. $code .= '} ?>';
  35. eval('?>'.$code);
  36. }
  37. else {return $compiler->_syntax_error('Form \''.$name.'\' is not recognized');}
  38. }
  39. $objform = Quicky_form::$forms[$name];
  40. $props = array('form');
  41. $a = $compiler->block_props;
  42. $compiler->push_block_props($props,$block_name,$name);
  43. $content = $compiler->_tag_token($content,$block_name);
  44. $compiler->block_props = $a;
  45. }
  46. else {$content = $compiler->_tag_token($content,$block_name);}
  47. $s = '';
  48. foreach ($params as $k => $v)
  49. {
  50. if (strpos($v,'$') !== FALSE) {$s .= ' '.$k.'="<?php echo htmlspecialchars('.$v.',ENT_QUOTES); ?>"';}
  51. else {$s .= ' '.$k.'="'.htmlspecialchars($compiler->_dequote($v,ENT_QUOTES)).'"';}
  52. }
  53. $return = $code.'<form'.$s.'>'.$content.'</form>';
  54. return $return;
  55. }