"Feedback and Suggestions", 'BANNER2' => "Help us help you", 'TITLE' => "Feedback and Suggestions", 'MODULENAME' => "feedback.phpx", 'NAV1' => "INFO" // Level 1 menu navigation group ); //------------------------------------------------------------------------ // Local configuration parameters //------------------------------------------------------------------------ $FDBKCFG = array ( 'APPTAG' => 'FEEDBACK', 'EDITLEVEL' => '4', 'ADMINLEVEL' => '6' ); global $FDBKCFG; //------------------------------------------------------------------------ // Database Fields //------------------------------------------------------------------------ $ALLFIELD = array( 'feedback_id', 'cc_list', 'contact_info', 'assignee_id', 'feedback_category', 'feedback_detail', 'feedback_state', 'feedback_status', 'feedback_resolution', 'feedback_type', 'feedback_summary', 'date_created', 'last_modified', 'requester_id', 'requester_email', 'requester_type', 'resolution_type', ); $NEWFIELD = array( 'feedback_category', 'feedback_summary', 'feedback_type', 'requester_email', 'requester_type', //'cc_list', 'contact_info', 'feedback_detail', ); // // Fields visible in query output list // $SHOW = array( 'feedback_id', // DEVONLY 'feedback_category', 'feedback_state', 'feedback_status', 'feedback_summary', 'last_modified', 'requester_type', 'feedback_type', ); // // Fields that can have query drill down links on display // $LINK = array( 'feedback_category', 'feedback_type', 'assignee_id', 'feedback_state', 'requester_type', ); // // Fields that are from a Menu Picklist that can have new members // $EXTEND = array( 'feedback_category', ); // // Required for New Entry // $RequiredField = array( 'feedback_category' => 'select category from list or enter new feedback category', 'feedback_detail' => 'enter details of your suggestion, or feedback', 'feedback_summary' => 'enter brief summary of your request, suggestion, or feedback (will be subject line of response emails)', 'requester_type' => 'select the option that best describes you from list', 'requester_email' => 'enter your email so we can provide updates or answers regarding your comment or feedback', 'feedback_type' => 'select feedback type from list', ); // // Global query choices // $InValidChoice = array( 'All', '', ' ', 'None', 'Choose' ); // // Edit record fields with edit disabled // $NoEdit = array( 'feedback_id', 'last_updated' ); $FieldType = array( 'cc_list' => 'LongText', 'contact_info' => 'LongText', 'requester_email' => 'LongText', 'assignee_id' => 'MenuArray', 'feedback_category' => 'Menu', 'feedback_detail' => 'TextArea', 'feedback_state' => 'Menu', 'feedback_status' => 'LongText', 'feedback_resolution' => 'TextArea', 'feedback_summary' => 'LongText', 'feedback_type' => 'Menu', 'requester_id' => 'Menu', 'requester_type' => 'Menu', 'feedback_type' => 'Menu', ); $BASE = "SELECT choice FROM menu WHERE table_name = 'feedback' AND "; $Menu = array( "feedback_category" => "$BASE field_name = 'feedback_category' ORDER BY choice", "feedback_state" => "$BASE field_name = 'feedback_state' ORDER BY choice", "feedback_type" => "$BASE field_name = 'feedback_type' ORDER BY choice", "requester_type" => "$BASE field_name = 'requester_type' ORDER BY choice", "assignee_id" => "SELECT people_id, full_name from people ORDER BY choice", ); // // Display exceptions from default tdcs centered display table cell // $JustifyCss = array( 'feedback_summary' => 'tds', ); //------------------------------------------------------------------------ // BEGIN Program //------------------------------------------------------------------------ spew_header($FMT); if (! array_key_exists('Action', $_REQUEST)) { $_REQUEST['Action'] = 'New'; } if (array_key_exists('Action', $_REQUEST)) { echo "
\n";		// DEVONLY
		print_r($_REQUEST);	// DEVONLY
		echo "
