function list_results() { global $wpdb; global $current_user; get_currentuserinfo(); $formFilterID = ''; $sql_where = array('1=1'); ?> <?php formbuilder_admin_nav('formResults'); ?> <fieldset class="options metabox-holder"> <div class="info-box-formbuilder postbox"> <style> .formHeadBox { float: right; margin-top: 2px; padding-left: 14px; } em { color: #FF0000; } </style> <?php // Process form search query if necessary. if (isset($_GET['formSearchQuery']) and $_GET['formSearchQuery'] != "") { $searchQuery = $_GET['formSearchQuery']; $searchQuery = str_replace("\\'", "", $searchQuery); $searchQuery = str_replace("'", "", $searchQuery); $sql_where[] = "xmldata LIKE '%{$searchQuery}%'"; } else { $searchQuery = ''; } ?> <div class='formHeadBox'> <form name='formSearchBox' method='get' action=''> <?php if (isset($_GET['page'])) { ?> <input type="hidden" name="page" value="<?php echo $_GET['page']; ?> " /><?php } ?> <?php if (isset($_GET['fbaction'])) { ?> <input type="hidden" name="fbaction" value="<?php echo $_GET['fbaction']; ?> " /><?php } ?> <?php if (isset($_GET['pageNumber'])) { ?> <input type="hidden" name="pageNumber" value="<?php echo $_GET['pageNumber']; ?> " /><?php } ?> <?php if (isset($_GET['formFilterID'])) { ?> <input type="hidden" name="formFilterID" value="<?php echo $_GET['formFilterID']; ?> " /><?php } ?> <input type="text" name="formSearchQuery" value="<?php echo $searchQuery; ?> " helptext="Search..." /> <input type="submit" name="submit" value="Find" /> </form> </div> <?php $sql = "SELECT * FROM " . FORMBUILDER_TABLE_FORMS . " ORDER BY name ASC;"; $results = $wpdb->get_results($sql, ARRAY_A); $forms = array(); $allFormIDs = array(); foreach ($results as $formData) { $forms[$formData['id']] = $formData; $allFormIDs[] = $formData['id']; } if (isset($_GET['formFilterID'])) { if (is_numeric($_GET['formFilterID']) and isset($forms[$_GET['formFilterID']])) { $sql_where[] = "form_id = " . $_GET['formFilterID']; $formFilterID = "&form_id=" . $_GET['formFilterID']; } if ($_GET['formFilterID'] == 'orphaned') { $sql_where[] = "form_id NOT IN (" . implode(',', $allFormIDs) . ")"; $formFilterID = "&form_id=orphaned"; } } ?> <div class='formHeadBox'> <form name='formFilterBox' method='get' action=''> <select name='formFilterID'> <option value=''><?php if ($formFilterID) { ?> Show all forms...<?php } else { ?> Filter by form...<?php } ?> </option> <?php foreach ($forms as $formData) { $selected = ''; if (isset($_GET['formFilterID']) and $formData['id'] == $_GET['formFilterID']) { $selected = "selected='selected'"; } $name = $formData['name']; if (strlen($name) > 20) { $name = substr($name, 0, 20) . '...'; } echo "\n<option value='{$formData['id']}' {$selected}>" . $name . "</option>"; } ?> <option value='orphaned' <?php if (isset($_GET['formFilterID']) and $_GET['formFilterID'] == 'orphaned') { ?> selected='selected'<?php } ?> >Show Orphaned Forms</option> </select> <?php if (isset($_GET['page'])) { ?> <input type="hidden" name="page" value="<?php echo $_GET['page']; ?> " /><?php } ?> <?php if (isset($_GET['fbaction'])) { ?> <input type="hidden" name="fbaction" value="<?php echo $_GET['fbaction']; ?> " /><?php } ?> <?php if (isset($_GET['pageNumber'])) { ?> <input type="hidden" name="pageNumber" value="<?php echo $_GET['pageNumber']; ?> " /><?php } ?> <?php if (isset($_GET['formSearchQuery'])) { ?> <input type="hidden" name="formSearchQuery" value="<?php echo $_GET['formSearchQuery']; ?> " /><?php } ?> <input type="submit" name="submit" value="Go" /> </form> </div> <h3 class="info-box-title hndle"><?php _e('Recent Form Results:', 'formbuilder'); ?> </h3> <?php if (isset($_POST['formResultSelected']) and isset($_POST['formResultSelectedAction'])) { switch ($_POST['formResultSelectedAction']) { case 'Delete': if (is_array($_POST['formResultSelected'])) { $selected = $_POST['formResultSelected']; foreach ($selected as $formResultID) { if (is_numeric($formResultID) and preg_match('/^[0-9]+$/isu', $formResultID)) { $sql = "DELETE FROM " . FORMBUILDER_TABLE_RESULTS . " WHERE id = '" . $formResultID . "' LIMIT 1;"; $result = $wpdb->query($sql); } else { echo "Invalid form result ID detected: {$formResultID}<br/>\n"; } } } break; case 'Export': if (is_array($_POST['formResultSelected'])) { $selected = $_POST['formResultSelected']; foreach ($selected as $formResultID) { if (is_numeric($formResultID) and preg_match('/^[0-9]+$/isu', $formResultID)) { $export_ids[] = $formResultID; } else { echo "Invalid form result ID detected: {$formResultID}<br/>\n"; } } $export_ids_string = implode(",", $export_ids); $hash = md5($export_ids_string); update_option('formbuilder_db_export_ids', $export_ids_string); $url = FORMBUILDER_PLUGIN_URL . "php/formbuilder_export_results.php?h={$hash}"; echo "<meta HTTP-EQUIV='REFRESH' content='2; url=" . $url . "'><p>Your export should start automatically in a few seconds. <a href='{$url}'>Click here if it does not.</a></p>"; return; } break; case 'Resend': if (is_array($_POST['formResultSelected'])) { $selected = $_POST['formResultSelected']; foreach ($selected as $formResultID) { if (is_numeric($formResultID) and preg_match('/^[0-9]+$/isu', $formResultID)) { $resend_ids[] = $formResultID; } else { echo "Invalid form result ID detected: {$formResultID}<br/>\n"; } } $resend_ids_string = implode(",", $resend_ids); $name = 'Name:' . $current_user->user_login; $timestamp = 'Time:' . time(); $resend_ids_string = "{$name},{$timestamp},{$resend_ids_string}"; $hash = md5($resend_ids_string); update_option('formbuilder_db_resend_ids', $resend_ids_string); $url = FB_ADMIN_PLUGIN_PATH . "&fbaction=formResults&fbxmlaction=mass-resend&h={$hash}"; echo "<meta HTTP-EQUIV='REFRESH' content='30; url=" . $url . "'><p>Preparing to resend. <a href='{$url}'>Click here to proceed manually.</a></p>"; return; } break; default: break; } } // Check to see if we should display multiple pages. if (isset($_GET['pageNumber']) and preg_match("#^[0-9]+\$#isU", $_GET['pageNumber'])) { $result_page = $_GET['pageNumber']; } else { $result_page = 1; } // Turn the sql_where array into an actual sql statement. $sql_where = implode(" AND ", $sql_where); $sql = "SELECT id FROM " . FORMBUILDER_TABLE_RESULTS . " WHERE {$sql_where};"; // echo "\n<br/>$sql"; $result = $wpdb->get_col($sql, ARRAY_A); $total_rows = count($result); $paged_nav = fb_get_paged_nav($total_rows, $this->result_limit, false); ?> <script type="text/javascript"> function checkAll() { var inputs = document.getElementsByTagName('input'); var checkboxes = []; for (var i = 0; i < inputs.length; i++) { if (inputs[i].type == 'checkbox' && inputs[i].value != 'all results') { if(inputs[i].checked == true) { inputs[i].checked = false; } else { inputs[i].checked = true; } } } } </script> <?php // Iterate through the results and display them line by line. echo "<form action='' method='POST' name='formResultsList'><table class='widefat'>"; echo "<tr class='fbexporttable'>" . "<td><a href='javascript:;' onclick='checkAll()' title='" . __('Click to toggle all ON or OFF.', 'formbuilder') . "'>" . __('toggle', 'formbuilder') . "</a></td>" . "<td><strong>" . __("Date:", 'formbuilder') . "</strong></td>" . "<td>" . "<span class='fbexport'>" . "<a href='" . FB_ADMIN_PLUGIN_PATH . "&fbaction=formResults&fbxmlaction=massdelete{$formFilterID}'><strong>" . __("Mass Delete", 'formbuilder') . "</strong></a>" . " | <a href='" . FB_ADMIN_PLUGIN_PATH . "&fbaction=formResults&fbxmlaction=showexport{$formFilterID}'><strong>" . __("Full Export", 'formbuilder') . "</strong></a>" . " | " . __('Page:', 'formbuilder') . " {$paged_nav}" . "</span>" . "<strong>" . __("Message:", 'formbuilder') . "</strong>" . "</td>" . "</tr>"; // Calculate time offset $currentTime = current_time('timestamp'); $offset = time() - $currentTime; for ($i = 0; $i < $this->result_limit; $i++) { $sql_offset = $this->result_limit * ($result_page - 1); $sql = "SELECT * FROM " . FORMBUILDER_TABLE_RESULTS . " \n\t\t\t\t\t\t\tWHERE {$sql_where} \n\t\t\t\t\t\t\tORDER BY timestamp \n\t\t\t\t\t\t\tDESC LIMIT {$sql_offset}," . $this->result_limit . ";"; //echo "\n<br/>" . $sql; $result = $wpdb->get_row($sql, ARRAY_A, $i); if ($result == false) { break; } $form_data = $this->xmltoarray($result['xmldata']); $message = ""; foreach ($form_data['form'] as $key => $value) { if ($key != 'FormRecipient') { $message .= strtoupper($key) . ": " . $value . "\n"; } } // Highlight any/all search query results. if ($searchQuery) { $message = str_ireplace($searchQuery, "<em>{$searchQuery}</em>", $message); } $searchQueryVar = ""; if (strlen($message) > 80) { if ($searchQuery) { $p1 = strpos($message, '<em>'); if ($p1 !== false) { $message = "..." . substr($message, $p1 - 20, 85) . "..."; $searchQueryVar = "&searchQuery={$searchQuery}"; } else { $message = substr($message, 0, 80) . "..."; } } else { $message = substr($message, 0, 80) . "..."; } } $messageDate = date("F j, Y, g:i a", $result['timestamp'] - $offset); echo "<tr class='hoverlite'>" . "<td><input type='checkbox' class='fb_stored_messages' name='formResultSelected[]' value='" . $result['id'] . "'/></td>" . "<td><a href='" . FB_ADMIN_PLUGIN_PATH . "&fbaction=formResults&fbxmlaction=showemail&fbxmlid=" . $result['id'] . $searchQueryVar . "'>" . $messageDate . "</a></td>" . "<td>" . $message . "</td>" . "</tr>"; } $curpos = $sql_offset + $this->result_limit; echo "<tr><td colspan=3 align='left'>" . __('With Selected:', 'formbuilder') . " <select name='formResultSelectedAction'>" . "<option value=''></option>" . "<option value='Export'>" . __('Export', 'formbuilder') . "</option>" . "<option value='Delete'>" . __('Delete', 'formbuilder') . "</option>" . "<option value='Resend'>" . __('Resend', 'formbuilder') . "</option>" . "</select>" . " <input type='submit' value='" . __('Go', 'formbuilder') . "' />" . "<font style='float: right;'>" . __('Page:', 'formbuilder') . " {$paged_nav}</font></td></tr>"; echo "</table></form>"; ?> </div> </fieldset> <?php }
} else { $formSearchInsert = ""; } if (isset($_GET['fbtag']) and $_GET['fbtag'] != "") { $tag = $_GET['fbtag']; $tag = preg_replace("/[^A-Za-z0-9 _-]/isU", "", $tag); $sql = "SELECT " . FORMBUILDER_TABLE_FORMS . ".id,name,subject,recipient FROM " . FORMBUILDER_TABLE_FORMS . " " . " LEFT JOIN " . FORMBUILDER_TABLE_TAGS . " ON " . FORMBUILDER_TABLE_FORMS . ".id = " . FORMBUILDER_TABLE_TAGS . ".form_id " . " WHERE " . FORMBUILDER_TABLE_TAGS . ".tag LIKE '{$tag}' " . $formSearchInsert . " ORDER BY " . FORMBUILDER_TABLE_FORMS . ".name ASC"; } else { $sql = "SELECT " . FORMBUILDER_TABLE_FORMS . ".id,name,subject,recipient FROM " . FORMBUILDER_TABLE_FORMS . " WHERE 1=1 " . $formSearchInsert . " ORDER BY `name` ASC"; } $objForms = $wpdb->get_results($sql); $alt = false; $itemLimit = 20; if (is_array($objForms)) { $numForms = count($objForms); $nav = __('Page', 'formbuilder') . ': ' . fb_get_paged_nav($numForms, $itemLimit, false); if (isset($_GET['pageNumber'])) { $page = $_GET['pageNumber']; } else { $page = ""; } if (!is_numeric($page)) { $page = 0; } else { $page--; } if ($page * $itemLimit > $numForms) { $page = 0; } if ($numForms < $itemLimit) { $nav = "";
function list_results() { global $wpdb; global $current_user; get_currentuserinfo(); ?> <?php formbuilder_admin_nav('formResults'); ?> <fieldset class="options metabox-holder"> <div class="info-box-formbuilder postbox"> <h3 class="info-box-title hndle"><?php _e('Recent Form Results:', 'formbuilder'); ?> </h3> <?php if (isset($_POST['formResultSelected']) and isset($_POST['formResultSelectedAction'])) { switch ($_POST['formResultSelectedAction']) { case 'Delete': if (is_array($_POST['formResultSelected'])) { $selected = $_POST['formResultSelected']; foreach ($selected as $formResultID) { if (is_numeric($formResultID) and preg_match('/^[0-9]+$/isu', $formResultID)) { $sql = "DELETE FROM " . FORMBUILDER_TABLE_RESULTS . " WHERE id = '" . $formResultID . "' LIMIT 1;"; $result = $wpdb->query($sql); } else { echo "Invalid form result ID detected: {$formResultID}<br/>\n"; } } } break; case 'Export': if (is_array($_POST['formResultSelected'])) { $selected = $_POST['formResultSelected']; foreach ($selected as $formResultID) { if (is_numeric($formResultID) and preg_match('/^[0-9]+$/isu', $formResultID)) { $export_ids[] = $formResultID; } else { echo "Invalid form result ID detected: {$formResultID}<br/>\n"; } } $export_ids_string = implode(",", $export_ids); $hash = md5($export_ids_string); update_option('formbuilder_db_export_ids', $export_ids_string); $url = FORMBUILDER_PLUGIN_URL . "php/formbuilder_export_results.php?h={$hash}"; echo "<meta HTTP-EQUIV='REFRESH' content='2; url=" . $url . "'><p>Your export should start automatically in a few seconds. <a href='{$url}'>Click here if it does not.</a></p>"; return; } break; case 'Resend': if (is_array($_POST['formResultSelected'])) { $selected = $_POST['formResultSelected']; foreach ($selected as $formResultID) { if (is_numeric($formResultID) and preg_match('/^[0-9]+$/isu', $formResultID)) { $resend_ids[] = $formResultID; } else { echo "Invalid form result ID detected: {$formResultID}<br/>\n"; } } $resend_ids_string = implode(",", $resend_ids); $name = 'Name:' . $current_user->user_login; $timestamp = 'Time:' . time(); $resend_ids_string = "{$name},{$timestamp},{$resend_ids_string}"; $hash = md5($resend_ids_string); update_option('formbuilder_db_resend_ids', $resend_ids_string); $url = FB_ADMIN_PLUGIN_PATH . "&fbaction=formResults&fbxmlaction=mass-resend&h={$hash}"; echo "<meta HTTP-EQUIV='REFRESH' content='30; url=" . $url . "'><p>Preparing to resend. <a href='{$url}'>Click here to proceed manually.</a></p>"; return; } break; default: break; } } // Check to see if we should display multiple pages. if (isset($_GET['pageNumber']) and eregi("^[0-9]+\$", $_GET['pageNumber'])) { $result_page = $_GET['pageNumber']; } else { $result_page = 1; } $sql = "SELECT id FROM " . FORMBUILDER_TABLE_RESULTS . ";"; $result = $wpdb->get_col($sql, ARRAY_A); $total_rows = count($result); $paged_nav = fb_get_paged_nav($total_rows, $this->result_limit, false); ?> <script type="text/javascript"> function checkAll() { var inputs = document.getElementsByTagName('input'); var checkboxes = []; for (var i = 0; i < inputs.length; i++) { if (inputs[i].type == 'checkbox' && inputs[i].value != 'all results') { if(inputs[i].checked == true) { inputs[i].checked = false; } else { inputs[i].checked = true; } } } } </script> <?php // Iterate through the results and display them line by line. echo "<form action='' method='POST' name='formResultsList'><table class='widefat'>"; echo "<tr class='fbexporttable'>" . "<td><a href='javascript:;' onclick='checkAll()' title='" . __('Click to toggle all ON or OFF.', 'formbuilder') . "'>" . __('toggle', 'formbuilder') . "</a></td>" . "<td><strong>" . __("Date:", 'formbuilder') . "</strong></td>" . "<td>" . "<span class='fbexport'>" . "<a href='" . FB_ADMIN_PLUGIN_PATH . "&fbaction=formResults&fbxmlaction=massdelete'><strong>" . __("Mass Delete", 'formbuilder') . "</strong></a>" . " | <a href='" . FB_ADMIN_PLUGIN_PATH . "&fbaction=formResults&fbxmlaction=showexport'><strong>" . __("Full Export", 'formbuilder') . "</strong></a>" . " | " . __('Page:', 'formbuilder') . " {$paged_nav}" . "</span>" . "<strong>" . __("Message:", 'formbuilder') . "</strong>" . "</td>" . "</tr>"; for ($i = 0; $i < $this->result_limit; $i++) { $sql_offset = $this->result_limit * ($result_page - 1); $sql = "SELECT * FROM " . FORMBUILDER_TABLE_RESULTS . " ORDER BY timestamp DESC LIMIT {$sql_offset}," . $this->result_limit . ";"; $result = $wpdb->get_row($sql, ARRAY_A, $i); if ($result == false) { break; } $form_data = $this->xmltoarray($result['xmldata']); $message = ""; foreach ($form_data['form'] as $key => $value) { if ($key != 'FormRecipient') { $message .= strtoupper($key) . ": " . $value . "\n"; } } if (strlen($message) > 80) { $message = substr($message, 0, 80) . "..."; } echo "<tr class='hoverlite'>" . "<td><input type='checkbox' class='fb_stored_messages' name='formResultSelected[]' value='" . $result['id'] . "'/></td>" . "<td><a href='" . FB_ADMIN_PLUGIN_PATH . "&fbaction=formResults" . "&fbxmlaction=showemail&fbxmlid=" . $result['id'] . "'>" . date("F j, Y, g:i a", $result['timestamp']) . "</a></td>" . "<td>" . $message . "</td>" . "</tr>"; } $curpos = $sql_offset + $this->result_limit; echo "<tr><td colspan=3 align='left'>" . __('With Selected:', 'formbuilder') . " <select name='formResultSelectedAction'>" . "<option value=''></option>" . "<option value='Export'>" . __('Export', 'formbuilder') . "</option>" . "<option value='Delete'>" . __('Delete', 'formbuilder') . "</option>" . "<option value='Resend'>" . __('Resend', 'formbuilder') . "</option>" . "</select>" . " <input type='submit' value='" . __('Go', 'formbuilder') . "' />" . "<font style='float: right;'>" . __('Page:', 'formbuilder') . " {$paged_nav}</font></td></tr>"; echo "</table></form>"; ?> </div> </fieldset> <?php }