/webformmailer.php
https://github.com/wesleyzhao/trailertrack · PHP · 218 lines · 211 code · 5 blank · 2 comment · 12 complexity · 35e200eb8f00e98921f386126384fcbb MD5 · raw file
- <?php
-
- if ( !isset($_SERVER['SPI'])) {
- die();
- }
-
- if (!isset($_SERVER['DOCUMENT_ROOT'])) {
- echo("CRITICAL: we seem to be running outside of the norm.\n");
- header("Location: http://".$_SERVER["HTTP_HOST"]."/");
- die("CRITICAL: Document root unavailable.\n");
- }
-
- $request_method = $_SERVER["REQUEST_METHOD"];
- if($request_method == "GET") {
- $query_vars = $_GET;
- }
- elseif ($request_method == "POST") {
- $query_vars = $_POST;
- }
-
- reset($query_vars);
- function customsort($a,$b) {
- // $a is array for form vars, $b is comma seperated case sensitive field order
- // this is case sensitive -- good idea to hrc that.
- $data = array();
- if ( strstr($b,',') == FALSE ) {
- $b = $b.",";
- }
- $ordering = split(',',$b);
- foreach ($ordering as $orderitem) {
- if ( ($orderitem != null) && ($orderitem != "") ) {
- if (isset($a[$orderitem])) {
- $data[$orderitem] = $a[$orderitem];
- }
- }
- }
- foreach ($a as $key=>$val) {
- $data[$key] = $a[$key];
- }
- return $data;
- }
-
- function xmlentities($string) {
- return str_replace ( array('&', '"', "'", '<', '>'), array('&', '"', ''', '<', '>'), $string);
- }
-
- $t = date("U");
-
- $formhomedir = preg_replace('/.*\/home\/content/','',$_SERVER['DOCUMENT_ROOT']);
- $formhomedir = explode('/',$formhomedir);
- if (count($formhomedir) <= 4) {
- $formhome="/home/content/".$formhomedir[1]."/".$formhomedir[2]."/data/";
- }
- else {
- $formhome="/home/content/".$formhomedir[1]."/".$formhomedir[2]."/".$formhomedir[3]."/".$formhomedir[4]."/data/";
- }
-
- $file_order = ".default";
- $file_format = ".text";
- $file_interval = ".15m";
- $field_order = "";
-
- if (isset($query_vars['form_order'])) {
- if ($query_vars['form_order'] != "alpha") {
- $field_order=$query_vars['form_order'];
- $file_order=".custom";
- $query_vars = customsort($query_vars,$field_order);
- }
- else {
- switch ($query_vars['form_order']) {
- case "alpha":
- uksort($query_vars,'strnatcasecmp');
- $file_order=".alpha";
- break;
- default:
- $file_order=".default";
- break;
- }
- }
- }
-
- if (isset($query_vars['form_format'])) {
- switch ($query_vars['form_format']) {
- case "csv":
- $file_format = ".csv";
- break;
- case "html":
- $file_format = ".html";
- break;
- case "xml":
- $file_format = ".xml";
- break;
- case "text":
- case "default":
- default:
- $file_format = ".text";
- break;
- }
- }
-
- if (isset($query_vars['form_delivery'])) {
- switch ($query_vars['form_delivery']) {
- case "hourly":
- $file_interval = ".60m";
- break;
- case "hourly_digest":
- $file_interval = ".60mc";
- break;
- case "daily":
- $file_interval = ".24h";
- break;
- case "daily_digest":
- $file_interval = ".24hc";
- break;
- case "digest":
- $file_interval = ".15mc";
- break;
- case "default":
- default:
- $file_interval = ".15m";
- break;
- }
- }
-
- $file = $formhome."form_".$t.$file_order.$file_format.$file_interval;
- $fp = fopen($file,"w");
-
- reset($query_vars);
- switch ($file_format) {
- case ".csv":
- $csvkeys = "";
- $csvvals= "";
- $firsttime = "";
- while (list ($key, $val) = each ($query_vars)) {
- if ( ($key == "form_order") ||
- ($key == "form_format") ||
- ($key == "form_delivery") ||
- ($key == "redirect") ) {
- }
- else {
- if ($csvkeys != "") {
- $firsttime=",";
- }
- $tmpkey=escapeshellcmd($key);
- $csvkeys = $csvkeys.$firsttime."'".$tmpkey."'";
- $tmpval=escapeshellcmd($val);
- $csvvals = $csvvals.$firsttime."'".$tmpval."'";
- }
- }
- fputs($fp,"$csvkeys\n");
- fputs($fp,"$csvvals\n");
- break;
- case ".html":
- fputs($fp,"<table border=\"1\" cellspacing=\"1\" cellpadding=\"2\">\n");
- break;
- case ".xml":
- fputs($fp,"<form>\n");
- break;
- }
-
- reset($query_vars);
- while (list ($key, $val) = each ($query_vars)) {
- if ($key == "redirect") {
- $landing_page = $val;
- }
- if ( ($key == "form_order") ||
- ($key == "form_format") ||
- ($key == "form_delivery") ||
- ($key == "redirect") ) {
-
- }
- else {
- switch ($file_format) {
- case ".html":
- fputs($fp,"\t<tr>\n");
- fputs($fp,"\t\t<td><b>$key</b></td>\n");
- fputs($fp,"\t\t<td>$val</td>\n");
- fputs($fp,"\t</tr>\n");
-
- break;
- case ".csv":
- // content is already output
- break;
- case ".xml":
- fputs($fp,"\t<field>\n");
- fputs($fp,"\t\t<fieldname>".xmlentities($key)."</fieldname>\n");
- fputs($fp,"\t\t<fieldvalue>".xmlentities($val)."</fieldvalue>\n");
- fputs($fp,"\t</field>\n");
- break;
- case ".text":
- default:
- fputs($fp,$key.": ".$val."\n");
- break;
- }
- }
- }
-
- switch ($file_format) {
- case ".html":
- fputs($fp,"</table>\n");
- break;
- case ".xml":
- fputs($fp,"</form>\n");
- break;
- }
-
-
- fclose($fp);
-
- if ($landing_page != "") {
- header("Location: http://".$_SERVER["HTTP_HOST"]."/$landing_page");
- }
- else {
- header("Location: http://".$_SERVER["HTTP_HOST"]."/");
- }
-
-
- ?>