\n"; // DEVONLY //---------------------------------------------------------------------- // Query //---------------------------------------------------------------------- if ($_REQUEST['Action'] == "Query" ) { spew_query_form(); } //---------------------------------------------------------------------- // Submit Feedback //---------------------------------------------------------------------- if ($_REQUEST['Action'] == "Submit Feedback" ) { $dbh = jjn_pdo_connect(); echo "

Insert Entry

\n"; // DEVONLY $pcnt = count($_POST); $rcnt = count($_REQUEST); echo "

Request Count is greater that one, $rcnt

\n"; // DEVONLY echo "

Post Count is greater that one, $pcnt

\n"; // DEVONLY echo "

Session of captcha_keystring is $_SESSION[captcha_keystring]

\n"; // DEVONLY echo "

Post of keystring is $_POST[keystring]

\n"; // DEVONLY echo "

Request of keystring is $_REQUEST[keystring]

\n"; // DEVONLY // CAPTCHA if( count($_REQUEST) > 1 ){ if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_REQUEST['keystring']){ echo "

Excellent, you appear to be a human!

"; }else{ echo "

The numbers from the captcha form entry you filled in do not match those of the image."; echo "
Please press the back button on your browser and try again.\n"; echo "

"; spew_footer($FMT); exit; } }else{ echo "

No Data

