PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 1ms

/src/site/components/com_chronocontact/libraries/includes/JSrepublish.php

https://bitbucket.org/manchas/jrobotz
PHP | 132 lines | 118 code | 2 blank | 12 comment | 13 complexity | f36d5bf4f3ab5b04602e154d45848881 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1, GPL-2.0, Apache-2.0
  1. <?php
  2. $post = $posted;
  3. $skippedarray = explode(",", $MyForm->formparams('captcha_dataload_skip', ''));
  4. ob_start();
  5. eval( "?>".$MyForm->formrow->html);
  6. $MyForm->formrow->html = ob_get_clean();
  7. //get all fields names
  8. preg_match_all('/name=("|\')([^(>|"|\')]*?)("|\')/i', $MyForm->formrow->html, $fieldsnamesmatches);
  9. $allfieldsnames = array();
  10. foreach ( $fieldsnamesmatches[2] as $fieldsnamesmatche ) {
  11. if ( strpos($fieldsnamesmatche, '[]') ) {
  12. $fieldsnamesmatche = str_replace('[]', '', $fieldsnamesmatche);
  13. }
  14. $allfieldsnames[] = trim($fieldsnamesmatche);
  15. }
  16. $allfieldsnames = array_unique($allfieldsnames);
  17. //print_r($allfieldsnames );
  18. foreach($allfieldsnames as $allfieldsname){
  19. if(!isset($post[$allfieldsname])){
  20. $post[$allfieldsname] = '';
  21. }else{
  22. if(is_array($post[$allfieldsname])){
  23. $post[$allfieldsname] = implode(', ', $post[$allfieldsname]);
  24. }
  25. $post[$allfieldsname] = htmlentities($post[$allfieldsname], ENT_QUOTES, 'UTF-8');
  26. }
  27. }
  28. //end fields names
  29. if ( count($post) ) {
  30. //text fields
  31. $pattern_input = '/<input([^>]*?)type=("|\')(text|password)("|\')([^>]*?)>/is';
  32. $matches = array();
  33. preg_match_all($pattern_input, $MyForm->formrow->html, $matches);
  34. foreach ( $matches[0] as $match ) {
  35. $pattern_value = '/value=("|\')(.*?)("|\')/i';
  36. $pattern_name = '/name=("|\')(.*?)("|\')/i';
  37. preg_match($pattern_name, $match, $matches_name);
  38. if(!in_array($matches_name[2], $skippedarray)){
  39. $valuematch = preg_replace($pattern_value, '', $match);
  40. $namematch = preg_replace($pattern_name, 'name="${2}" value="<?php echo $post[\'${2}\']; ?>"', $valuematch);
  41. $MyForm->formrow->html = str_replace($match, $namematch, $MyForm->formrow->html);
  42. }
  43. }
  44. //hidden fields
  45. $pattern_input = '/<input([^>]*?)type=("|\')hidden("|\')([^>]*?)>/is';
  46. $matches = array();
  47. preg_match_all($pattern_input, $MyForm->formrow->html, $matches);
  48. foreach ($matches[0] as $match) {
  49. $pattern_value = '/value=("|\')(.*?)("|\')/i';
  50. $pattern_name = '/name=("|\')(.*?)("|\')/i';
  51. preg_match($pattern_name, $match, $matches_name);
  52. if(!in_array($matches_name[2], $skippedarray)){
  53. $valuematch = preg_replace($pattern_value, '', $match);
  54. $namematch = preg_replace($pattern_name, 'name="${2}" value="<?php echo $post[\'${2}\']; ?>"', $valuematch);
  55. $MyForm->formrow->html = str_replace($match, $namematch, $MyForm->formrow->html);
  56. }
  57. }
  58. //checkboxes or radios fields
  59. $pattern_input = '/<input([^>]*?)type=("|\')(checkbox|radio)("|\')([^>]*?)>/is';
  60. $matches = array();
  61. preg_match_all($pattern_input, $MyForm->formrow->html, $matches);
  62. foreach ($matches[0] as $match) {
  63. $pattern_value = '/value=("|\')(.*?)("|\')/i';
  64. $pattern_name = '/name=("|\')(.*?)("|\')/i';
  65. preg_match($pattern_name, $match, $matches_name);
  66. preg_match($pattern_value, $match, $matches_value);
  67. if ( !in_array(str_replace('[]', '', $matches_name[2]), $skippedarray) ) {
  68. //multi values
  69. if ( strpos($matches_name[2], '[]') ) {
  70. $namematch = preg_replace(CFChronoForm::cfskipregex($pattern_name), 'name="${2}" <?php if(in_array("'.$matches_value[2].'", explode(", ", $post["'.str_replace('[]', '', $matches_name[2]).'"])))echo \'checked="checked"\'; ?>', $match);
  71. //single values
  72. } else {
  73. $namematch = preg_replace($pattern_name, 'name="${2}" <?php if($post["'.$matches_name[2].'"] == "'.$matches_value[2].'")echo \'checked="checked"\'; ?>', $match);
  74. }
  75. $MyForm->formrow->html = str_replace($match, $namematch, $MyForm->formrow->html);
  76. }
  77. }
  78. //textarea fields
  79. $pattern_textarea = '/<textarea([^>]*?)>(.*?)<\/textarea>/is';
  80. $matches = array();
  81. preg_match_all($pattern_textarea, $MyForm->formrow->html, $matches);
  82. $namematch = '';
  83. foreach ( $matches[0] as $match ) {
  84. $pattern_value = '/value=("|\')(.*?)("|\')/i';
  85. $pattern_name = '/name=("|\')(.*?)("|\')/i';
  86. preg_match($pattern_name, $match, $matches_name);
  87. if(!in_array($matches_name[2], $skippedarray)){
  88. $pattern_textarea2 = '/(<textarea(.*?)>)(.*?)(<\/textarea>)/is';
  89. $newtextarea_match = preg_replace($pattern_textarea2, '${1}<?php echo $post[\''.$matches_name[2].'\']; ?>${4}', $match);
  90. $MyForm->formrow->html = str_replace($match, $newtextarea_match, $MyForm->formrow->html);
  91. }
  92. }
  93. //select boxes
  94. $pattern_select = '/<select(.*?)select>/is';
  95. $matches = array();
  96. preg_match_all($pattern_select, $MyForm->formrow->html, $matches);
  97. foreach ($matches[0] as $match) {
  98. $selectmatch = $match;
  99. $pattern_select2 = '/<select([^>]*?)>/is';
  100. preg_match_all($pattern_select2, $match, $matches2);
  101. $options = preg_replace(array('/'.CFChronoForm::cfskipregex($matches2[0][0]).'/is', '/<\/select>/i'), array('', ''), $match);
  102. $pattern_name = '/name=("|\')(.*?)("|\')/i';
  103. preg_match($pattern_name, $matches2[0][0], $matches_name);
  104. if(!in_array(str_replace('[]', '', $matches_name[2]), $skippedarray)){
  105. //multi select
  106. if(strpos($matches_name[2], '[]')){
  107. $pattern_options = '/<option(.*?)<\/option>/is';
  108. preg_match_all($pattern_options, $options, $matches_options);
  109. foreach($matches_options[0] as $matches_option){
  110. $pattern_value = '/value=("|\')(.*?)("|\')/i';
  111. preg_match($pattern_value, $matches_option, $matches_value);
  112. $optionmatch = preg_replace('/<option/i', '<option <?php if(in_array("'.$matches_value[2].'", explode(", ", $post["'.str_replace('[]', '', $matches_name[2]).'"])))echo \'selected="selected"\'; ?>', $matches_option);
  113. $selectmatch = str_replace($matches_option, $optionmatch, $selectmatch);
  114. }
  115. //single select
  116. } else {
  117. $pattern_options = '/<option(.*?)<\/option>/is';
  118. preg_match_all($pattern_options, $options, $matches_options);
  119. foreach($matches_options[0] as $matches_option){
  120. $pattern_value = '/value=("|\')(.*?)("|\')/i';
  121. preg_match($pattern_value, $matches_option, $matches_value);
  122. $optionmatch = preg_replace('/<option/i', '<option <?php if($post["'.$matches_name[2].'"] == "'.$matches_value[2].'")echo \'selected="selected"\'; ?>', $matches_option);
  123. $selectmatch = str_replace($matches_option, $optionmatch, $selectmatch);
  124. }
  125. }
  126. $MyForm->formrow->html = str_replace($match, $selectmatch, $MyForm->formrow->html);
  127. }
  128. }
  129. }
  130. ?>