PageRenderTime 48ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/webformmailer.php

https://github.com/wesleyzhao/trailertrack
PHP | 218 lines | 211 code | 5 blank | 2 comment | 12 complexity | 35e200eb8f00e98921f386126384fcbb MD5 | raw file
  1. <?php
  2. if ( !isset($_SERVER['SPI'])) {
  3. die();
  4. }
  5. if (!isset($_SERVER['DOCUMENT_ROOT'])) {
  6. echo("CRITICAL: we seem to be running outside of the norm.\n");
  7. header("Location: http://".$_SERVER["HTTP_HOST"]."/");
  8. die("CRITICAL: Document root unavailable.\n");
  9. }
  10. $request_method = $_SERVER["REQUEST_METHOD"];
  11. if($request_method == "GET") {
  12. $query_vars = $_GET;
  13. }
  14. elseif ($request_method == "POST") {
  15. $query_vars = $_POST;
  16. }
  17. reset($query_vars);
  18. function customsort($a,$b) {
  19. // $a is array for form vars, $b is comma seperated case sensitive field order
  20. // this is case sensitive -- good idea to hrc that.
  21. $data = array();
  22. if ( strstr($b,',') == FALSE ) {
  23. $b = $b.",";
  24. }
  25. $ordering = split(',',$b);
  26. foreach ($ordering as $orderitem) {
  27. if ( ($orderitem != null) && ($orderitem != "") ) {
  28. if (isset($a[$orderitem])) {
  29. $data[$orderitem] = $a[$orderitem];
  30. }
  31. }
  32. }
  33. foreach ($a as $key=>$val) {
  34. $data[$key] = $a[$key];
  35. }
  36. return $data;
  37. }
  38. function xmlentities($string) {
  39. return str_replace ( array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $string);
  40. }
  41. $t = date("U");
  42. $formhomedir = preg_replace('/.*\/home\/content/','',$_SERVER['DOCUMENT_ROOT']);
  43. $formhomedir = explode('/',$formhomedir);
  44. if (count($formhomedir) <= 4) {
  45. $formhome="/home/content/".$formhomedir[1]."/".$formhomedir[2]."/data/";
  46. }
  47. else {
  48. $formhome="/home/content/".$formhomedir[1]."/".$formhomedir[2]."/".$formhomedir[3]."/".$formhomedir[4]."/data/";
  49. }
  50. $file_order = ".default";
  51. $file_format = ".text";
  52. $file_interval = ".15m";
  53. $field_order = "";
  54. if (isset($query_vars['form_order'])) {
  55. if ($query_vars['form_order'] != "alpha") {
  56. $field_order=$query_vars['form_order'];
  57. $file_order=".custom";
  58. $query_vars = customsort($query_vars,$field_order);
  59. }
  60. else {
  61. switch ($query_vars['form_order']) {
  62. case "alpha":
  63. uksort($query_vars,'strnatcasecmp');
  64. $file_order=".alpha";
  65. break;
  66. default:
  67. $file_order=".default";
  68. break;
  69. }
  70. }
  71. }
  72. if (isset($query_vars['form_format'])) {
  73. switch ($query_vars['form_format']) {
  74. case "csv":
  75. $file_format = ".csv";
  76. break;
  77. case "html":
  78. $file_format = ".html";
  79. break;
  80. case "xml":
  81. $file_format = ".xml";
  82. break;
  83. case "text":
  84. case "default":
  85. default:
  86. $file_format = ".text";
  87. break;
  88. }
  89. }
  90. if (isset($query_vars['form_delivery'])) {
  91. switch ($query_vars['form_delivery']) {
  92. case "hourly":
  93. $file_interval = ".60m";
  94. break;
  95. case "hourly_digest":
  96. $file_interval = ".60mc";
  97. break;
  98. case "daily":
  99. $file_interval = ".24h";
  100. break;
  101. case "daily_digest":
  102. $file_interval = ".24hc";
  103. break;
  104. case "digest":
  105. $file_interval = ".15mc";
  106. break;
  107. case "default":
  108. default:
  109. $file_interval = ".15m";
  110. break;
  111. }
  112. }
  113. $file = $formhome."form_".$t.$file_order.$file_format.$file_interval;
  114. $fp = fopen($file,"w");
  115. reset($query_vars);
  116. switch ($file_format) {
  117. case ".csv":
  118. $csvkeys = "";
  119. $csvvals= "";
  120. $firsttime = "";
  121. while (list ($key, $val) = each ($query_vars)) {
  122. if ( ($key == "form_order") ||
  123. ($key == "form_format") ||
  124. ($key == "form_delivery") ||
  125. ($key == "redirect") ) {
  126. }
  127. else {
  128. if ($csvkeys != "") {
  129. $firsttime=",";
  130. }
  131. $tmpkey=escapeshellcmd($key);
  132. $csvkeys = $csvkeys.$firsttime."'".$tmpkey."'";
  133. $tmpval=escapeshellcmd($val);
  134. $csvvals = $csvvals.$firsttime."'".$tmpval."'";
  135. }
  136. }
  137. fputs($fp,"$csvkeys\n");
  138. fputs($fp,"$csvvals\n");
  139. break;
  140. case ".html":
  141. fputs($fp,"<table border=\"1\" cellspacing=\"1\" cellpadding=\"2\">\n");
  142. break;
  143. case ".xml":
  144. fputs($fp,"<form>\n");
  145. break;
  146. }
  147. reset($query_vars);
  148. while (list ($key, $val) = each ($query_vars)) {
  149. if ($key == "redirect") {
  150. $landing_page = $val;
  151. }
  152. if ( ($key == "form_order") ||
  153. ($key == "form_format") ||
  154. ($key == "form_delivery") ||
  155. ($key == "redirect") ) {
  156. }
  157. else {
  158. switch ($file_format) {
  159. case ".html":
  160. fputs($fp,"\t<tr>\n");
  161. fputs($fp,"\t\t<td><b>$key</b></td>\n");
  162. fputs($fp,"\t\t<td>$val</td>\n");
  163. fputs($fp,"\t</tr>\n");
  164. break;
  165. case ".csv":
  166. // content is already output
  167. break;
  168. case ".xml":
  169. fputs($fp,"\t<field>\n");
  170. fputs($fp,"\t\t<fieldname>".xmlentities($key)."</fieldname>\n");
  171. fputs($fp,"\t\t<fieldvalue>".xmlentities($val)."</fieldvalue>\n");
  172. fputs($fp,"\t</field>\n");
  173. break;
  174. case ".text":
  175. default:
  176. fputs($fp,$key.": ".$val."\n");
  177. break;
  178. }
  179. }
  180. }
  181. switch ($file_format) {
  182. case ".html":
  183. fputs($fp,"</table>\n");
  184. break;
  185. case ".xml":
  186. fputs($fp,"</form>\n");
  187. break;
  188. }
  189. fclose($fp);
  190. if ($landing_page != "") {
  191. header("Location: http://".$_SERVER["HTTP_HOST"]."/$landing_page");
  192. }
  193. else {
  194. header("Location: http://".$_SERVER["HTTP_HOST"]."/");
  195. }
  196. ?>