"; spew_footer($FMT); exit; } // // Get list of fields for this table // $fieldlabel = get_field_labels('feedback','feedback',$JJNCFG['DBNAME']); $fields = array_keys($fieldlabel); // // Define default values // $Default = array ( 'feedback_state' => 'New', 'feedback_priority' => 'P3: Routine', ); // // Setup default values // foreach ($Default as $key => $val ) { if ( ! isset ( $_REQUEST[$key]) ) { $_REQUEST[$key] = $val; echo "
Setting default of $key to $val\n"; // DEVONLY } } // // Eliminate all keys that have invalid answers // Overwrite open menu entries with NEW_.. entries // foreach ($fields as $f) { $altkey = "NEW_" . $f; if ( isset($_REQUEST[$altkey]) ) { if (!in_array($_REQUEST[$altkey], $InValidChoice)) { $_REQUEST[$f] = $_REQUEST[$altkey]; unset ($_REQUEST[$altkey]); } } if (in_array($_REQUEST[$f], $InValidChoice)) { unset ($_REQUEST[$f]); } } // // Delete auto_increment primary keys // unset ($_REQUEST['feedback_id']); // // Required fields gauntlet // foreach ( $RequiredField as $key => $val) { if (! array_key_exists($key, $_REQUEST)) { $err .= '
  • Please ' . $RequiredField[$key] . '.
  • '; } // // Form Validation for Email formats // if ( preg_match('/_email$/', $key)){ if ( isset($_REQUEST[$key]) ) { $email_check = validate_email($_REQUEST[$key]); if ( ! preg_match('/OK/', $email_check)) { $err .= "
  • Error, [$key] " . $email_check . "
  • "; } if ( preg_match('/spammer/', $email_check)){ spew_footer($FMT); exit; } } } } if ( $err ) { echo "
    \n"; echo "

    Incomplete Information

    \n"; echo "\n"; echo "
      $err
    \n"; echo "\n"; echo "

    Please click on the back button of your browser to add missing information.\n"; echo "
    (You will also have to update the captcha number to match the image.)\n"; echo "

    \n"; echo "
    \n"; spew_footer($FMT); exit; } $Data = array(); foreach ($fields as $f) { if ( array_key_exists($f, $_REQUEST) && !empty($_REQUEST[$f]) ) { $Data[$f] = $dbh->quote($_REQUEST[$f]); } } // // Escape the quotes for date_created, now is a function, not a text literal // $Data['date_created'] = "now()"; $sql = "INSERT INTO feedback ("; $sql .= implode(',', array_keys($Data)); $sql .= ") VALUES ("; $sql .= implode(',', array_values($Data)); $sql .= ")"; echo "

    $sql

    \n"; // DEVONLY $dbh->query($sql); $feedback_id = $dbh->lastInsertId() ; $_REQUEST['feedback_id'] = $feedback_id; $_REQUEST['Action'] = 'View'; echo "

    Returned Feedback ID of $_REQUEST[feedback_id]\n"; // DEVONLY echo "

    \n"; echo "

    Thank you for your feedback!

    \n"; echo "
    \n"; send_email_ack($_REQUEST); now_what(); spew_footer($FMT); exit; } //---------------------------------------------------------------------- // Update Existing Entry //---------------------------------------------------------------------- if ($_REQUEST['Action'] == "Update" ) { if ( array_key_exists('feedback_id', $_REQUEST)) { $feedback_id = $_REQUEST['feedback_id']; if (! is_numeric( $feedback_id ) ) { die ("ERROR: Attempt to update Feedback requires feedback_id to be integer. It is not."); } }else{ die ("No Feedback Id Set") ; } $dbh = jjn_pdo_connect(); // // Get Original Record // $Original = array(); $sql = 'SELECT * FROM feedback WHERE feedback_id = '; $sql .= $dbh->quote($feedback_id); $result = $dbh->query($sql); $Original = $result->fetch(PDO::FETCH_ASSOC); echo "

    Original

    \n"; // DEVONLY print_r($Original); // DEVONLY // // Get list of fields for this table // $fieldlabel = get_field_labels('feedback','aaaaaaaaaa',$JJNCFG['DBNAME']); print '
    ';						// DEBUG DEVONLY
    			echo "Incoming Updated Fields\n";   // DEBUG DEVONLY
    			print htmlspecialchars(print_r($fieldlabel), ENT_QUOTES);	// DEBUG DEVONLY
    			print '
    '; // DEBUG DEVONLY $fields = array_keys($fieldlabel); // // Eliminate all keys that have invalid answers // Overwrite entries with NEW_... entries for Open Menus // foreach ($fields as $f) { $altkey = "NEW_" . $f; if (isset($_REQUEST[$altkey])) { if (!in_array($_REQUEST[$altkey], $InValidChoice)) { $_REQUEST[$f] = $_REQUEST[$altkey]; unset ($_REQUEST[$altkey]); } } if (in_array($_REQUEST[$f], $InValidChoice)) { unset ($_REQUEST[$f]); } } // // Update only the fields that have changed // $DataKey = array(); $UpdateData = array(); foreach ($fields as $f) { if (in_array($f, $NoEdit)) { echo "

    Skipping $f as it is in NoEdit array...

    \n"; // DEVONLY continue; } if ( array_key_exists($f, $_REQUEST)) { $val = $_REQUEST[$f]; echo "

    For ... $f

    \n"; // DEVONLY echo "

    Original: $Original[$f]

    \n"; // DEVONLY echo "

    New: $_REQUEST[$f]

    \n"; // DEVONLY if ( $_REQUEST[$f] != $Original[$f] ) { echo "

    Updating $f to $_REQUEST[$f]

    \n"; // DEVONLY $UpdateData[] = "$f = " . $dbh->quote($_REQUEST[$f]); } } } if (count($UpdateData) > 0){ print_r($UpdateData); // DEVONLY $sql = 'UPDATE feedback SET '; $sql .= implode(', ', $UpdateData); $sql .= " WHERE feedback_id = "; $sql .= $dbh->quote($feedback_id); echo "

    $sql

    \n"; // DEVONLY DEBUG $result = $dbh->query($sql); }else{ echo "

    No Changes Made

    \n"; } $_REQUEST['feedback_id'] = $feedback_id; $_REQUEST['Action'] = "View"; } //---------------------------------------------------------------------- // List //---------------------------------------------------------------------- if ($_REQUEST['Action'] == "List" ) { echo "

    Entering Query/List Function

    \n"; // DEVONLY echo "
    \n";		// DEBUG DEVONLY
    			print_r($_SESSION);	// DEBUG DEVONLY
    			echo "
    \n"; // DEBUG DEVONLY $dbh = jjn_pdo_connect(); $fieldlabel = array(); $fieldlabel = get_field_labels('feedback','feedback',$JJNCFG['DBNAME']); $fields = array_keys($fieldlabel); //---------------------------------------------------------- // Capture previous selection criteria and append to links // To enable drill down subqueries //---------------------------------------------------------- foreach(explode( '&', $_SERVER['QUERY_STRING']) as $entry ) { list($key, $val) = explode( '=', $entry); if ( ! empty( $val ) ) { if (! in_array($val, $InValidChoice)) { if (in_array($key, $ALLFIELD) ) { $parameters[$key] = $val; } } } } $parameters['Action'] = $_REQUEST['Action']; //---------------------------------------------------------- // Uniquify for duplicate entries //---------------------------------------------------------- $validentries = array(); foreach ($parameters as $key => $val ) { $val = preg_replace('/\s+/', '+', $val); $validentries[] = $key . '=' . $val; } if (count($validentries)) { $drilldown = implode('&', $validentries); } // // Base sql query // $What = array( 'z.*' ); $Where = array( ); $From = array( 'feedback' => 'z' ); // // Construct where clause into an array // foreach ($fields as $f) { if (array_key_exists($f, $_REQUEST)) { $val = $_REQUEST[$f]; if (in_array( $val, $InValidChoice ) ){ unset($val) ; }else{ if ( preg_match('/%/', $val)) { $_REQUEST[$f] .= '%'; $Where[] = "z." . $f . ' LIKE ' . $dbh->quote($_REQUEST[$f]); }else{ $Where[] = "z." . $f . "=" . $dbh->quote($_REQUEST[$f]); } } } } $sql = "SELECT DISTINCT " . implode(',', $What); $Fromsql = array(); foreach ($From as $table => $abbr) { $Fromsql[] = $table . ' ' . $abbr; } $Fromsql = array_unique($Fromsql); $sql .= ' FROM ' . implode(', ', $Fromsql); if ( count($Where) ) { $sql .= ' WHERE ' . implode(' AND ', $Where); } //--------------------------------------------------- // ORDER BY //--------------------------------------------------- $OrderBy = array( 'Name' => 'z.feedback_name', 'Color' => 'z.feedback_color, z.feedback_name', 'Type' => 'z.feedback_type, z.feedback_name' ); $sortby = $_REQUEST['Sortmeby']; $sby = $OrderBy[$sortby]; if (empty ($sby)){ $sql .= ' ORDER BY z.feedback_name'; }else{ $sql .= ' ORDER BY ' . $sby; } echo "

    $sql

    \n"; // DEVONLY $result = $dbh->query($sql); // Blurb echo "

    \n"; echo "Column entries that are links will "drill down" to refine your query.\n"; echo "

    \n"; //--------------------------------------------------- // Spew table //--------------------------------------------------- echo "
    \n"; echo "\n"; if ( check_access($FDBKCFG['APPTAG'], $FDBKCFG['EDITLEVEL'])){ echo "\n"; // SECURITY } echo "\n"; foreach ($ALLFIELD as $f) { if (in_array($f, $SHOW)) { echo "\n"; } } $row = array(); while ($row = $result->fetch(PDO::FETCH_ASSOC)){ echo "\n"; // Edit if authorized // SECURITY if ( check_access($FDBKCFG['APPTAG'], $FDBKCFG['EDITLEVEL'])){ echo "\n"; } // View for everyone echo "\n"; foreach ($ALLFIELD as $f) { $css = "tdcs"; $display = stripslashes($row[$f]); // // Display Exceptions (lookup) // //if ( $f == 'feedback_id' ) { //$display = $row[feedback_name]; //} if (in_array($f, $SHOW)) { if (array_key_exists($f, $JustifyCss)) { $css = $JustifyCss[$f]; } echo "\n"; } } } echo "
    EditView$fieldlabel[$f]
    "; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; if (in_array($f, $LINK)) { echo ""; echo "$display\n"; }else{ echo "$display\n"; } echo "
    \n"; echo "
    \n"; }//if ($_REQUEST['Action'] == "List")) //---------------------------------------------------------------------- // New Entry Form //---------------------------------------------------------------------- if ($_REQUEST['Action'] == "New" ) { $menulist = array(); $table = 'feedback'; $dbh = jjn_pdo_connect(); $Default = array (); $Dude = array(); $today = date('Y-m-d'); if ( isset($_SESSION['people_id']) ){ $sql = "SELECT * from people where people_id = "; $sql .= $dbh->quote($_SESSION['people_id']); $result = $dbh->query($sql); $Dude = $result->fetch(PDO::FETCH_ASSOC); $Default['contact_info'] = $Dude['full_name']; $Default['requester_id'] = $Dude['people_id']; $Default['requester_email'] = $Dude['email_1']; } $Default['assignee_id'] = '99'; $Default['feedback_state'] = 'New'; $Default['feedback_status'] = 'New'; $Default['date_created'] = $today; $fieldlabel = get_field_labels('feedback','feedback',$JJNCFG['DBNAME']); $fieldlabel['contact_info'] = "Name, Phone"; $fieldlabel['feedback_detail'] = "My Suggestion or Feedback"; echo "
    \n"; // Blurb echo "\n"; echo "\n"; echo "
    \n"; echo "Thanks for your suggestions and feedback!\n"; echo "
    Please fill out the below form. Details on meanings and choice details are
    available via help links in left column.\n"; echo "Asterisk (*) indicates field is required.\n"; echo "
    (I prefer this is how you could improve things to this is really yucky types of comments.)\n"; echo "
    \n"; // // Data Entry Form echo "
    \n"; echo "\n"; echo "\n"; foreach ($NEWFIELD as $fieldname ) { if ( $fieldname == 'feedback_id'){ continue; } $val = $fieldlabel[$fieldname]; echo "\n"; echo "\n"; echo "\n"; } echo "
    Suggestions or Feedback
    "; echo ""; echo "$val"; if ( isset($RequiredField[$fieldname]) ){ echo ' * '; } echo ""; $what = ''; $choose = 'Choose'; if (isset($_REQUEST[$fieldname])){ $what = $_REQUEST[$fieldname]; $choose = $what; }else{ if ( isset($Default[$fieldname]) ){ $what = $Default[$fieldname]; $choose = $what; } } if (array_key_exists($fieldname, $FieldType)) { if ( $FieldType[$fieldname] == "Menu" ) { $menusql = $Menu[$fieldname]; $menulist = get_menu($menusql); sort($menulist); spew_select_menu($fieldname, $what,$choose,$menulist); if (in_array($fieldname, $EXTEND)) { echo "-OR- "; } } if ($FieldType[$fieldname] == "MenuArray" ) { $menusql = $Menu[$fieldname]; $menulist = get_menu_array($menusql); asort($menulist); $menulist['Choose'] = 'Choose'; spew_select_hash_menu($fieldname, $what,$choose,$menulist); } if ($FieldType[$fieldname] == "TextArea" ) { echo "\n"; } if ($FieldType[$fieldname] == "LongText" ) { echo ""; } if ($FieldType[$fieldname] == "People" ) { spew_select_menu($fieldname, $what,$choose,$People); } }else{ echo ""; } echo "
    \n"; echo "

    We most appreciate feedback from humans."; echo "
    Please enter the numbers shown in the below 'captcha' image into the box below.

    \n"; echo "

    \"Captcha

    \n"; echo "

    \n"; echo "\n"; echo "
    \n"; echo "
    \n"; }//End if ($_REQUEST['Action'] == "New" ) //---------------------------------------------------------------------- // Edit //---------------------------------------------------------------------- if ($_REQUEST['Action'] == "Edit") { $table='feedback'; if ( array_key_exists('feedback_id', $_REQUEST)) { if ( isset($_REQUEST['feedback_id'] ) ) { $feedback_id = stripslashes( $_REQUEST['feedback_id']); }else{ die ("NO Feedback ID in edit function.") ; } if ( ! is_numeric($feedback_id) ) { die ("Feedback ID ($feedback_id) is not an integer.") ; } }else{ die ("No Feedback Id Set") ; } $dbh = jjn_pdo_connect(); // // People Rosterselect // $People = array(); $PeopleEmail = array(); $sql = "SELECT people_id, first_name, last_name, nickname, email_1, full_name from people"; // TODO: limit scope: $sql .= " WHERE ...."; $result = $dbh->query($sql); while ($row = $result->fetch(PDO::FETCH_ASSOC)){ $pid = $row['people_id']; if ( isset ($People['nickname'])){ $People[$pid] = $row['nickname'] . " " . $row['last_name']; }else{ $People[$pid] = $row['first_name'] . " " . $row['last_name']; } //$People[$pid] = $row['full_name']; $PeopleEmail[$pid] = $row['email_1']; } $menulist = array(); $row = array(); $sql = 'SELECT * FROM feedback WHERE feedback_id = '; $sql .= $dbh->quote($feedback_id); $result = $dbh->query($sql); $row = $result->fetch(PDO::FETCH_ASSOC); $fieldlabel = get_field_labels('feedback','feedback',$JJNCFG['DBNAME']); // Blurb echo "

    \n"; echo "Links in left column field names show more information about that field and its choices.\n"; if ( check_access($FDBKCFG['APPTAG'], $FDBKCFG['EDITLEVEL'])){ echo "
    Change desired entries and click Update at bottom of form.\n"; }else{ echo "
    You do not have sufficient permissions to edit this form.\n"; } echo "

    \n"; echo "
    \n"; echo "
    \n"; echo "\n"; foreach ($ALLFIELD as $fieldname ) { $label = $fieldlabel[$fieldname]; echo "\n"; echo "\n"; }//Endforeach fieldname echo "
    "; echo ""; echo "$label"; echo ""; echo ""; if (in_array($fieldname, $NoEdit)) { echo "$row[$fieldname]
    "; }else{ if (array_key_exists($fieldname, $FieldType)) { if ( $FieldType[$fieldname] == "Menu" ) { $menusql = $Menu[$fieldname]; $menulist = get_menu($menusql); spew_select_menu($fieldname, $row[$fieldname],'',$menulist); if (in_array($fieldname, $EXTEND)) { echo "-OR- "; } } if ($FieldType[$fieldname] == "MenuArray" ) { $menusql = $Menu[$fieldname]; $menulist = get_menu_array($menusql); spew_select_hash_menu($fieldname, $row[$fieldname],'',$menulist); } if ($FieldType[$fieldname] == "People" ) { spew_select_menu($fieldname, $_REQUEST[$fieldname],'',$People); } if ( $FieldType[$fieldname] == "TextArea" ) { echo "\n"; } if ( $FieldType[$fieldname] == "LongText" ) { echo "\n"; } }else{ // No fieldtype echo "
    "; } }//Endif NoEdit echo "
    \n"; // CAPTCHA //echo "

    I prefer to work with humans, please enter the numbers shown in "; //echo " the below 'captcha' image into the box below:

    \n"; //echo "

    \"Captcha

    \n"; //echo "

    \n"; echo "\n"; // SECURITY if ( check_access($FDBKCFG['APPTAG'], $FDBKCFG['EDITLEVEL'])){ echo "\n"; } echo "
    \n"; echo "
    \n"; show_journal_history($feedback_id, $table); }//if ($_REQUEST['Action'] == "Edit") //---------------------------------------------------------------------- // View //---------------------------------------------------------------------- if ($_REQUEST['Action'] == "View" || $_REQUEST['Action'] == "View Details" ) { echo "

    Entering View Function with ID of $_REQUEST[feedback_id]

    \n"; // DEVONLY $table = 'feedback'; if ( array_key_exists('feedback_id', $_REQUEST)) { if ( isset ( $_REQUEST['feedback_id'] ) ) { $feedback_id = $_REQUEST['feedback_id']; }else{ die ("No Feedback ID in view function") ; } if ( ! is_numeric($feedback_id) ) { die ("Feedback ID ($feedback_id) is not an integer.") ; } }else{ die ("No Feedback Id Set") ; } $menulist = array(); $row = array(); $dbh = jjn_pdo_connect(); $sql = 'SELECT * FROM feedback WHERE feedback_id = '; $sql .= $dbh->quote($feedback_id); $result= $dbh->query($sql); $row = $result->fetch(PDO::FETCH_ASSOC); $fieldlabel = get_field_labels('feedback','feedback',$JJNCFG['DBNAME']); // Blurb echo "

    \n"; echo "Field explanation available via link in left column field labels.\n"; echo "

    \n"; echo "
    \n"; echo "

    $row[feedback_name]

    \n"; echo "
    \n"; echo "\n"; foreach ($ALLFIELD as $fieldname ) { $label = $fieldlabel[$fieldname]; echo "\n"; echo "\n"; echo "\n"; }//Endforeach fieldname echo "
    "; echo ""; echo "$label"; $display = stripslashes($row[$fieldname]); // // View Entry Lookup Map Translations (id -> othertable.name for foreign keys) // //if ( $fieldname == "feedback_id" ) { //$sql = "SELECT feedback_name from othertable where feedback_id = '$row[$fieldname]'"; //$display = get_value($sql); //} echo "$display
    "; echo "
    \n"; echo "\n"; echo "\n"; if ( check_access($FDBKCFG['APPTAG'], $FDBKCFG['EDITLEVEL'])){ echo "\n"; } echo "
    \n"; // // Show Journal History // echo "
    \n"; echo "\n"; echo "\n"; echo "\n"; //echo "\n"; echo "
    \n"; show_journal_history($feedback_id, $table); echo "
    \n"; }//if ($_REQUEST['Action'] == "View") //---------------------------------------------------------------------- // END 'Action' Processing Options //---------------------------------------------------------------------- }else{ // No Action Field spew_query_form(); } spew_footer($FMT); //---------------------------------------------------------------- // Function spew_query_form //---------------------------------------------------------------- function spew_query_form() { echo "

    Entering spew_query_form

    \n"; // DEVONLY global $JJNCFG; global $FDBKCFG; $list = array(); $dbh = jjn_pdo_connect(); echo "

    "; echo "Help and explanations available at "; echo "Overview."; echo "

    \n"; echo "
    \n"; echo "
    \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; // Name //echo "\n"; // State echo "\n"; // Feedback Type echo "\n"; // Requester Type echo "\n"; // Sort By // Sort By echo "\n"; // End Table echo "\n"; echo "
    StateFeedback TypeRequester TypeSort By
    \n"; //$sql = "SELECT DISTINCT feedback_summary from feedback order by feedback_summary"; //$list = get_menu($sql); //spew_select_menu('feedback_summary','','All',$list); //echo "\n"; $sql = "SELECT DISTINCT feedback_state from feedback order by feedback_state"; $list = get_menu($sql); spew_select_menu('feedback_state','','All',$list); echo "\n"; $sql = "SELECT distinct feedback_type from feedback order by feedback_type" ; $list = get_menu($sql); spew_select_menu('feedback_type','All','All',$list); echo "\n"; $sql = "SELECT distinct requester_type from feedback order by requester_type" ; $list = get_menu($sql); spew_select_menu('requester_type','All','All',$list); echo "\n"; $sortby = array ( 'Name', 'Requester Type', 'Feedback Type', 'State', 'Date' ); sort($sortby); spew_select_menu('Sortmeby','','Date',$sortby); echo "
    \n"; // End Form echo "\n"; // SECURITY if ( check_access($FDBKCFG['APPTAG'], $FDBKCFG['EDITLEVEL'])){ echo "\n"; } echo "
    \n"; echo "
    \n"; } //---------------------------------------------------------------- // Function send_email_ack //---------------------------------------------------------------- function send_email_ack ( array $Data ) { global $JJNCFG; // // Default config parameters for email acknowledgement // $LOGINEMAIL = array ( 'subject' => "Jumping Jerry Feedback", 'fromemail' => "jerbowes@yahoo.com", 'toemail' => "jerbowes@yahoo.com", 'bccemail' => "jerbowes@gmail.com", 'fromname' => "Jumping Jerry Productions" ); $LOGINEMAIL['subject'] = 'JJN: ' . $Data['feedback_summary']; if ( $Data['requester_email'] ) { $LOGINEMAIL['toemail'] = $Data['requester_email']; echo "
    \n"; echo "

    Acknowledgement has been emailed to $Data[requester_email]

    \n"; echo "
    \n"; } echo '
    ';	//DEBUG DEVONLY
    		echo "ENTERING EMAIL ACK
    \n";//DEBUG DEVONLY echo "LOGINEMAIL
    \n";//DEBUG DEVONLY echo htmlspecialchars(print_r($LOGINEMAIL), ENT_QUOTES); //DEBUG DEVONLY echo "Incoming Data
    \n";//DEBUG DEVONLY echo htmlspecialchars(print_r($Data), ENT_QUOTES); //DEBUG DEVONLY echo '
    '; //DEBUG DEVONLY $fd = popen($JJNCFG[MAILER],"w"); // // Construct Mail Headers // fputs($fd, "From: $LOGINEMAIL[fromname] <$LOGINEMAIL[fromemail]>\n"); fputs($fd, "To: $LOGINEMAIL[toname] <$LOGINEMAIL[toemail]>\n"); fputs($fd, "Bcc: $LOGINEMAIL[bccemail]\n"); if ( $Data[cc_list] ) { fputs($fd, "Cc: $Data[cc_list]\n"); echo "
    \n"; echo "

    A copy has also been sent to $Data[cc_list]

    \n"; echo "
    \n"; } // // Subject // fputs($fd, "Subject: $LOGINEMAIL[subject]\n\n"); fputs($fd, "This is an acknowledgement of your feedback from our website.\n\n"); $fieldlabel = get_field_labels('feedback','feedback',$JJNCFG['DBNAME']); $SHOWFIELD = array( 'feedback_category', 'feedback_type', 'requester_type', 'feedback_summary', 'feedback_detail', ); foreach ($SHOWFIELD as $f){ if ( isset($Data[$f] ) ) { fputs($fd, "$fieldlabel[$f] : $Data[$f]\n\n"); } } // // Body // fputs($fd, "We will address your question or issue very soon, thanks.\n\n"); fputs($fd, "Please do not reply to this email.\n"); pclose($fd); }//End function send_email_ack //---------------------------------------------------------------- // Function now_what //---------------------------------------------------------------- function now_what () { global $JJNCFG; echo "
    \n"; echo "\n"; echo "\n"; echo "
    Related links that might interest you.
    "; echo "
      \n"; echo "
    • FAQ
    • \n"; echo "
    \n"; echo "
    \n"; echo "
    \n"; }//End function now_what //---------------------------------------------------------------- // END FUNCTIONS //---------------------------------------------------------------- ?>