<div id="vu_details" style="padding-top: 0px" data-userid="<?php echo $user_id; ?> "> <div id="vu_profile"> <h2 class="vu_userfullname"><?php echo htmlspecialchars($user_profile['user_fullname']); ?> </h2> <h5 class="vu_email"><?php echo htmlspecialchars($user_profile['user_email']); ?> </h5> <?php if (!empty($user_profile['last_login_date']) && !empty($user_profile['last_ip_address'])) { echo '<div id="vu_log">Last login <strong>' . mf_short_relative_date($user_profile['last_login_date']) . '</strong> from <strong>' . $user_profile['last_ip_address'] . '</strong></div>'; } if ($is_user_suspended) { echo '<div id="vu_suspended">This user is currently being <span>SUSPENDED</span></div>'; } ?> </div> <table width="100%" cellspacing="0" cellpadding="0" border="0" id="vu_privileges"> <tbody> <tr> <td> <div class="vu_title"> Privileges </div> </td> </tr>
$sth = mf_do_query($query, $params, $dbh); $row = mf_do_fetch_result($sth); if (!empty($row)) { if (!empty($row['form_name'])) { $form_name = htmlspecialchars($row['form_name']); } else { $form_name = 'Untitled Form (#' . $form_id . ')'; } } //get lock information $query = "select \r\n\t\t\t\t\tA.user_id,\r\n\t\t\t\t\tA.lock_date,\r\n\t\t\t\t\tB.user_fullname \r\n\t\t\t\tfrom \r\n\t\t\t\t\t" . MF_TABLE_PREFIX . "form_locks A left join " . MF_TABLE_PREFIX . "users B on A.user_id=B.user_id \r\n\t\t\t\twhere \r\n\t\t\t\t\tA.form_id=?"; $params = array($form_id); $sth = mf_do_query($query, $params, $dbh); $row = mf_do_fetch_result($sth); $lock_fullname = $row['user_fullname']; $lock_date = mf_short_relative_date($row['lock_date']); require 'includes/header.php'; ?> <div id="content" class="full"> <div class="post form_locked"> <div class="content_header"> <div class="content_header_title"> <div style="float: left"> <h2><?php echo "<a class=\"breadcrumb\" href='manage_forms.php?id={$form_id}'>" . $form_name . '</a>'; ?> <img src="images/icons/resultset_next.gif" /> Form Locked for Editing</h2> <p>Another user is currently <strong>editing</strong> this form</p> </div>
function mf_display_entries_table($dbh, $form_id, $options) { $form_id = (int) $form_id; $max_data_length = 80; //maximum length of column content $pageno = $options['page_number']; $rows_per_page = $options['rows_per_page']; $sort_element = $options['sort_element']; $sort_order = $options['sort_order']; $filter_data = $options['filter_data']; $filter_type = $options['filter_type']; if (empty($sort_element)) { //set the default sorting order $sort_element = 'id'; $sort_order = 'desc'; } /******************************************************************************************/ //prepare column header names lookup //get form element options first (checkboxes, choices, dropdown) $query = "select \r\n\t\t\t\t\t\telement_id,\r\n\t\t\t\t\t\toption_id,\r\n\t\t\t\t\t\t`option`\r\n\t\t\t\t\tfrom \r\n\t\t\t\t\t\t" . MF_TABLE_PREFIX . "element_options \r\n\t\t\t\t where \r\n\t\t\t\t \t\tform_id=? and live=1 \r\n\t\t\t\torder by \r\n\t\t\t\t\t\telement_id,position asc"; $params = array($form_id); $sth = mf_do_query($query, $params, $dbh); while ($row = mf_do_fetch_result($sth)) { $element_id = $row['element_id']; $option_id = $row['option_id']; $element_option_lookup[$element_id][$option_id] = htmlspecialchars($row['option'], ENT_QUOTES); } //get element options for matrix fields $query = "select \r\n\t\t\t\t\t\tA.element_id,\r\n\t\t\t\t\t\tA.option_id,\r\n\t\t\t\t\t\t(select if(B.element_matrix_parent_id=0,A.option,\r\n\t\t\t\t\t\t\t(select \r\n\t\t\t\t\t\t\t\t\tC.`option` \r\n\t\t\t\t\t\t\t from \r\n\t\t\t\t\t\t\t \t\t" . MF_TABLE_PREFIX . "element_options C \r\n\t\t\t\t\t\t\t where \r\n\t\t\t\t\t\t\t \t\tC.element_id=B.element_matrix_parent_id and \r\n\t\t\t\t\t\t\t \t\tC.form_id=A.form_id and \r\n\t\t\t\t\t\t\t \t\tC.live=1 and \r\n\t\t\t\t\t\t\t \t\tC.option_id=A.option_id))\r\n\t\t\t\t\t\t) 'option_label'\r\n\t\t\t\t\tfrom \r\n\t\t\t\t\t\t" . MF_TABLE_PREFIX . "element_options A left join " . MF_TABLE_PREFIX . "form_elements B on (A.element_id=B.element_id and A.form_id=B.form_id)\r\n\t\t\t\t where \r\n\t\t\t\t \t\tA.form_id=? and A.live=1 and B.element_type='matrix' and B.element_status=1\r\n\t\t\t\torder by \r\n\t\t\t\t\t\tA.element_id,A.option_id asc"; $params = array($form_id); $sth = mf_do_query($query, $params, $dbh); while ($row = mf_do_fetch_result($sth)) { $element_id = $row['element_id']; $option_id = $row['option_id']; $matrix_element_option_lookup[$element_id][$option_id] = htmlspecialchars($row['option_label'], ENT_QUOTES); } //get 'multiselect' status of matrix fields $query = "select \r\n\t\t\t\t\t\t A.element_id,\r\n\t\t\t\t\t\t A.element_matrix_parent_id,\r\n\t\t\t\t\t\t A.element_matrix_allow_multiselect,\r\n\t\t\t\t\t\t (select if(A.element_matrix_parent_id=0,A.element_matrix_allow_multiselect,\r\n\t\t\t\t\t\t \t\t\t (select B.element_matrix_allow_multiselect from " . MF_TABLE_PREFIX . "form_elements B where B.form_id=A.form_id and B.element_id=A.element_matrix_parent_id)\r\n\t\t\t\t\t\t \t\t\t)\r\n\t\t\t\t\t\t ) 'multiselect' \r\n\t\t\t\t\t from \r\n\t\t\t\t\t \t " . MF_TABLE_PREFIX . "form_elements A\r\n\t\t\t\t\t where \r\n\t\t\t\t\t \t A.form_id=? and A.element_status=1 and A.element_type='matrix'"; $params = array($form_id); $sth = mf_do_query($query, $params, $dbh); while ($row = mf_do_fetch_result($sth)) { $matrix_multiselect_status[$row['element_id']] = $row['multiselect']; } /******************************************************************************************/ //set column properties for basic fields $column_name_lookup['date_created'] = 'Date Created'; $column_name_lookup['date_updated'] = 'Date Updated'; $column_name_lookup['ip_address'] = 'IP Address'; $column_type_lookup['id'] = 'number'; $column_type_lookup['row_num'] = 'number'; $column_type_lookup['date_created'] = 'date'; $column_type_lookup['date_updated'] = 'date'; $column_type_lookup['ip_address'] = 'text'; //get column properties for other fields $query = "select \r\n\t\t\t\t\t\t element_id,\r\n\t\t\t\t\t\t element_title,\r\n\t\t\t\t\t\t element_type,\r\n\t\t\t\t\t\t element_constraint,\r\n\t\t\t\t\t\t element_choice_has_other,\r\n\t\t\t\t\t\t element_choice_other_label,\r\n\t\t\t\t\t\t element_time_showsecond,\r\n\t\t\t\t\t\t element_time_24hour,\r\n\t\t\t\t\t\t element_matrix_allow_multiselect \r\n\t\t\t\t from \r\n\t\t\t\t `" . MF_TABLE_PREFIX . "form_elements` \r\n\t\t\t\t where \r\n\t\t\t\t \t form_id=? and element_status=1 and element_type not in('section','page_break')\r\n\t\t\t\t order by \r\n\t\t\t\t \t\t element_position asc"; $params = array($form_id); $sth = mf_do_query($query, $params, $dbh); $element_radio_has_other = array(); while ($row = mf_do_fetch_result($sth)) { $element_type = $row['element_type']; $element_constraint = $row['element_constraint']; //get 'other' field label for checkboxes and radio button if ($element_type == 'checkbox' || $element_type == 'radio') { if (!empty($row['element_choice_has_other'])) { $element_option_lookup[$row['element_id']]['other'] = htmlspecialchars($row['element_choice_other_label'], ENT_QUOTES); if ($element_type == 'radio') { $element_radio_has_other['element_' . $row['element_id']] = true; } } } $row['element_title'] = htmlspecialchars($row['element_title'], ENT_QUOTES); if ('address' == $element_type) { //address has 6 fields $column_name_lookup['element_' . $row['element_id'] . '_1'] = $row['element_title'] . ' - Street Address'; $column_name_lookup['element_' . $row['element_id'] . '_2'] = 'Address Line 2'; $column_name_lookup['element_' . $row['element_id'] . '_3'] = 'City'; $column_name_lookup['element_' . $row['element_id'] . '_4'] = 'State/Province/Region'; $column_name_lookup['element_' . $row['element_id'] . '_5'] = 'Zip/Postal Code'; $column_name_lookup['element_' . $row['element_id'] . '_6'] = 'Country'; $column_type_lookup['element_' . $row['element_id'] . '_1'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_2'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_3'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_4'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_5'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_6'] = $row['element_type']; } elseif ('simple_name' == $element_type) { //simple name has 2 fields $column_name_lookup['element_' . $row['element_id'] . '_1'] = $row['element_title'] . ' - First'; $column_name_lookup['element_' . $row['element_id'] . '_2'] = $row['element_title'] . ' - Last'; $column_type_lookup['element_' . $row['element_id'] . '_1'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_2'] = $row['element_type']; } elseif ('simple_name_wmiddle' == $element_type) { //simple name with middle has 3 fields $column_name_lookup['element_' . $row['element_id'] . '_1'] = $row['element_title'] . ' - First'; $column_name_lookup['element_' . $row['element_id'] . '_2'] = $row['element_title'] . ' - Middle'; $column_name_lookup['element_' . $row['element_id'] . '_3'] = $row['element_title'] . ' - Last'; $column_type_lookup['element_' . $row['element_id'] . '_1'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_2'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_3'] = $row['element_type']; } elseif ('name' == $element_type) { //name has 4 fields $column_name_lookup['element_' . $row['element_id'] . '_1'] = $row['element_title'] . ' - Title'; $column_name_lookup['element_' . $row['element_id'] . '_2'] = $row['element_title'] . ' - First'; $column_name_lookup['element_' . $row['element_id'] . '_3'] = $row['element_title'] . ' - Last'; $column_name_lookup['element_' . $row['element_id'] . '_4'] = $row['element_title'] . ' - Suffix'; $column_type_lookup['element_' . $row['element_id'] . '_1'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_2'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_3'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_4'] = $row['element_type']; } elseif ('name_wmiddle' == $element_type) { //name with middle has 5 fields $column_name_lookup['element_' . $row['element_id'] . '_1'] = $row['element_title'] . ' - Title'; $column_name_lookup['element_' . $row['element_id'] . '_2'] = $row['element_title'] . ' - First'; $column_name_lookup['element_' . $row['element_id'] . '_3'] = $row['element_title'] . ' - Middle'; $column_name_lookup['element_' . $row['element_id'] . '_4'] = $row['element_title'] . ' - Last'; $column_name_lookup['element_' . $row['element_id'] . '_5'] = $row['element_title'] . ' - Suffix'; $column_type_lookup['element_' . $row['element_id'] . '_1'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_2'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_3'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_4'] = $row['element_type']; $column_type_lookup['element_' . $row['element_id'] . '_5'] = $row['element_type']; } elseif ('money' == $element_type) { //money format $column_name_lookup['element_' . $row['element_id']] = $row['element_title']; if (!empty($element_constraint)) { $column_type_lookup['element_' . $row['element_id']] = 'money_' . $element_constraint; //euro, pound, yen,etc } else { $column_type_lookup['element_' . $row['element_id']] = 'money_dollar'; //default is dollar } } elseif ('checkbox' == $element_type) { //checkboxes, get childs elements $this_checkbox_options = $element_option_lookup[$row['element_id']]; foreach ($this_checkbox_options as $option_id => $option) { $column_name_lookup['element_' . $row['element_id'] . '_' . $option_id] = htmlspecialchars($option, ENT_QUOTES); $column_type_lookup['element_' . $row['element_id'] . '_' . $option_id] = $row['element_type']; } } elseif ('time' == $element_type) { if (!empty($row['element_time_showsecond']) && !empty($row['element_time_24hour'])) { $column_type_lookup['element_' . $row['element_id']] = 'time_24hour'; } else { if (!empty($row['element_time_showsecond'])) { $column_type_lookup['element_' . $row['element_id']] = 'time'; } else { if (!empty($row['element_time_24hour'])) { $column_type_lookup['element_' . $row['element_id']] = 'time_24hour_noseconds'; } else { $column_type_lookup['element_' . $row['element_id']] = 'time_noseconds'; } } } $column_name_lookup['element_' . $row['element_id']] = $row['element_title']; } else { if ('matrix' == $element_type) { if (empty($matrix_multiselect_status[$row['element_id']])) { $column_name_lookup['element_' . $row['element_id']] = $row['element_title']; $column_type_lookup['element_' . $row['element_id']] = 'matrix_radio'; } else { $this_checkbox_options = $matrix_element_option_lookup[$row['element_id']]; foreach ($this_checkbox_options as $option_id => $option) { $option = $option . ' - ' . $row['element_title']; $column_name_lookup['element_' . $row['element_id'] . '_' . $option_id] = htmlspecialchars($option, ENT_QUOTES); $column_type_lookup['element_' . $row['element_id'] . '_' . $option_id] = 'matrix_checkbox'; } } } else { //for other elements with only 1 field $column_name_lookup['element_' . $row['element_id']] = $row['element_title']; $column_type_lookup['element_' . $row['element_id']] = $row['element_type']; } } } /******************************************************************************************/ //get column preferences and store it into array $query = "select element_name from " . MF_TABLE_PREFIX . "column_preferences where form_id=? order by position asc"; $params = array($form_id); $sth = mf_do_query($query, $params, $dbh); while ($row = mf_do_fetch_result($sth)) { if ($row['element_name'] == 'id') { continue; } $column_prefs[] = $row['element_name']; } //if there is no column preferences, display the first 6 fields if (empty($column_prefs)) { $temp_slice = array_slice($column_name_lookup, 0, 8); unset($temp_slice['date_updated']); unset($temp_slice['ip_address']); $column_prefs = array_keys($temp_slice); } //determine column labels //the first 2 columns are always id and row_num $column_labels = array(); $column_labels[] = 'mf_id'; $column_labels[] = 'mf_row_num'; foreach ($column_prefs as $column_name) { $column_labels[] = $column_name_lookup[$column_name]; } //get the entries from ap_form_x table and store it into array $column_prefs_joined = '`' . implode("`,`", $column_prefs) . '`'; //if there is any radio fields which has 'other', we need to query that field as well if (!empty($element_radio_has_other)) { $radio_has_other_array = array(); foreach ($element_radio_has_other as $element_name => $value) { $radio_has_other_array[] = $element_name . '_other'; } $radio_has_other_joined = '`' . implode("`,`", $radio_has_other_array) . '`'; $column_prefs_joined = $column_prefs_joined . ',' . $radio_has_other_joined; } //check for filter data and build the filter query if (!empty($filter_data)) { if ($filter_type == 'all') { $condition_type = ' AND '; } else { $condition_type = ' OR '; } $where_clause_array = array(); foreach ($filter_data as $value) { $element_name = $value['element_name']; $filter_condition = $value['filter_condition']; $filter_keyword = $value['filter_keyword']; $filter_element_type = $column_type_lookup[$element_name]; $temp = explode('_', $element_name); $element_id = $temp[1]; if (in_array($filter_element_type, array('radio', 'select', 'matrix_radio'))) { //these types need special steps to filter //we need to look into the ap_element_options first and do the filter there if ($filter_condition == 'is') { $where_operand = '='; $where_keyword = "'{$filter_keyword}'"; } else { if ($filter_condition == 'is_not') { $where_operand = '<>'; $where_keyword = "'{$filter_keyword}'"; } else { if ($filter_condition == 'begins_with') { $where_operand = 'LIKE'; $where_keyword = "'{$filter_keyword}%'"; } else { if ($filter_condition == 'ends_with') { $where_operand = 'LIKE'; $where_keyword = "'%{$filter_keyword}'"; } else { if ($filter_condition == 'contains') { $where_operand = 'LIKE'; $where_keyword = "'%{$filter_keyword}%'"; } else { if ($filter_condition == 'not_contain') { $where_operand = 'NOT LIKE'; $where_keyword = "'%{$filter_keyword}%'"; } } } } } } //do a query to ap_element_options table $query = "select \r\n\t\t\t\t\t\t\t\t\toption_id \r\n\t\t\t\t\t\t\t\tfrom \r\n\t\t\t\t\t\t\t\t\t" . MF_TABLE_PREFIX . "element_options \r\n\t\t\t\t\t\t\t where \r\n\t\t\t\t\t\t\t \t\tform_id=? and\r\n\t\t\t\t\t\t\t \t\telement_id=? and\r\n\t\t\t\t\t\t\t \t\tlive=1 and \r\n\t\t\t\t\t\t\t \t\t`option` {$where_operand} {$where_keyword}"; $params = array($form_id, $element_id); $filtered_option_id_array = array(); $sth = mf_do_query($query, $params, $dbh); while ($row = mf_do_fetch_result($sth)) { $filtered_option_id_array[] = $row['option_id']; } $filtered_option_id = implode("','", $filtered_option_id_array); if ($filter_element_type == 'radio' && !empty($radio_has_other_array)) { if (in_array($element_name . '_other', $radio_has_other_array)) { $filter_radio_has_other = true; } else { $filter_radio_has_other = false; } } if ($filter_radio_has_other) { //if the filter is radio button field with 'other' if (!empty($filtered_option_id_array)) { $where_clause_array[] = "({$element_name} IN('{$filtered_option_id}') OR {$element_name}_other {$where_operand} {$where_keyword})"; } else { $where_clause_array[] = "{$element_name}_other {$where_operand} {$where_keyword}"; } } else { //otherwise, for the rest of the field types if (!empty($filtered_option_id_array)) { $where_clause_array[] = "{$element_name} IN('{$filtered_option_id}')"; } } } else { if (in_array($filter_element_type, array('date', 'europe_date'))) { $date_exploded = array(); $date_exploded = explode('/', $filter_keyword); //the filter_keyword has format mm/dd/yyyy $filter_keyword = $date_exploded[2] . '-' . $date_exploded[0] . '-' . $date_exploded[1]; if ($filter_condition == 'is') { $where_operand = '='; $where_keyword = "'{$filter_keyword}'"; } else { if ($filter_condition == 'is_before') { $where_operand = '<'; $where_keyword = "'{$filter_keyword}'"; } else { if ($filter_condition == 'is_after') { $where_operand = '>'; $where_keyword = "'{$filter_keyword}'"; } } } $where_clause_array[] = "date({$element_name}) {$where_operand} {$where_keyword}"; } else { if ($filter_condition == 'is') { $where_operand = '='; $where_keyword = "'{$filter_keyword}'"; } else { if ($filter_condition == 'is_not') { $where_operand = '<>'; $where_keyword = "'{$filter_keyword}'"; } else { if ($filter_condition == 'begins_with') { $where_operand = 'LIKE'; $where_keyword = "'{$filter_keyword}%'"; } else { if ($filter_condition == 'ends_with') { $where_operand = 'LIKE'; $where_keyword = "'%{$filter_keyword}'"; } else { if ($filter_condition == 'contains') { $where_operand = 'LIKE'; $where_keyword = "'%{$filter_keyword}%'"; } else { if ($filter_condition == 'not_contain') { $where_operand = 'NOT LIKE'; $where_keyword = "'%{$filter_keyword}%'"; } else { if ($filter_condition == 'less_than' || $filter_condition == 'is_before') { $where_operand = '<'; $where_keyword = "'{$filter_keyword}'"; } else { if ($filter_condition == 'greater_than' || $filter_condition == 'is_after') { $where_operand = '>'; $where_keyword = "'{$filter_keyword}'"; } else { if ($filter_condition == 'is_one') { $where_operand = '='; $where_keyword = "'1'"; } else { if ($filter_condition == 'is_zero') { $where_operand = '='; $where_keyword = "'0'"; } } } } } } } } } } $where_clause_array[] = "{$element_name} {$where_operand} {$where_keyword}"; } } } $where_clause = implode($condition_type, $where_clause_array); if (empty($where_clause)) { $where_clause = "WHERE `status`=1"; } else { $where_clause = "WHERE ({$where_clause}) AND `status`=1"; } } else { $where_clause = "WHERE `status`=1"; } //check the sorting element //if the element type is radio, select or matrix_radio, we need to add a sub query to the main query //so that the fields can be sorted properly (the sub query need to get values from ap_element_options table) $sort_element_type = $column_type_lookup[$sort_element]; if (in_array($sort_element_type, array('radio', 'select', 'matrix_radio'))) { if ($sort_element_type == 'radio' && !empty($radio_has_other_array)) { if (in_array($sort_element . '_other', $radio_has_other_array)) { $sort_radio_has_other = true; } } $temp = explode('_', $sort_element); $sort_element_id = $temp[1]; if ($sort_radio_has_other) { //if this is radio button field with 'other' enabled $sorting_query = ",(\t\r\n\t\t\t\t\t\t\t\t\t\tselect if(A.{$sort_element}=0,A.{$sort_element}_other,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(select \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`option` \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom " . MF_TABLE_PREFIX . "element_options \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t where \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t \t\tform_id='{$form_id}' and \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t \t\telement_id='{$sort_element_id}' and \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t \t\toption_id=A.{$sort_element} and \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t \t\tlive=1)\r\n\t\t\t\t\t\t\t\t\t \t)\r\n\t\t\t\t\t\t\t\t ) {$sort_element}_key"; } else { $sorting_query = ",(\r\n\t\t\t\t\t\t\t\t\tselect \r\n\t\t\t\t\t\t\t\t\t\t\t`option` \r\n\t\t\t\t\t\t\t\t\t\tfrom " . MF_TABLE_PREFIX . "element_options \r\n\t\t\t\t\t\t\t\t\t where \r\n\t\t\t\t\t\t\t\t\t \t\tform_id='{$form_id}' and \r\n\t\t\t\t\t\t\t\t\t \t\telement_id='{$sort_element_id}' and \r\n\t\t\t\t\t\t\t\t\t \t\toption_id=A.{$sort_element} and \r\n\t\t\t\t\t\t\t\t\t \t\tlive=1\r\n\t\t\t\t\t\t\t\t ) {$sort_element}_key"; } //override the $sort_element $sort_element .= '_key'; } /** pagination **/ //identify how many database rows are available $query = "select count(*) total_row from (select \r\n\t\t\t\t\t\t`id`,\r\n\t\t\t\t\t\t`id` as `row_num`,\r\n\t\t\t\t\t\t{$column_prefs_joined}\r\n\t\t\t\t\t\t{$sorting_query} \r\n\t\t\t\t from \r\n\t\t\t\t \t" . MF_TABLE_PREFIX . "form_{$form_id} A \r\n\t\t\t\t \t{$where_clause} ) B "; $params = array(); $sth = mf_do_query($query, $params, $dbh); $row = mf_do_fetch_result($sth); $numrows = $row['total_row']; $lastpage = ceil($numrows / $rows_per_page); //ensure that $pageno is within range //this code checks that the value of $pageno is an integer between 1 and $lastpage $pageno = (int) $pageno; if ($pageno < 1) { $pageno = 1; } elseif ($pageno > $lastpage) { $pageno = $lastpage; } //construct the LIMIT clause for the sql SELECT statement if (!empty($numrows)) { $limit = 'LIMIT ' . ($pageno - 1) * $rows_per_page . ',' . $rows_per_page; } /** end pagination **/ $query = "select \r\n\t\t\t\t\t\t`id`,\r\n\t\t\t\t\t\t`id` as `row_num`,\r\n\t\t\t\t\t\t{$column_prefs_joined}\r\n\t\t\t\t\t\t{$sorting_query} \r\n\t\t\t\t from \r\n\t\t\t\t \t" . MF_TABLE_PREFIX . "form_{$form_id} A \r\n\t\t\t\t \t{$where_clause} \r\n\t\t\t\torder by \r\n\t\t\t\t\t\t{$sort_element} {$sort_order}\r\n\t\t\t\t\t\t{$limit}"; $params = array(); $sth = mf_do_query($query, $params, $dbh); $i = 0; //prepend "id" and "row_num" into the column preferences array_unshift($column_prefs, "id", "row_num"); while ($row = mf_do_fetch_result($sth)) { $j = 0; foreach ($column_prefs as $column_name) { $form_data[$i][$j] = ''; //limit the data length, unless for file element if ($column_type_lookup[$column_name] != 'file') { if (strlen($row[$column_name]) > $max_data_length) { $row[$column_name] = substr($row[$column_name], 0, $max_data_length) . '...'; } } if ($column_type_lookup[$column_name] == 'time') { if (!empty($row[$column_name])) { $form_data[$i][$j] = date("h:i:s A", strtotime($row[$column_name])); } else { $form_data[$i][$j] = ''; } } elseif ($column_type_lookup[$column_name] == 'time_noseconds') { if (!empty($row[$column_name])) { $form_data[$i][$j] = date("h:i A", strtotime($row[$column_name])); } else { $form_data[$i][$j] = ''; } } elseif ($column_type_lookup[$column_name] == 'time_24hour_noseconds') { if (!empty($row[$column_name])) { $form_data[$i][$j] = date("H:i", strtotime($row[$column_name])); } else { $form_data[$i][$j] = ''; } } elseif ($column_type_lookup[$column_name] == 'time_24hour') { if (!empty($row[$column_name])) { $form_data[$i][$j] = date("H:i:s", strtotime($row[$column_name])); } else { $form_data[$i][$j] = ''; } } elseif (substr($column_type_lookup[$column_name], 0, 5) == 'money') { //set column formatting for money fields $column_type_temp = explode('_', $column_type_lookup[$column_name]); $column_type = $column_type_temp[1]; switch ($column_type) { case 'dollar': $currency = '$'; break; case 'pound': $currency = '£'; break; case 'euro': $currency = '€'; break; case 'yen': $currency = '¥'; break; case 'baht': $currency = '฿'; break; case 'forint': $currency = 'Ft'; break; case 'franc': $currency = 'CHF'; break; case 'koruna': $currency = 'Kč'; break; case 'krona': $currency = 'kr'; break; case 'pesos': $currency = '$'; break; case 'rand': $currency = 'R'; break; case 'ringgit': $currency = 'RM'; break; case 'rupees': $currency = 'Rs'; break; case 'zloty': $currency = 'zł'; break; case 'riyals': $currency = '﷼'; break; } if (!empty($row[$column_name])) { $form_data[$i][$j] = '<div class="me_right_div">' . $currency . $row[$column_name] . '</div>'; } else { $form_data[$i][$j] = ''; } } elseif ($column_type_lookup[$column_name] == 'date') { //date with format MM/DD/YYYY if (!empty($row[$column_name]) && $row[$column_name] != '0000-00-00') { $form_data[$i][$j] = date('M d, Y', strtotime($row[$column_name])); } if ($column_name == 'date_created' || $column_name == 'date_updated') { $form_data[$i][$j] = mf_short_relative_date($row[$column_name]); } } elseif ($column_type_lookup[$column_name] == 'europe_date') { //date with format DD/MM/YYYY if (!empty($row[$column_name]) && $row[$column_name] != '0000-00-00') { $form_data[$i][$j] = date('d M Y', strtotime($row[$column_name])); } } elseif ($column_type_lookup[$column_name] == 'number') { $form_data[$i][$j] = $row[$column_name]; } elseif (in_array($column_type_lookup[$column_name], array('radio', 'select'))) { //multiple choice or dropdown $exploded = array(); $exploded = explode('_', $column_name); $this_element_id = $exploded[1]; $this_option_id = $row[$column_name]; $form_data[$i][$j] = $element_option_lookup[$this_element_id][$this_option_id]; if ($column_type_lookup[$column_name] == 'radio') { if ($element_radio_has_other['element_' . $this_element_id] === true && empty($form_data[$i][$j])) { $form_data[$i][$j] = $row['element_' . $this_element_id . '_other']; } } } elseif (substr($column_type_lookup[$column_name], 0, 6) == 'matrix') { $exploded = array(); $exploded = explode('_', $column_type_lookup[$column_name]); $matrix_type = $exploded[1]; if ($matrix_type == 'radio') { $exploded = array(); $exploded = explode('_', $column_name); $this_element_id = $exploded[1]; $this_option_id = $row[$column_name]; $form_data[$i][$j] = $matrix_element_option_lookup[$this_element_id][$this_option_id]; } else { if ($matrix_type == 'checkbox') { if (!empty($row[$column_name])) { $form_data[$i][$j] = '<div class="me_center_div"><img src="images/icons/62_blue_16.png" align="absmiddle" /></div>'; } else { $form_data[$i][$j] = ''; } } } } elseif ($column_type_lookup[$column_name] == 'checkbox') { if (!empty($row[$column_name])) { if (substr($column_name, -5) == "other") { //if this is an 'other' field, display the actual value $form_data[$i][$j] = htmlspecialchars($row[$column_name], ENT_QUOTES); } else { $form_data[$i][$j] = '<div class="me_center_div"><img src="images/icons/62_blue_16.png" align="absmiddle" /></div>'; } } else { $form_data[$i][$j] = ''; } } elseif (in_array($column_type_lookup[$column_name], array('phone', 'simple_phone'))) { if (!empty($row[$column_name])) { if ($column_type_lookup[$column_name] == 'phone') { $form_data[$i][$j] = '(' . substr($row[$column_name], 0, 3) . ') ' . substr($row[$column_name], 3, 3) . '-' . substr($row[$column_name], 6, 4); } else { $form_data[$i][$j] = $row[$column_name]; } } } elseif ($column_type_lookup[$column_name] == 'file') { if (!empty($row[$column_name])) { $raw_files = array(); $raw_files = explode('|', $row[$column_name]); $clean_filenames = array(); foreach ($raw_files as $hashed_filename) { $file_1 = substr($hashed_filename, strpos($hashed_filename, '-') + 1); $filename_value = substr($file_1, strpos($file_1, '-') + 1); $clean_filenames[] = $filename_value; } $clean_filenames_joined = implode(', ', $clean_filenames); $form_data[$i][$j] = '<div class="me_file_div">' . $clean_filenames_joined . '</div>'; } } else { $form_data[$i][$j] = htmlspecialchars(str_replace("\r", "", str_replace("\n", " ", $row[$column_name])), ENT_QUOTES); } $j++; } $i++; } //generate table markup for the entries $table_header_markup = '<thead><tr>' . "\n"; foreach ($column_labels as $label_name) { if ($label_name == 'mf_id') { $table_header_markup .= '<th class="me_action" scope="col"><input type="checkbox" value="1" name="col_select" id="col_select" /></th>' . "\n"; } else { if ($label_name == 'mf_row_num') { $table_header_markup .= '<th class="me_number" scope="col">#</th>' . "\n"; } else { $table_header_markup .= '<th scope="col"><div title="' . $label_name . '">' . $label_name . '</div></th>' . "\n"; } } } $table_header_markup .= '</tr></thead>' . "\n"; $table_body_markup = '<tbody>' . "\n"; $toggle = false; $first_row_number = ($pageno - 1) * $rows_per_page + 1; $last_row_number = $first_row_number; if (!empty($form_data)) { foreach ($form_data as $row_data) { if ($toggle) { $toggle = false; $row_style = 'class="alt"'; } else { $toggle = true; $row_style = ''; } $table_body_markup .= "<tr id=\"row_{$row_data[0]}\" {$row_style}>"; foreach ($row_data as $key => $column_data) { if ($key == 0) { //this is "id" column $table_body_markup .= '<td class="me_action"><input type="checkbox" id="entry_' . $column_data . '" name="entry_' . $column_data . '" value="1" /></td>' . "\n"; } elseif ($key == 1) { //this is "row_num" column $table_body_markup .= '<td class="me_number">' . $column_data . '</td>' . "\n"; } else { $table_body_markup .= '<td><div>' . $column_data . '</div></td>' . "\n"; } } $table_body_markup .= "</tr>" . "\n"; $last_row_number++; } } else { $table_body_markup .= "<tr><td colspan=\"" . count($column_labels) . "\"> <div id=\"filter_no_results\"><h3>Your search returned no results.</h3></div></td></tr>"; } $last_row_number--; $table_body_markup .= '</tbody>' . "\n"; $table_markup = '<table width="100%" cellspacing="0" cellpadding="0" border="0" id="entries_table" class="table table-bordered table-striped">' . "\n"; $table_markup .= $table_header_markup . $table_body_markup; $table_markup .= '</table>' . "\n"; $entries_markup = '<div id="entries_container">'; $entries_markup .= $table_markup; $entries_markup .= '</div>'; $pagination_markup = ''; if (!empty($lastpage) && $numrows > $rows_per_page) { if ($pageno != 1) { if ($lastpage > 13 && $pageno > 7) { $pagination_markup .= "<li class=\"page\"><a href='{$_SERVER['PHP_SELF']}?id={$form_id}&pageno=1'>⇤ First</a></li>"; } $prevpage = $pageno - 1; } //middle navigation if ($pageno == 1) { $i = 1; while ($i <= 13 && $i <= $lastpage) { if ($i != 1) { $active_style = ''; } else { $active_style = 'current_page'; } $pagination_markup .= "<li class=\"page {$active_style}\"><a href='{$_SERVER['PHP_SELF']}?id={$form_id}&pageno={$i}'>{$i}</a></li>"; $i++; } if ($lastpage > $i) { $pagination_markup .= "<li class=\"page_more\">...</li>"; } } elseif ($pageno == $lastpage) { if ($lastpage - 13 > 1) { $pagination_markup .= "<li class=\"page_more\">...</li>"; $i = 1; $j = $lastpage - 12; while ($i <= 13) { if ($j != $lastpage) { $active_style = ''; } else { $active_style = 'current_page'; } $pagination_markup .= "<li class=\"page {$active_style}\"><a href='{$_SERVER['PHP_SELF']}?id={$form_id}&pageno={$j}'>{$j}</a></li>"; $i++; $j++; } } else { $i = 1; while ($i <= 13 && $i <= $lastpage) { if ($i != $lastpage) { $active_style = ''; } else { $active_style = 'current_page'; } $pagination_markup .= "<li class=\"page {$active_style}\"><a href='{$_SERVER['PHP_SELF']}?id={$form_id}&pageno={$i}'>{$i}</a></li>"; $i++; } } } else { $next_pages = false; $prev_pages = false; if ($lastpage - ($pageno + 6) >= 1) { $next_pages = true; } if ($pageno - 6 > 1) { $prev_pages = true; } if ($prev_pages) { //if there are previous pages $pagination_markup .= "<li class=\"page_more\">...</li>"; if ($next_pages) { //if there are next pages $i = 1; $j = $pageno - 6; while ($i <= 13) { if ($j != $pageno) { $active_style = ''; } else { $active_style = 'current_page'; } $pagination_markup .= "<li class=\"page {$active_style}\"><a href='{$_SERVER['PHP_SELF']}?id={$form_id}&pageno={$j}'>{$j}</a></li>"; $i++; $j++; } $pagination_markup .= "<li class=\"page_more\">...</li>"; } else { $i = 1; $j = $pageno - 9; while ($i <= 13 && $j <= $lastpage) { if ($j != $pageno) { $active_style = ''; } else { $active_style = 'current_page'; } $pagination_markup .= "<li class=\"page {$active_style}\"><a href='{$_SERVER['PHP_SELF']}?id={$form_id}&pageno={$j}'>{$j}</a></li>"; $i++; $j++; } } } else { //if there aren't previous pages $i = 1; while ($i <= 13 && $i <= $lastpage) { if ($i != $pageno) { $active_style = ''; } else { $active_style = 'current_page'; } $pagination_markup .= "<li class=\"page {$active_style}\"><a href='{$_SERVER['PHP_SELF']}?id={$form_id}&pageno={$i}'>{$i}</a></li>"; $i++; } if ($next_pages) { $pagination_markup .= "<li class=\"page_more\">...</li>"; } } } if ($pageno != $lastpage) { $nextpage = $pageno + 1; if ($lastpage > 13) { $pagination_markup .= "<li class=\"page\"><a href='{$_SERVER['PHP_SELF']}?id={$form_id}&pageno={$lastpage}'>Last ⇥</a></li>"; } } $pagination_markup = '<ul class="pages bluesoft small" id="me_pagination">' . $pagination_markup . '</ul>'; $pagination_markup .= "<div id=\"me_pagination_label\">Displaying <strong>{$first_row_number}-{$last_row_number}</strong> of <strong id=\"me_entries_total\">{$numrows}</strong> entries</div>"; } else { $pagination_markup = '<div style="width: 100%; height: 20px;"></div>'; } $entries_markup .= $pagination_markup; return $entries_markup; }