public static function leads_page($form_id) { global $wpdb; //quit if version of wp is not supported if (!GFCommon::ensure_wp_version()) { return; } $form_id = absint($form_id); echo GFCommon::get_remote_message(); $action = RGForms::post('action'); $filter = rgget('filter'); $search = stripslashes(rgget('s')); $page_index = empty($_GET['paged']) ? 0 : intval($_GET['paged']) - 1; $star = $filter == 'star' ? 1 : null; $read = $filter == 'unread' ? 0 : null; $status = in_array($filter, array('trash', 'spam')) ? $filter : 'active'; $form = RGFormsModel::get_form_meta($form_id); $search_criteria['status'] = $status; if ($star) { $search_criteria['field_filters'][] = array('key' => 'is_starred', 'value' => (bool) $star); } if (!is_null($read)) { $search_criteria['field_filters'][] = array('key' => 'is_read', 'value' => (bool) $read); } $search_field_id = rgget('field_id'); $search_operator = rgget('operator'); if (isset($_GET['field_id']) && $_GET['field_id'] !== '') { $key = $search_field_id; $val = stripslashes(rgget('s')); $strpos_row_key = strpos($search_field_id, '|'); if ($strpos_row_key !== false) { //multi-row likert $key_array = explode('|', $search_field_id); $key = $key_array[0]; $val = $key_array[1] . ':' . $val; } if ('entry_id' == $key) { $key = 'id'; } $filter_operator = empty($search_operator) ? 'is' : $search_operator; $field = GFFormsModel::get_field($form, $key); if ($field) { $input_type = GFFormsModel::get_input_type($field); if ($field->type == 'product' && in_array($input_type, array('radio', 'select'))) { $filter_operator = 'contains'; } } $search_criteria['field_filters'][] = array('key' => $key, 'operator' => $filter_operator, 'value' => $val); } $update_message = ''; switch ($action) { case 'delete': check_admin_referer('gforms_entry_list', 'gforms_entry_list'); $lead_id = $_POST['action_argument']; if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { RGFormsModel::delete_lead($lead_id); $update_message = esc_html__('Entry deleted.', 'gravityforms'); } else { $update_message = esc_html__("You don't have adequate permission to delete entries.", 'gravityforms'); } break; case 'bulk': check_admin_referer('gforms_entry_list', 'gforms_entry_list'); $bulk_action = !empty($_POST['bulk_action']) ? $_POST['bulk_action'] : $_POST['bulk_action2']; $select_all = rgpost('all_entries'); $leads = empty($select_all) ? $_POST['lead'] : GFFormsModel::search_lead_ids($form_id, $search_criteria); $entry_count = count($leads) > 1 ? sprintf(esc_html__('%d entries', 'gravityforms'), count($leads)) : esc_html__('1 entry', 'gravityforms'); switch ($bulk_action) { case 'delete': if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { RGFormsModel::delete_leads($leads); $update_message = sprintf(esc_html__('%s deleted.', 'gravityforms'), $entry_count); } else { $update_message = esc_html__("You don't have adequate permission to delete entries.", 'gravityforms'); } break; case 'trash': RGFormsModel::update_leads_property($leads, 'status', 'trash'); $update_message = sprintf(esc_html__('%s moved to Trash.', 'gravityforms'), $entry_count); break; case 'restore': RGFormsModel::update_leads_property($leads, 'status', 'active'); $update_message = sprintf(esc_html__('%s restored from the Trash.', 'gravityforms'), $entry_count); break; case 'unspam': RGFormsModel::update_leads_property($leads, 'status', 'active'); $update_message = sprintf(esc_html__('%s restored from the spam.', 'gravityforms'), $entry_count); break; case 'spam': RGFormsModel::update_leads_property($leads, 'status', 'spam'); $update_message = sprintf(esc_html__('%s marked as spam.', 'gravityforms'), $entry_count); break; case 'mark_read': RGFormsModel::update_leads_property($leads, 'is_read', 1); $update_message = sprintf(esc_html__('%s marked as read.', 'gravityforms'), $entry_count); break; case 'mark_unread': RGFormsModel::update_leads_property($leads, 'is_read', 0); $update_message = sprintf(esc_html__('%s marked as unread.', 'gravityforms'), $entry_count); break; case 'add_star': RGFormsModel::update_leads_property($leads, 'is_starred', 1); $update_message = sprintf(esc_html__('%s starred.', 'gravityforms'), $entry_count); break; case 'remove_star': RGFormsModel::update_leads_property($leads, 'is_starred', 0); $update_message = sprintf(esc_html__('%s unstarred.', 'gravityforms'), $entry_count); break; } break; case 'change_columns': check_admin_referer('gforms_entry_list', 'gforms_entry_list'); $columns = GFCommon::json_decode(stripslashes($_POST['grid_columns']), true); RGFormsModel::update_grid_column_meta($form_id, $columns); break; } if (rgpost('button_delete_permanently')) { if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { RGFormsModel::delete_leads_by_form($form_id, $filter); } } $sort_field = empty($_GET['sort']) ? 0 : $_GET['sort']; $sort_direction = empty($_GET['dir']) ? 'DESC' : $_GET['dir']; $sort_field_meta = RGFormsModel::get_field($form, $sort_field); $is_numeric = $sort_field_meta['type'] == 'number'; $page_size = gf_apply_filters('gform_entry_page_size', $form_id, 20, $form_id); $first_item_index = $page_index * $page_size; if (!empty($sort_field)) { $sorting = array('key' => $_GET['sort'], 'direction' => $sort_direction, 'is_numeric' => $is_numeric); } else { $sorting = array(); } $paging = array('offset' => $first_item_index, 'page_size' => $page_size); $total_count = 0; $leads = GFAPI::get_entries($form_id, $search_criteria, $sorting, $paging, $total_count); $summary = RGFormsModel::get_form_counts($form_id); $active_lead_count = $summary['total']; $unread_count = $summary['unread']; $starred_count = $summary['starred']; $spam_count = $summary['spam']; $trash_count = $summary['trash']; $columns = RGFormsModel::get_grid_columns($form_id, true); $search_qs = empty($search) ? '' : '&s=' . esc_attr(urlencode($search)); $sort_qs = empty($sort_field) ? '' : '&sort=' . esc_attr($sort_field); $dir_qs = empty($sort_direction) ? '' : '&dir=' . esc_attr($sort_direction); $star_qs = $star !== null ? '&star=' . esc_attr($star) : ''; $read_qs = $read !== null ? '&read=' . esc_attr($read) : ''; $filter_qs = '&filter=' . esc_attr($filter); $search_field_id_qs = !isset($_GET['field_id']) ? '' : '&field_id=' . esc_attr($search_field_id); $search_operator_urlencoded = urlencode($search_operator); $search_operator_qs = empty($search_operator_urlencoded) ? '' : '&operator=' . esc_attr($search_operator_urlencoded); $display_total = ceil($total_count / $page_size); $page_links = paginate_links(array('base' => admin_url('admin.php') . "?page=gf_entries&view=entries&id={$form_id}&%_%" . $search_qs . $sort_qs . $dir_qs . $star_qs . $read_qs . $filter_qs . $search_field_id_qs . $search_operator_qs, 'format' => 'paged=%#%', 'prev_text' => esc_html__('«', 'gravityforms'), 'next_text' => esc_html__('»', 'gravityforms'), 'total' => $display_total, 'current' => $page_index + 1, 'show_all' => false)); wp_print_styles(array('thickbox')); $field_filters = GFCommon::get_field_filter_settings($form); $init_field_id = empty($search_field_id) ? 0 : $search_field_id; $init_field_operator = empty($search_operator) ? 'contains' : $search_operator; $init_filter_vars = array('mode' => 'off', 'filters' => array(array('field' => $init_field_id, 'operator' => $init_field_operator, 'value' => $search))); $min = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG || isset($_GET['gform_debug']) ? '' : '.min'; ?> <script type="text/javascript"> var messageTimeout = false, gformFieldFilters = <?php echo json_encode($field_filters); ?> , gformInitFilter = <?php echo json_encode($init_filter_vars); ?> function ChangeColumns(columns) { jQuery("#action").val("change_columns"); jQuery("#grid_columns").val(jQuery.toJSON(columns)); tb_remove(); jQuery("#lead_form")[0].submit(); } function Search(sort_field_id, sort_direction, form_id, search, star, read, filter, field_id, operator) { var search_qs = search == "" ? "" : "&s=" + encodeURIComponent(search); var star_qs = star == "" ? "" : "&star=" + star; var read_qs = read == "" ? "" : "&read=" + read; var filter_qs = filter == "" ? "" : "&filter=" + filter; var field_id_qs = field_id == "" ? "" : "&field_id=" + field_id; var operator_qs = operator == "" ? "" : "&operator=" + operator; var location = "?page=gf_entries&view=entries&id=" + form_id + "&sort=" + sort_field_id + "&dir=" + sort_direction + search_qs + star_qs + read_qs + filter_qs + field_id_qs + operator_qs; document.location = location; } function ToggleStar(img, lead_id, filter) { var is_starred = img.src.indexOf("star1.png") >= 0; if (is_starred) img.src = img.src.replace("star1.png", "star0.png"); else img.src = img.src.replace("star0.png", "star1.png"); jQuery("#lead_row_" + lead_id).toggleClass("lead_starred"); //if viewing the starred entries, hide the row and adjust the paging counts if (filter == "star") { var title = jQuery("#lead_row_" + lead_id); title.css("display", 'none'); UpdatePagingCounts(1); } UpdateCount("star_count", is_starred ? -1 : 1); UpdateLeadProperty(lead_id, "is_starred", is_starred ? 0 : 1); } function ToggleRead(lead_id, filter) { var title = jQuery("#lead_row_" + lead_id); var marking_read = title.hasClass("lead_unread"); jQuery("#mark_read_" + lead_id).css("display", marking_read ? "none" : "inline"); jQuery("#mark_unread_" + lead_id).css("display", marking_read ? "inline" : "none"); jQuery("#is_unread_" + lead_id).css("display", marking_read ? "inline" : "none"); title.toggleClass("lead_unread"); //if viewing the unread entries, hide the row and adjust the paging counts if (filter == "unread") { title.css("display", "none"); UpdatePagingCounts(1); } UpdateCount("unread_count", marking_read ? -1 : 1); UpdateLeadProperty(lead_id, "is_read", marking_read ? 1 : 0); } function UpdateLeadProperty(lead_id, name, value) { var mysack = new sack("<?php echo admin_url('admin-ajax.php'); ?> "); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar("action", "rg_update_lead_property"); mysack.setVar("rg_update_lead_property", "<?php echo wp_create_nonce('rg_update_lead_property'); ?> "); mysack.setVar("lead_id", lead_id); mysack.setVar("name", name); mysack.setVar("value", value); mysack.onError = function () { alert(<?php echo json_encode(__('Ajax error while setting lead property', 'gravityforms')); ?> ) }; mysack.runAJAX(); return true; } function UpdateCount(element_id, change) { var element = jQuery("#" + element_id); var count = parseInt(element.html()) + change element.html(count + ""); } function UpdatePagingCounts(change) { //update paging header/footer Displaying # - # of #, use counts from header, no need to use footer since they are the same, just update footer paging with header info var paging_range_max_header = jQuery("#paging_range_max_header"); var paging_range_max_footer = jQuery("#paging_range_max_footer"); var range_change_max = parseInt(paging_range_max_header.html()) - change; var paging_total_header = jQuery("#paging_total_header"); var paging_total_footer = jQuery("#paging_total_footer"); var total_change = parseInt(paging_total_header.html()) - change; var paging_range_min_header = jQuery("#paging_range_min_header"); var paging_range_min_footer = jQuery("#paging_range_min_footer"); //if min and max are the same, this is the last entry item on the page, clear out the displaying # - # of # text if (parseInt(paging_range_min_header.html()) == parseInt(paging_range_max_header.html())) { var paging_header = jQuery("#paging_header"); paging_header.html(""); var paging_footer = jQuery("#paging_footer"); paging_footer.html(""); } else { paging_range_max_header.html(range_change_max + ""); paging_range_max_footer.html(range_change_max + ""); paging_total_header.html(total_change + ""); paging_total_footer.html(total_change + ""); } gformVars.countAllEntries = gformVars.countAllEntries - change; setSelectAllText(); } function DeleteLead(lead_id) { jQuery("#action").val("delete"); jQuery("#action_argument").val(lead_id); jQuery("#lead_form")[0].submit(); return true; } function handleBulkApply(actionElement) { var action = jQuery("#" + actionElement).val(); var defaultModalOptions = ''; var leadIds = getLeadIds(); if (leadIds.length == 0) { alert(<?php echo json_encode(__('Please select at least one entry.', 'gravityforms')); ?> ); return false; } switch (action) { case 'resend_notifications': resetResendNotificationsUI(); tb_show(<?php echo json_encode(esc_html__('Resend Notifications', 'gravityforms')); ?> , '#TB_inline?width=350&inlineId=notifications_modal_container', ''); return false; break; case 'print': resetPrintUI(); tb_show(<?php echo json_encode(esc_html__('Print Entries', 'gravityforms')); ?> , '#TB_inline?width=350&height=250&inlineId=print_modal_container', ''); return false; break; default: jQuery('#action').val('bulk'); } } function getLeadIds() { var all = jQuery("#all_entries").val(); //compare string, the boolean isn't correct, even when casting to a boolean the 0 is set to true if (all == "1") return 0; var leads = jQuery(".check-column input[name='lead[]']:checked"); var leadIds = new Array(); jQuery(leads).each(function (i) { leadIds[i] = jQuery(leads[i]).val(); }); return leadIds; } function BulkResendNotifications() { var selectedNotifications = new Array(); jQuery(".gform_notifications:checked").each(function () { selectedNotifications.push(jQuery(this).val()); }); var leadIds = getLeadIds(); var sendTo = jQuery('#notification_override_email').val(); if (selectedNotifications.length <= 0) { displayMessage(<?php echo json_encode(esc_html__('You must select at least one type of notification to resend.', 'gravityforms')); ?> , "error", "#notifications_container"); return; } jQuery('#please_wait_container').fadeIn(); jQuery.post(ajaxurl, { action : "gf_resend_notifications", gf_resend_notifications: '<?php echo wp_create_nonce('gf_resend_notifications'); ?> ', notifications : jQuery.toJSON(selectedNotifications), sendTo : sendTo, leadIds : leadIds, filter : <?php echo json_encode(rgget('filter')); ?> , search : <?php echo json_encode(rgget('s')); ?> , operator : <?php echo json_encode(rgget('operator')); ?> , fieldId : <?php echo json_encode(rgget('field_id')); ?> , formId : <?php echo json_encode($form['id']); ?> }, function (response) { jQuery('#please_wait_container').hide(); if (response) { displayMessage(response, 'error', '#notifications_container'); } else { var message = <?php echo json_encode(__('Notifications for %s were resent successfully.', 'gravityforms')); ?> ; var c = leadIds == 0 ? gformVars.countAllEntries : leadIds.length; displayMessage(message.replace('%s', c + ' ' + getPlural(c, <?php echo json_encode(__('entry', 'gravityforms')); ?> , <?php echo json_encode(__('entries', 'gravityforms')); ?> )), "updated", "#lead_form"); closeModal(true); } } ); } function resetResendNotificationsUI() { jQuery(".gform_notifications").attr('checked', false); jQuery('#notifications_container .message, #notifications_override_settings').hide(); } function BulkPrint() { var leadIds = getLeadIds(); if (leadIds != 0) leadIds = leadIds.join(','); var leadsQS = '&lid=' + leadIds; var notesQS = jQuery('#gform_print_notes').is(':checked') ? '¬es=1' : ''; var pageBreakQS = jQuery('#gform_print_page_break').is(':checked') ? '&page_break=1' : ''; var filterQS = '&filter=' + <?php echo json_encode(rgget('filter')); ?> ; var searchQS = '&s=' + <?php echo json_encode(rgget('s')); ?> ; var searchFieldIdQS = '&field_id=' + <?php echo json_encode(rgget('field_id')); ?> ; var searchOperatorQS = '&operator=' + <?php echo json_encode(rgget('operator')); ?> ; var url = '<?php echo trailingslashit(site_url()); ?> ?gf_page=print-entry&fid=<?php echo absint($form['id']); ?> ' + leadsQS + notesQS + pageBreakQS + filterQS + searchQS + searchFieldIdQS + searchOperatorQS; window.open(url, 'printwindow'); closeModal(true); hideMessage('#lead_form', false); } function resetPrintUI() { jQuery('#print_options input[type="checkbox"]').attr('checked', false); } function displayMessage(message, messageClass, container) { hideMessage(container, true); var messageBox = jQuery('<div class="message ' + messageClass + '" style="display:none;"><p>' + message + '</p></div>'); jQuery(messageBox).prependTo(container).slideDown(); if (messageClass == 'updated') messageTimeout = setTimeout(function () { hideMessage(container, false); }, 10000); } function hideMessage(container, messageQueued) { if (messageTimeout) clearTimeout(messageTimeout); var messageBox = jQuery(container).find('.message'); if (messageQueued) jQuery(messageBox).remove(); else jQuery(messageBox).slideUp(function () { jQuery(this).remove(); }); } function closeModal(isSuccess) { if (isSuccess) jQuery('.check-column input[type="checkbox"]').attr('checked', false); tb_remove(); } function getPlural(count, singular, plural) { return count > 1 ? plural : singular; } function toggleNotificationOverride(isInit) { if (isInit) jQuery('#notification_override_email').val(''); if (jQuery(".gform_notifications:checked").length > 0) { jQuery('#notifications_override_settings').slideDown(); } else { jQuery('#notifications_override_settings').slideUp(function () { jQuery('#notification_override_email').val(''); }); } } // Select All var gformStrings = { "allEntriesOnPageAreSelected": <?php echo json_encode(sprintf(esc_html__('All %s{0}%s entries on this page are selected.', 'gravityforms'), '<strong>', '</strong>')); ?> , "selectAll" : <?php echo json_encode(sprintf(esc_html__('Select all %s{0}%s entries.', 'gravityforms'), '<strong>', '</strong>')); ?> , "allEntriesSelected" : <?php echo json_encode(sprintf(esc_html__('All %s{0}%s entries have been selected.', 'gravityforms'), '<strong>', '</strong>')); ?> , "clearSelection" : <?php echo json_encode(__('Clear selection', 'gravityforms')); ?> } var gformVars = { "countAllEntries": <?php echo intval($total_count); ?> , "perPage" : <?php echo intval($page_size); ?> } function setSelectAllText() { var tr = getSelectAllText(); jQuery("#gform-select-all-message td").html(tr); } function getSelectAllText() { var count; count = jQuery("#gf_entry_list tr:visible:not('#gform-select-all-message')").length; return gformStrings.allEntriesOnPageAreSelected.format(count) + " <a href='javascript:void(0)' onclick='selectAllEntriesOnAllPages();'>" + gformStrings.selectAll.format(gformVars.countAllEntries) + "</a>"; } function getSelectAllTr() { var t = getSelectAllText(); var colspan = jQuery("#gf_entry_list").find("tr:first td").length + 1; return "<tr id='gform-select-all-message' style='display:none;background-color:lightyellow;text-align:center;'><td colspan='{0}'>{1}</td></tr>".format(colspan, t); } function toggleSelectAll(visible) { if (gformVars.countAllEntries <= gformVars.perPage) { jQuery('#gform-select-all-message').hide(); return; } if (visible) setSelectAllText(); jQuery('#gform-select-all-message').toggle(visible); } function clearSelectAllEntries() { jQuery(".check-column input[type=checkbox]").prop('checked', false); clearSelectAllMessage(); } function clearSelectAllMessage() { jQuery("#all_entries").val("0"); jQuery("#gform-select-all-message").hide(); jQuery("#gform-select-all-message td").html(''); } function selectAllEntriesOnAllPages() { var trHtmlClearSelection; trHtmlClearSelection = gformStrings.allEntriesSelected.format(gformVars.countAllEntries) + " <a href='javascript:void(0);' onclick='clearSelectAllEntries();'>" + gformStrings.clearSelection + "</a>"; jQuery("#all_entries").val("1"); jQuery("#gform-select-all-message td").html(trHtmlClearSelection); } function initSelectAllEntries() { if (gformVars.countAllEntries > gformVars.perPage) { var tr = getSelectAllTr(); jQuery("#gf_entry_list").prepend(tr); jQuery(".headercb").click(function () { toggleSelectAll(jQuery(this).prop('checked')); }); jQuery("#gf_entry_list .check-column input[type=checkbox]").click(function () { clearSelectAllMessage(); }) } } String.prototype.format = function () { var args = arguments; return this.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); }; // end Select All jQuery(document).ready(function () { var action = <?php echo json_encode($action); ?> ; var message = <?php echo json_encode($update_message); ?> ; if (action && message) displayMessage(message, 'updated', '#lead_form'); var list = jQuery("#gf_entry_list").wpList({ alt: <?php echo json_encode(esc_html__('Entry List', 'gravityforms')); ?> }); list.bind('wpListDelEnd', function (e, s, list) { var currentStatus = <?php echo json_encode($filter == 'trash' || $filter == 'spam' ? $filter : 'active'); ?> ; var filter = <?php echo json_encode($filter); ?> ; var movingTo = "active"; if (s.data.status == "trash") movingTo = "trash"; else if (s.data.status == "spam") movingTo = "spam"; else if (s.data.status == "delete") movingTo = "delete"; var id = s.data.entry; var title = jQuery("#lead_row_" + id); var isUnread = title.hasClass("lead_unread"); var isStarred = title.hasClass("lead_starred"); if (movingTo != "delete") { //Updating All count var allCount = currentStatus == "active" ? -1 : 1; UpdateCount("all_count", allCount); //Updating Unread count if (isUnread) { var unreadCount = currentStatus == "active" ? -1 : 1; UpdateCount("unread_count", unreadCount); } //Updating Starred count if (isStarred) { var starCount = currentStatus == "active" ? -1 : 1; UpdateCount("star_count", starCount); } } //Updating Spam count if (currentStatus == "spam" || movingTo == "spam") { var spamCount = movingTo == "spam" ? 1 : -1; UpdateCount("spam_count", spamCount); //adjust paging counts if (filter == "spam") { UpdatePagingCounts(1); } else { UpdatePagingCounts(spamCount); } } //Updating trash count if (currentStatus == "trash" || movingTo == "trash") { var trashCount = movingTo == "trash" ? 1 : -1; UpdateCount("trash_count", trashCount); //adjust paging counts if (filter == "trash") { UpdatePagingCounts(1); } else { UpdatePagingCounts(trashCount); } } }); initSelectAllEntries(); jQuery('#entry_filters').gfFilterUI(gformFieldFilters, gformInitFilter, false); jQuery("#entry_filters").on("keypress", ".gform-filter-value", (function (event) { if (event.keyCode == 13) { Search(<?php echo json_encode($sort_field); ?> , <?php echo json_encode($sort_direction); ?> , <?php echo absint($form_id); ?> , jQuery('.gform-filter-value').val(), <?php echo json_encode($star); ?> , <?php echo json_encode($read); ?> , <?php echo json_encode($filter); ?> , jQuery('.gform-filter-field').val(), jQuery('.gform-filter-operator').val()); event.preventDefault(); } })); }); </script> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin<?php echo $min; ?> .css" type="text/css" /> <style> /*#TB_window { height: 400px !important; } #TB_ajaxContent[style] { height: 370px !important; }*/ .lead_unread a, .lead_unread td { font-weight: bold; } .lead_spam_trash a, .lead_spam_trash td { font-weight: normal; } .row-actions a { font-weight: normal; } .entry_nowrap { overflow: hidden; white-space: nowrap; } .gform-filter-operator { width: 100px } </style> <div class="wrap <?php echo GFCommon::get_browser_class(); ?> "> <h2 class="gf_admin_page_title"> <span><?php esc_html_e('Entries', 'gravityforms'); ?> </span><span class="gf_admin_page_subtitle"><span class="gf_admin_page_formid">ID: <?php echo absint($form['id']); ?> </span><span class="gf_admin_page_formname"><?php esc_html_e('Form Name', 'gravityforms'); ?> : <?php echo esc_html($form['title']); ?> </span></span> </h2> <?php RGForms::top_toolbar(); ?> <form id="lead_form" method="post"> <?php wp_nonce_field('gforms_entry_list', 'gforms_entry_list'); ?> <input type="hidden" value="" name="grid_columns" id="grid_columns" /> <input type="hidden" value="" name="action" id="action" /> <input type="hidden" value="" name="action_argument" id="action_argument" /> <input type="hidden" value="" name="all_entries" id="all_entries" /> <ul class="subsubsub"> <li> <a class="<?php echo empty($filter) ? 'current' : ''; ?> " href="?page=gf_entries&view=entries&id=<?php echo absint($form_id); ?> "><?php _ex('All', 'Entry List', 'gravityforms'); ?> <span class="count">(<span id="all_count"><?php echo $active_lead_count; ?> </span>)</span></a> | </li> <li> <a class="<?php echo $read !== null ? 'current' : ''; ?> " href="?page=gf_entries&view=entries&id=<?php echo absint($form_id); ?> &filter=unread"><?php _ex('Unread', 'Entry List', 'gravityforms'); ?> <span class="count">(<span id="unread_count"><?php echo $unread_count; ?> </span>)</span></a> | </li> <li> <a class="<?php echo $star !== null ? 'current' : ''; ?> " href="?page=gf_entries&view=entries&id=<?php echo absint($form_id); ?> &filter=star"><?php _ex('Starred', 'Entry List', 'gravityforms'); ?> <span class="count">(<span id="star_count"><?php echo $starred_count; ?> </span>)</span></a> | </li> <?php if (GFCommon::spam_enabled($form_id)) { ?> <li> <a class="<?php echo $filter == 'spam' ? 'current' : ''; ?> " href="?page=gf_entries&view=entries&id=<?php echo absint($form_id); ?> &filter=spam"><?php esc_html_e('Spam', 'gravityforms'); ?> <span class="count">(<span id="spam_count"><?php echo esc_html($spam_count); ?> </span>)</span></a> | </li> <?php } ?> <li> <a class="<?php echo $filter == 'trash' ? 'current' : ''; ?> " href="?page=gf_entries&view=entries&id=<?php echo absint($form_id); ?> &filter=trash"><?php esc_html_e('Trash', 'gravityforms'); ?> <span class="count">(<span id="trash_count"><?php echo esc_html($trash_count); ?> </span>)</span></a></li> </ul> <div style="margin-top:12px;float:right;"> <a style="float:right;" class="button" id="lead_search_button" href="javascript:Search('<?php echo esc_js($sort_field); ?> ', '<?php echo esc_js($sort_direction); ?> ', <?php echo absint($form_id); ?> , jQuery('.gform-filter-value').val(), '<?php echo esc_js($star); ?> ', '<?php echo esc_js($read); ?> ', '<?php echo esc_js($filter); ?> ', jQuery('.gform-filter-field').val(), jQuery('.gform-filter-operator').val());"><?php esc_html_e('Search', 'gravityforms'); ?> </a> <div id="entry_filters" style="float:right"></div> </div> <div class="tablenav"> <div class="alignleft actions" style="padding:8px 0 7px 0;"> <label class="hidden" for="bulk_action"> <?php esc_html_e('Bulk action', 'gravityforms'); ?> </label> <select name="bulk_action" id="bulk_action"> <option value=''><?php esc_html_e(' Bulk action ', 'gravityforms'); ?> </option> <?php switch ($filter) { case 'trash': ?> <option value='restore'><?php esc_html_e('Restore', 'gravityforms'); ?> </option> <?php if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <option value='delete'><?php esc_html_e('Delete Permanently', 'gravityforms'); ?> </option> <?php } break; case 'spam': ?> <option value='unspam'><?php esc_html_e('Not Spam', 'gravityforms'); ?> </option> <?php if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <option value='delete'><?php esc_html_e('Delete Permanently', 'gravityforms'); ?> </option> <?php } break; default: ?> <option value='mark_read'><?php esc_html_e('Mark as Read', 'gravityforms'); ?> </option> <option value='mark_unread'><?php esc_html_e('Mark as Unread', 'gravityforms'); ?> </option> <option value='add_star'><?php esc_html_e('Add Star', 'gravityforms'); ?> </option> <option value='remove_star'><?php esc_html_e('Remove Star', 'gravityforms'); ?> </option> <option value='resend_notifications'><?php esc_html_e('Resend Notifications', 'gravityforms'); ?> </option> <option value='print'><?php esc_html_e('Print', 'gravityforms'); ?> </option> <?php if (GFCommon::spam_enabled($form_id)) { ?> <option value='spam'><?php esc_html_e('Spam', 'gravityforms'); ?> </option> <?php } if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <option value='trash'><?php esc_html_e('Trash', 'gravityforms'); ?> </option> <?php } } ?> </select> <?php $apply_button = '<input type="submit" class="button" value="' . esc_attr__('Apply', 'gravityforms') . '" onclick="return handleBulkApply(\'bulk_action\');" />'; /** * Allows for the modification of the Entry apply button HTML (When modifying entries) * * @param string $apply_button The Entry apply button HTML */ echo apply_filters('gform_entry_apply_button', $apply_button); if (in_array($filter, array('trash', 'spam'))) { $message = $filter == 'trash' ? esc_html__("WARNING! This operation cannot be undone. Empty trash? 'Ok' to empty trash. 'Cancel' to abort.", 'gravityforms') : esc_html__("WARNING! This operation cannot be undone. Permanently delete all spam? 'Ok' to delete. 'Cancel' to abort.", 'gravityforms'); $button_label = $filter == 'trash' ? __('Empty Trash', 'gravityforms') : __('Delete All Spam', 'gravityforms'); ?> <input type="submit" class="button" name="button_delete_permanently" value="<?php echo esc_attr($button_label); ?> " onclick="return confirm('<?php echo esc_js($message); ?> ');" /> <?php } ?> <div id="notifications_modal_container" style="display:none;"> <div id="notifications_container"> <div id="post_tag" class="tagsdiv"> <div id="resend_notifications_options"> <?php $notifications = GFCommon::get_notifications('resend_notifications', $form); if (!is_array($notifications) || count($form['notifications']) <= 0) { ?> <p class="description"><?php esc_html_e('You cannot resend notifications for these entries because this form does not currently have any notifications configured.', 'gravityforms'); ?> </p> <a href="<?php echo esc_url(admin_url("admin.php?page=gf_edit_forms&view=settings&subview=notification&id={$form['id']}")); ?> " class="button"><?php esc_html_e('Configure Notifications', 'gravityforms'); ?> </a> <?php } else { ?> <p class="description"><?php esc_html_e('Specify which notifications you would like to resend for the selected entries.', 'gravityforms'); ?> </p> <?php foreach ($notifications as $notification) { ?> <input type="checkbox" class="gform_notifications" value="<?php echo esc_attr($notification['id']); ?> " id="notification_<?php echo esc_attr($notification['id']); ?> " onclick="toggleNotificationOverride();" /> <label for="notification_<?php echo esc_attr($notification['id']); ?> "><?php echo esc_html($notification['name']); ?> </label> <br /><br /> <?php } ?> <div id="notifications_override_settings" style="display:none;"> <p class="description" style="padding-top:0; margin-top:0;"> <?php esc_html_e('You may override the default notification settings by entering a comma delimited list of emails to which the selected notifications should be sent.', 'gravityforms'); ?> </p> <label for="notification_override_email"><?php esc_html_e('Send To', 'gravityforms'); ?> <?php gform_tooltip('notification_override_email'); ?> </label><br /> <input type="text" name="notification_override_email" id="notification_override_email" style="width:99%;" /><br /><br /> </div> <input type="button" name="notification_resend" id="notification_resend" value="<?php esc_attr_e('Resend Notifications', 'gravityforms'); ?> " class="button" style="" onclick="BulkResendNotifications();" /> <span id="please_wait_container" style="display:none; margin-left: 5px;"> <i class='gficon-gravityforms-spinner-icon gficon-spin'></i> <?php esc_html_e('Resending...', 'gravityforms'); ?> </span> <?php } ?> </div> <div id="resend_notifications_close" style="display:none;margin:10px 0 0;"> <input type="button" name="resend_notifications_close_button" value="<?php esc_attr_e('Close Window', 'gravityforms'); ?> " class="button" style="" onclick="closeModal(true);" /> </div> </div> </div> </div> <!-- / Resend Notifications --> <div id="print_modal_container" style="display:none;"> <div id="print_container"> <div class="tagsdiv"> <div id="print_options"> <p class="description"><?php esc_html_e('Print all of the selected entries at once.', 'gravityforms'); ?> </p> <?php if (GFCommon::current_user_can_any('gravityforms_view_entry_notes')) { ?> <input type="checkbox" name="gform_print_notes" value="print_notes" checked="checked" id="gform_print_notes" /> <label for="gform_print_notes"><?php esc_html_e('Include notes', 'gravityforms'); ?> </label> <br /><br /> <?php } ?> <input type="checkbox" name="gform_print_page_break" value="print_notes" checked="checked" id="gform_print_page_break" /> <label for="gform_print_page_break"><?php esc_html_e('Add page break between entries', 'gravityforms'); ?> </label> <br /><br /> <input type="button" value="<?php esc_attr_e('Print', 'gravityforms'); ?> " class="button" onclick="BulkPrint();" /> </div> </div> </div> </div> <!-- / Print --> </div> <?php echo self::display_paging_links('header', $page_links, $first_item_index, $page_size, $total_count); ?> <div class="clear"></div> </div> <table class="widefat fixed" cellspacing="0"> <thead> <tr> <th scope="col" id="cb" class="manage-column column-cb check-column"> <input type="checkbox" class="headercb" /></th> <?php if (!in_array($filter, array('spam', 'trash'))) { ?> <th scope="col" id="cb" class="manage-column column-cb check-column"> </th> <?php } foreach ($columns as $field_id => $field_info) { $dir = $field_id == 0 ? 'DESC' : 'ASC'; //default every field so ascending sorting except date_created (id=0) if ($field_id == $sort_field) { //reverting direction if clicking on the currently sorted field $dir = $sort_direction == 'ASC' ? 'DESC' : 'ASC'; } ?> <th scope="col" class="manage-column entry_nowrap" onclick="Search('<?php echo esc_js($field_id); ?> ', '<?php echo esc_js($dir); ?> ', <?php echo absint($form_id); ?> , '<?php echo esc_js($search); ?> ', '<?php echo esc_js($star); ?> ', '<?php echo esc_js($read); ?> ', '<?php echo esc_js($filter); ?> ', '<?php echo esc_js($search_field_id); ?> ', '<?php echo esc_js($search_operator); ?> ');" style="cursor:pointer;"><?php echo esc_html($field_info['label']); ?> </th> <?php } ?> <th scope="col" align="right" width="50"> <a title="<?php esc_attr_e('click to select columns to display', 'gravityforms'); ?> " href="<?php echo trailingslashit(site_url(null, 'admin')); ?> ?gf_page=select_columns&id=<?php echo absint($form_id); ?> &TB_iframe=true&height=365&width=600" class="thickbox entries_edit_icon"><i class="fa fa-cog"></i></a> </th> </tr> </thead> <tfoot> <tr> <th scope="col" id="cb" class="manage-column column-cb check-column" style=""><input type="checkbox" /></th> <?php if (!in_array($filter, array('spam', 'trash'))) { ?> <th scope="col" id="cb" class="manage-column column-cb check-column"> </th> <?php } foreach ($columns as $field_id => $field_info) { $dir = $field_id == 0 ? 'DESC' : 'ASC'; //default every field so ascending sorting except date_created (id=0) if ($field_id == $sort_field) { //reverting direction if clicking on the currently sorted field $dir = $sort_direction == 'ASC' ? 'DESC' : 'ASC'; } ?> <th scope="col" class="manage-column entry_nowrap" onclick="Search('<?php echo esc_js($field_id); ?> ', '<?php echo esc_js($dir); ?> ', <?php echo absint($form_id); ?> , '<?php echo esc_js($search); ?> ', '<?php echo esc_js($star); ?> ', '<?php echo esc_js($read); ?> ', '<?php echo esc_js($filter); ?> ', '<?php echo esc_js($search_field_id); ?> ', '<?php echo esc_js($search_operator); ?> ');" style="cursor:pointer;"><?php echo esc_html($field_info['label']); ?> </th> <?php } ?> <th scope="col" style="width:15px;"> <a title="<?php esc_attr_e('click to select columns to display', 'gravityforms'); ?> " href="<?php echo trailingslashit(site_url()); ?> ?gf_page=select_columns&id=<?php echo absint($form_id); ?> &TB_iframe=true&height=365&width=600" class="thickbox entries_edit_icon"><i class=fa-cog"></i></a> </th> </tr> </tfoot> <tbody data-wp-lists="list:gf_entry" class="user-list" id="gf_entry_list"> <?php if (sizeof($leads) > 0) { $field_ids = array_keys($columns); $gf_entry_locking = new GFEntryLocking(); $alternate_row = false; foreach ($leads as $position => $lead) { $position = $page_size * $page_index + $position; ?> <tr id="lead_row_<?php echo esc_attr($lead['id']); ?> " class='author-self status-inherit <?php echo $lead['is_read'] ? '' : 'lead_unread'; ?> <?php echo $lead['is_starred'] ? 'lead_starred' : ''; ?> <?php echo in_array($filter, array('trash', 'spam')) ? 'lead_spam_trash' : ''; ?> <?php $gf_entry_locking->list_row_class($lead['id']); ?> <?php echo ($alternate_row = !$alternate_row) ? 'alternate' : ''; ?> ' valign="top" data-id="<?php echo esc_attr($lead['id']); ?> "> <th scope="row" class="check-column"> <input type="checkbox" name="lead[]" value="<?php echo esc_attr($lead['id']); ?> " /> <?php $gf_entry_locking->lock_indicator(); ?> </th> <?php if (!in_array($filter, array('spam', 'trash'))) { ?> <td> <img id="star_image_<?php echo esc_attr($lead['id']); ?> " src="<?php echo GFCommon::get_base_url(); ?> /images/star<?php echo intval($lead['is_starred']); ?> .png" onclick="ToggleStar(this, '<?php echo esc_js($lead['id']); ?> ','<?php echo esc_js($filter); ?> ');" /> </td> <?php } $is_first_column = true; $nowrap_class = 'entry_nowrap'; foreach ($field_ids as $field_id) { $field = RGFormsModel::get_field($form, $field_id); $value = rgar($lead, $field_id); if (!empty($field) && $field->type == 'post_category') { $value = GFCommon::prepare_post_category_value($value, $field, 'entry_list'); } //filtering lead value $value = apply_filters('gform_get_field_value', $value, $lead, $field); $input_type = !empty($columns[$field_id]['inputType']) ? $columns[$field_id]['inputType'] : $columns[$field_id]['type']; switch ($input_type) { case 'source_url': $value = "<a href='" . esc_attr($lead['source_url']) . "' target='_blank' alt='" . esc_attr($lead['source_url']) . "' title='" . esc_attr($lead['source_url']) . "'>.../" . esc_attr(GFCommon::truncate_url($lead['source_url'])) . '</a>'; break; case 'date_created': case 'payment_date': $value = GFCommon::format_date($value, false); break; case 'payment_amount': $value = GFCommon::to_money($value, $lead['currency']); break; case 'created_by': if (!empty($value)) { $userdata = get_userdata($value); if (!empty($userdata)) { $value = $userdata->user_login; } } break; default: if ($field !== null) { $value = $field->get_value_entry_list($value, $lead, $field_id, $columns, $form); } else { $value = esc_html($value); } } $value = apply_filters('gform_entries_field_value', $value, $form_id, $field_id, $lead); /* ^ maybe move to function */ $query_string = "gf_entries&view=entry&id={$form_id}&lid={$lead['id']}{$search_qs}{$sort_qs}{$dir_qs}{$filter_qs}&paged=" . ($page_index + 1); if ($is_first_column) { ?> <td class="column-title"> <a href="admin.php?page=gf_entries&view=entry&id=<?php echo absint($form_id); ?> &lid=<?php echo esc_attr($lead['id'] . $search_qs . $sort_qs . $dir_qs . $filter_qs); ?> &paged=<?php echo $page_index + 1; ?> &pos=<?php echo $position; ?> &field_id=<?php echo esc_attr($search_field_id); ?> &operator=<?php echo esc_attr($search_operator); ?> "><?php echo $value; ?> </a> <?php $gf_entry_locking->lock_info($lead['id']); ?> <div class="row-actions"> <?php switch ($filter) { case 'trash': ?> <span class="edit"> <a title="<?php esc_attr_e('View this entry', 'gravityforms'); ?> " href="admin.php?page=gf_entries&view=entry&id=<?php echo absint($form_id); ?> &lid=<?php echo esc_attr($lead['id'] . $search_qs . $sort_qs . $dir_qs . $filter_qs); ?> &paged=<?php echo $page_index + 1; ?> &pos=<?php echo $position; ?> &field_id=<?php echo esc_attr($search_field_id); ?> &operator=<?php echo esc_attr($search_operator); ?> "><?php esc_html_e('View', 'gravityforms'); ?> </a> | </span> <span class="edit"> <a data-wp-lists='delete:gf_entry_list:lead_row_<?php echo esc_attr($lead['id']); ?> ::status=active&entry=<?php echo esc_attr($lead['id']); ?> ' title="<?php esc_attr_e('Restore this entry', 'gravityforms'); ?> " href="<?php echo wp_nonce_url('?page=gf_entries', 'gf_delete_entry'); ?> "><?php esc_html_e('Restore', 'gravityforms'); ?> </a> <?php echo GFCommon::current_user_can_any('gravityforms_delete_entries') ? '|' : ''; ?> </span> <?php if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <span class="delete"> <?php $delete_link = '<a data-wp-lists="delete:gf_entry_list:lead_row_' . esc_attr($lead['id']) . '::status=delete&entry=' . esc_attr($lead['id']) . '" title="' . esc_attr__('Delete this entry permanently', 'gravityforms') . '" href="' . wp_nonce_url('?page=gf_entries', 'gf_delete_entry') . '">' . esc_html__('Delete Permanently', 'gravityforms') . '</a>'; /** * Allows for modification of a Form entry "delete" link * * @param string $delete_link The Entry Delete Link (Formatted in HTML) */ echo apply_filters('gform_delete_entry_link', $delete_link); ?> </span> <?php } break; case 'spam': ?> <span class="edit"> <a title="<?php esc_attr_e('View this entry', 'gravityforms'); ?> " href="admin.php?page=gf_entries&view=entry&id=<?php echo absint($form_id); ?> &lid=<?php echo esc_attr($lead['id'] . $search_qs . $sort_qs . $dir_qs . $filter_qs); ?> &paged=<?php echo $page_index + 1; ?> &pos=<?php echo $position; ?> "><?php esc_html_e('View', 'gravityforms'); ?> </a> | </span> <span class="unspam"> <a data-wp-lists='delete:gf_entry_list:lead_row_<?php echo esc_attr($lead['id']); ?> ::status=unspam&entry=<?php echo esc_attr($lead['id']); ?> ' title="<?php esc_attr_e('Mark this entry as not spam', 'gravityforms'); ?> " href="<?php echo wp_nonce_url('?page=gf_entries', 'gf_delete_entry'); ?> "><?php esc_html_e('Not Spam', 'gravityforms'); ?> </a> <?php echo GFCommon::current_user_can_any('gravityforms_delete_entries') ? '|' : ''; ?> </span> <?php if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <span class="delete"> <?php $delete_link = '<a data-wp-lists="delete:gf_entry_list:lead_row_' . esc_attr($lead['id']) . '::status=delete&entry=' . esc_attr($lead['id']) . '" title="' . esc_attr__('Delete this entry permanently', 'gravityforms') . '" href="' . wp_nonce_url('?page=gf_entries', 'gf_delete_entry') . '">' . esc_html__('Delete Permanently', 'gravityforms') . '</a>'; /** * Allows for modification of a Form entry "delete" link * * @param string $delete_link The Entry Delete Link (Formatted in HTML) */ echo apply_filters('gform_delete_entry_link', $delete_link); ?> </span> <?php } break; default: ?> <span class="edit"> <a title="<?php esc_attr_e('View this entry', 'gravityforms'); ?> " href="admin.php?page=gf_entries&view=entry&id=<?php echo absint($form_id); ?> &lid=<?php echo esc_attr($lead['id'] . $search_qs . $sort_qs . $dir_qs . $filter_qs); ?> &paged=<?php echo $page_index + 1; ?> &pos=<?php echo $position; ?> &field_id=<?php echo esc_attr($search_field_id); ?> &operator=<?php echo esc_attr($search_operator); ?> "><?php esc_html_e('View', 'gravityforms'); ?> </a> | </span> <span class="edit"> <a id="mark_read_<?php echo esc_attr($lead['id']); ?> " title="Mark this entry as read" href="javascript:ToggleRead('<?php echo esc_js($lead['id']); ?> ', '<?php echo esc_js($filter); ?> ');" style="display:<?php echo $lead['is_read'] ? 'none' : 'inline'; ?> ;"><?php esc_html_e('Mark read', 'gravityforms'); ?> </a><a id="mark_unread_<?php echo absint($lead['id']); ?> " title="<?php esc_attr_e('Mark this entry as unread', 'gravityforms'); ?> " href="javascript:ToggleRead('<?php echo esc_js($lead['id']); ?> ', '<?php echo esc_js($filter); ?> ');" style="display:<?php echo $lead['is_read'] ? 'inline' : 'none'; ?> ;"><?php esc_html_e('Mark unread', 'gravityforms'); ?> </a> <?php echo GFCommon::current_user_can_any('gravityforms_delete_entries') || GFCommon::akismet_enabled($form_id) ? '|' : ''; ?> </span> <?php if (GFCommon::spam_enabled($form_id)) { ?> <span class="spam"> <a data-wp-lists='delete:gf_entry_list:lead_row_<?php echo esc_attr($lead['id']); ?> ::status=spam&entry=<?php echo esc_attr($lead['id']); ?> ' title="<?php esc_attr_e('Mark this entry as spam', 'gravityforms'); ?> " href="<?php echo wp_nonce_url('?page=gf_entries', 'gf_delete_entry'); ?> "><?php esc_html_e('Spam', 'gravityforms'); ?> </a> <?php echo GFCommon::current_user_can_any('gravityforms_delete_entries') ? '|' : ''; ?> </span> <?php } if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <span class="trash"> <a data-wp-lists='delete:gf_entry_list:lead_row_<?php echo esc_attr($lead['id']); ?> ::status=trash&entry=<?php echo esc_attr($lead['id']); ?> ' title="<?php esc_attr_e('Move this entry to the trash', 'gravityforms'); ?> " href="<?php echo wp_nonce_url('?page=gf_entries', 'gf_delete_entry'); ?> "><?php esc_html_e('Trash', 'gravityforms'); ?> </a> </span> <?php } break; } do_action('gform_entries_first_column_actions', $form_id, $field_id, $value, $lead, $query_string); ?> </div> <?php do_action('gform_entries_first_column', $form_id, $field_id, $value, $lead, $query_string); ?> </td> <?php } else { ?> <td class="<?php echo $nowrap_class; ?> "> <?php echo apply_filters('gform_entries_column_filter', $value, $form_id, $field_id, $lead, $query_string); ?> <?php do_action('gform_entries_column', $form_id, $field_id, $value, $lead, $query_string); ?> </td> <?php } $is_first_column = false; } ?> <td> </td> </tr> <?php } } else { $column_count = sizeof($columns) + 3; switch ($filter) { case 'unread': $message = isset($_GET['field_id']) ? esc_html__('This form does not have any unread entries matching the search criteria.', 'gravityforms') : esc_html__('This form does not have any unread entries.', 'gravityforms'); break; case 'star': $message = isset($_GET['field_id']) ? esc_html__('This form does not have any starred entries matching the search criteria.', 'gravityforms') : esc_html__('This form does not have any starred entries.', 'gravityforms'); break; case 'spam': $message = esc_html__('This form does not have any spam.', 'gravityforms'); $column_count = sizeof($columns) + 2; break; case 'trash': $message = isset($_GET['field_id']) ? esc_html__('This form does not have any entries in the trash matching the search criteria.', 'gravityforms') : esc_html__('This form does not have any entries in the trash.', 'gravityforms'); $column_count = sizeof($columns) + 2; break; default: $message = isset($_GET['field_id']) ? esc_html__('This form does not have any entries matching the search criteria.', 'gravityforms') : esc_html__('This form does not have any entries yet.', 'gravityforms'); } ?> <tr> <td colspan="<?php echo esc_attr($column_count); ?> " style="padding:20px;"><?php echo esc_html($message); ?> </td> </tr> <?php } ?> </tbody> </table> <div class="clear"></div> <div class="tablenav"> <div class="alignleft actions" style="padding:8px 0 7px 0;"> <label class="hidden" for="bulk_action2"> <?php esc_html_e('Bulk action', 'gravityforms'); ?> </label> <select name="bulk_action2" id="bulk_action2"> <option value=''><?php esc_html_e(' Bulk action ', 'gravityforms'); ?> </option> <?php switch ($filter) { case 'trash': ?> <option value='restore'><?php esc_html_e('Restore', 'gravityforms'); ?> </option> <?php if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <option value='delete'><?php esc_html_e('Delete Permanently', 'gravityforms'); ?> </option> <?php } break; case 'spam': ?> <option value='unspam'><?php esc_html_e('Not Spam', 'gravityforms'); ?> </option> <?php if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <option value='delete'><?php esc_html_e('Delete Permanently', 'gravityforms'); ?> </option> <?php } break; default: ?> <option value='mark_read'><?php esc_html_e('Mark as Read', 'gravityforms'); ?> </option> <option value='mark_unread'><?php esc_html_e('Mark as Unread', 'gravityforms'); ?> </option> <option value='add_star'><?php esc_html_e('Add Star', 'gravityforms'); ?> </option> <option value='remove_star'><?php esc_html_e('Remove Star', 'gravityforms'); ?> </option> <option value='resend_notifications'><?php esc_html_e('Resend Notifications', 'gravityforms'); ?> </option> <option value='print'><?php esc_html_e('Print Entries', 'gravityforms'); ?> </option> <?php if (GFCommon::spam_enabled($form_id)) { ?> <option value='spam'><?php esc_html_e('Spam', 'gravityforms'); ?> </option> <?php } if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <option value='trash'><?php esc_html_e('Move to Trash', 'gravityforms'); ?> </option> <?php } } ?> </select> <?php $apply_button = '<input type="submit" class="button" value="' . esc_attr__('Apply', 'gravityforms') . '" onclick="return handleBulkApply(\'bulk_action2\');" />'; /** * Allows for the modification of the Entry apply button HTML (When modifying entries) * * @param string $apply_button The Entry apply button HTML */ echo apply_filters('gform_entry_apply_button', $apply_button); ?> </div> <?php echo self::display_paging_links('footer', $page_links, $first_item_index, $page_size, $total_count); ?> <div class="clear"></div> </div> </form> </div> <?php }
private static function sort_by_default_field_query($form_id, $sort_field, $sort_direction = 'DESC', $search = '', $offset = 0, $page_size = 30, $star = null, $read = null, $is_numeric_sort = false, $start_date = null, $end_date = null, $status = 'active', $payment_status = false) { global $wpdb; if (!is_numeric($form_id) || !is_numeric($offset) || !is_numeric($page_size)) { return ''; } $lead_detail_table_name = self::get_lead_details_table_name(); $lead_table_name = self::get_lead_table_name(); $lead_meta_table_name = self::get_lead_meta_table_name(); $where = self::get_leads_where_sql(compact('form_id', 'search', 'status', 'star', 'read', 'start_date', 'end_date', 'payment_status')); $entry_meta = self::get_entry_meta($form_id); $entry_meta_sql_join = ''; if (false === empty($entry_meta) && array_key_exists($sort_field, $entry_meta)) { $entry_meta_sql_join = $wpdb->prepare("INNER JOIN\n\t\t\t\t(\n\t\t\t\tSELECT\n\t\t\t\t\t lead_id, meta_value as {$sort_field}\n\t\t\t\t\t from {$lead_meta_table_name}\n\t\t\t\t\t WHERE meta_key = %s\n\t\t\t\t) lead_meta_data ON lead_meta_data.lead_id = l.id\n\t\t\t\t", $sort_field); $is_numeric_sort = $entry_meta[$sort_field]['is_numeric']; } $grid_columns = RGFormsModel::get_grid_columns($form_id); if ($sort_field != 'date_created' && false === array_key_exists($sort_field, $grid_columns)) { $sort_field = 'date_created'; } $orderby = $is_numeric_sort ? "ORDER BY ({$sort_field}+0) {$sort_direction}" : "ORDER BY {$sort_field} {$sort_direction}"; $sql = "\n SELECT filtered.sort, l.*, d.field_number, d.value\n FROM {$lead_table_name} l\n INNER JOIN {$lead_detail_table_name} d ON d.lead_id = l.id\n INNER JOIN\n (\n SELECT @rownum:=@rownum + 1 as sort, id\n FROM\n (\n SELECT distinct l.id\n FROM {$lead_table_name} l\n INNER JOIN {$lead_detail_table_name} d ON d.lead_id = l.id\n\t\t\t\t\t{$entry_meta_sql_join}\n {$where}\n {$orderby}\n LIMIT {$offset},{$page_size}\n ) page\n ) filtered ON filtered.id = l.id\n ORDER BY filtered.sort"; return $sql; }
private static function sort_by_column_query($form_id, $search_criteria, $sorting, $paging) { global $wpdb; $sort_field = isset($sorting["key"]) ? $sorting["key"] : "date_created"; $sort_direction = isset($sorting["direction"]) ? $sorting["direction"] : "DESC"; $is_numeric_sort = isset($sorting["is_numeric"]) ? $sorting["is_numeric"] : false; $offset = isset($paging["offset"]) ? $paging["offset"] : 0; $page_size = isset($paging["page_size"]) ? $paging["page_size"] : 20; if (!is_numeric($form_id) || !is_numeric($offset) || !is_numeric($page_size)) { return ""; } $lead_detail_table_name = GFFormsModel::get_lead_details_table_name(); $lead_table_name = GFFormsModel::get_lead_table_name(); $lead_meta_table_name = GFFormsModel::get_lead_meta_table_name(); $entry_meta = GFFormsModel::get_entry_meta($form_id); $entry_meta_sql_join = ""; if (false === empty($entry_meta) && array_key_exists($sort_field, $entry_meta)) { $entry_meta_sql_join = $wpdb->prepare("INNER JOIN\n (\n SELECT\n lead_id, meta_value as {$sort_field}\n from {$lead_meta_table_name}\n WHERE meta_key=%s\n ) lead_meta_data ON lead_meta_data.lead_id = l.id\n ", $sort_field); $is_numeric_sort = $entry_meta[$sort_field]['is_numeric']; } $grid_columns = RGFormsModel::get_grid_columns($form_id); if ($sort_field != "date_created" && false === array_key_exists($sort_field, $grid_columns)) { $sort_field = "date_created"; } $orderby = $is_numeric_sort ? "ORDER BY ({$sort_field}+0) {$sort_direction}" : "ORDER BY {$sort_field} {$sort_direction}"; $where_arr = array(); $search_where = self::get_search_where($form_id, $search_criteria); if (!empty($search_where)) { $where_arr[] = $search_where; } $info_search_where = self::get_info_search_where($search_criteria); if (!empty($info_search_where)) { $where_arr[] = $info_search_where; } $form_id_where = $form_id > 0 ? $wpdb->prepare("l.form_id=%d", $form_id) : ""; if (!empty($form_id_where)) { $where_arr[] = $form_id_where; } $where = empty($where_arr) ? "" : "WHERE " . join($where_arr, " AND "); $sql = "\n SELECT filtered.sort, l.*, d.field_number, d.value\n FROM {$lead_table_name} l\n INNER JOIN {$lead_detail_table_name} d ON d.lead_id = l.id\n INNER JOIN\n (\n SELECT @rownum:=@rownum + 1 as sort, id\n FROM\n (\n SELECT distinct l.id\n FROM {$lead_table_name} l\n INNER JOIN {$lead_detail_table_name} d ON d.lead_id = l.id\n {$entry_meta_sql_join}\n\t\t\t\t\t{$where}\n {$orderby}\n LIMIT {$offset},{$page_size}\n ) page\n ) filtered ON filtered.id = l.id\n\n ORDER BY filtered.sort"; return $sql; }
private static function sort_by_default_field_query($form_id, $sort_field, $sort_direction = 'DESC', $search = '', $offset = 0, $page_size = 30, $star = null, $read = null, $is_numeric_sort = false, $start_date = null, $end_date = null, $status = 'active') { global $wpdb; if (!is_numeric($form_id) || !is_numeric($offset) || !is_numeric($page_size)) { return ""; } $lead_detail_table_name = self::get_lead_details_table_name(); $lead_table_name = self::get_lead_table_name(); $lead_meta_table_name = self::get_lead_meta_table_name(); $search_term = "%{$search}%"; $search_filter = empty($search) ? "" : $wpdb->prepare(" AND value LIKE %s", $search_term); $star_filter = $star !== null && $status == 'active' ? $wpdb->prepare(" AND is_starred=%d AND status='active' ", $star) : ""; $read_filter = $read !== null && $status == 'active' ? $wpdb->prepare(" AND is_read=%d AND status='active' ", $read) : ""; $status_filter = $wpdb->prepare(" AND status=%s ", $status); $start_date_filter = empty($start_date) ? "" : " AND timestampdiff(SECOND, '{$start_date}', date_created) >=0"; $end_date_filter = empty($end_date) ? "" : " AND timestampdiff(SECOND, '{$end_date}', date_created) <=0"; $entry_meta = self::get_entry_meta($form_id); $entry_meta_sql_join = ""; if (false === empty($entry_meta) && array_key_exists($sort_field, $entry_meta)) { $entry_meta_sql_join = $wpdb->prepare("INNER JOIN\n (\n SELECT\n lead_id, meta_value as {$sort_field}\n from {$lead_meta_table_name}\n WHERE meta_key=%s\n ) lead_meta_data ON lead_meta_data.lead_id = l.id\n ", $sort_field); $is_numeric_sort = $entry_meta[$sort_field]['is_numeric']; } $grid_columns = RGFormsModel::get_grid_columns($form_id); if ($sort_field != "date_created" && false === array_key_exists($sort_field, $grid_columns)) { $sort_field = "date_created"; } $orderby = $is_numeric_sort ? "ORDER BY ({$sort_field}+0) {$sort_direction}" : "ORDER BY {$sort_field} {$sort_direction}"; $sql = "\n SELECT filtered.sort, l.*, d.field_number, d.value\n FROM {$lead_table_name} l\n INNER JOIN {$lead_detail_table_name} d ON d.lead_id = l.id\n INNER JOIN\n (\n SELECT @rownum:=@rownum + 1 as sort, id\n FROM\n (\n SELECT distinct l.id\n FROM {$lead_table_name} l\n INNER JOIN {$lead_detail_table_name} d ON d.lead_id = l.id\n {$entry_meta_sql_join}\n\t\t\t\t\tWHERE l.form_id={$form_id}\n {$search_filter}\n {$star_filter}\n {$read_filter}\n {$status_filter}\n {$start_date_filter}\n {$end_date_filter}\n {$orderby}\n LIMIT {$offset},{$page_size}\n ) page\n ) filtered ON filtered.id = l.id\n ORDER BY filtered.sort"; return $sql; }
}); var columns = new Array(); function SelectColumns(){ jQuery("#sortable_selected li").each(function(){ columns.push(this.id); }); self.parent.parent.ChangeColumns(columns); } </script> </head> <body> <?php $columns = RGFormsModel::get_grid_columns($form_id); $field_ids = array_keys($columns); $form = RGFormsModel::get_form_meta($form_id); array_push($form["fields"], array("id" => "id", "label" => __("Entry Id", "gravityforms"))); array_push($form["fields"], array("id" => "date_created", "label" => __("Entry Date", "gravityforms"))); array_push($form["fields"], array("id" => "ip", "label" => __("User IP", "gravityforms"))); array_push($form["fields"], array("id" => "source_url", "label" => __("Source Url", "gravityforms"))); array_push($form["fields"], array("id" => "payment_status", "label" => __("Payment Status", "gravityforms"))); array_push($form["fields"], array("id" => "transaction_id", "label" => __("Transaction Id", "gravityforms"))); array_push($form["fields"], array("id" => "payment_amount", "label" => __("Payment Amount", "gravityforms"))); array_push($form["fields"], array("id" => "payment_date", "label" => __("Payment Date", "gravityforms"))); array_push($form["fields"], array("id" => "created_by", "label" => __("User", "gravityforms"))); ?> <div class="panel-instructions"><?php _e("Drag & drop to order and select which columns are displayed in the entries table.", "gravityforms"); ?>
public static function leads_page($form_id) { global $wpdb; //quit if version of wp is not supported if (!GFCommon::ensure_wp_version()) { return; } echo GFCommon::get_remote_message(); $action = RGForms::post("action"); $filter = rgget("filter"); $search = rgget("s"); $page_index = empty($_GET["paged"]) ? 0 : intval($_GET["paged"]) - 1; $star = $filter == "star" ? 1 : null; // is_numeric(RGForms::get("star")) ? intval(RGForms::get("star")) : null; $read = $filter == "unread" ? 0 : null; //is_numeric(RGForms::get("read")) ? intval(RGForms::get("read")) : null; $status = in_array($filter, array("trash", "spam")) ? $filter : "active"; $update_message = ""; switch ($action) { case "delete": check_admin_referer('gforms_entry_list', 'gforms_entry_list'); $lead_id = $_POST["action_argument"]; RGFormsModel::delete_lead($lead_id); $update_message = __("Entry deleted.", "gravityforms"); break; case "bulk": check_admin_referer('gforms_entry_list', 'gforms_entry_list'); $bulk_action = !empty($_POST["bulk_action"]) ? $_POST["bulk_action"] : $_POST["bulk_action2"]; $select_all = rgpost("all_entries"); $leads = empty($select_all) ? $_POST["lead"] : GFFormsModel::get_lead_ids($form_id, $search, $star, $read, null, null, $status); $entry_count = count($leads) > 1 ? sprintf(__("%d entries", "gravityforms"), count($leads)) : __("1 entry", "gravityforms"); switch ($bulk_action) { case "delete": RGFormsModel::delete_leads($leads); $update_message = sprintf(__("%s deleted.", "gravityforms"), $entry_count); break; case "trash": RGFormsModel::update_leads_property($leads, "status", "trash"); $update_message = sprintf(__("%s moved to Trash.", "gravityforms"), $entry_count); break; case "restore": RGFormsModel::update_leads_property($leads, "status", "active"); $update_message = sprintf(__("%s restored from the Trash.", "gravityforms"), $entry_count); break; case "unspam": RGFormsModel::update_leads_property($leads, "status", "active"); $update_message = sprintf(__("%s restored from the spam.", "gravityforms"), $entry_count); break; case "spam": RGFormsModel::update_leads_property($leads, "status", "spam"); $update_message = sprintf(__("%s marked as spam.", "gravityforms"), $entry_count); break; case "mark_read": RGFormsModel::update_leads_property($leads, "is_read", 1); $update_message = sprintf(__("%s marked as read.", "gravityforms"), $entry_count); break; case "mark_unread": RGFormsModel::update_leads_property($leads, "is_read", 0); $update_message = sprintf(__("%s marked as unread.", "gravityforms"), $entry_count); break; case "add_star": RGFormsModel::update_leads_property($leads, "is_starred", 1); $update_message = sprintf(__("%s starred.", "gravityforms"), $entry_count); break; case "remove_star": RGFormsModel::update_leads_property($leads, "is_starred", 0); $update_message = sprintf(__("%s unstarred.", "gravityforms"), $entry_count); break; } break; case "change_columns": check_admin_referer('gforms_entry_list', 'gforms_entry_list'); $columns = GFCommon::json_decode(stripslashes($_POST["grid_columns"]), true); RGFormsModel::update_grid_column_meta($form_id, $columns); break; } if (rgpost("button_delete_permanently")) { RGFormsModel::delete_leads_by_form($form_id, $filter); } $sort_field = empty($_GET["sort"]) ? 0 : $_GET["sort"]; $sort_direction = empty($_GET["dir"]) ? "DESC" : $_GET["dir"]; $form = RGFormsModel::get_form_meta($form_id); $sort_field_meta = RGFormsModel::get_field($form, $sort_field); $is_numeric = $sort_field_meta["type"] == "number"; $page_size = apply_filters("gform_entry_page_size", apply_filters("gform_entry_page_size_{$form_id}", 20, $form_id), $form_id); $first_item_index = $page_index * $page_size; $leads = RGFormsModel::get_leads($form_id, $sort_field, $sort_direction, $search, $first_item_index, $page_size, $star, $read, $is_numeric, null, null, $status); $lead_count = RGFormsModel::get_lead_count($form_id, $search, $star, $read, null, null, $status); $summary = RGFormsModel::get_form_counts($form_id); $active_lead_count = $summary["total"]; $unread_count = $summary["unread"]; $starred_count = $summary["starred"]; $spam_count = $summary["spam"]; $trash_count = $summary["trash"]; $columns = RGFormsModel::get_grid_columns($form_id, true); $search_qs = empty($search) ? "" : "&s=" . urlencode($search); $sort_qs = empty($sort_field) ? "" : "&sort={$sort_field}"; $dir_qs = empty($sort_field) ? "" : "&dir={$sort_direction}"; $star_qs = $star !== null ? "&star={$star}" : ""; $read_qs = $read !== null ? "&read={$read}" : ""; $filter_qs = "&filter=" . $filter; $display_total = ceil($lead_count / $page_size); $page_links = paginate_links(array('base' => admin_url("admin.php") . "?page=gf_entries&view=entries&id={$form_id}&%_%" . $search_qs . $sort_qs . $dir_qs . $star_qs . $read_qs . $filter_qs, 'format' => 'paged=%#%', 'prev_text' => __('«', 'gravityforms'), 'next_text' => __('»', 'gravityforms'), 'total' => $display_total, 'current' => $page_index + 1, 'show_all' => false)); wp_print_styles(array("thickbox")); ?> <script type="text/javascript"> var messageTimeout = false; function ChangeColumns(columns){ jQuery("#action").val("change_columns"); jQuery("#grid_columns").val(jQuery.toJSON(columns)); tb_remove(); jQuery("#lead_form")[0].submit(); } function Search(sort_field_id, sort_direction, form_id, search, star, read, filter){ var search_qs = search == "" ? "" : "&s=" + search; var star_qs = star == "" ? "" : "&star=" + star; var read_qs = read == "" ? "" : "&read=" + read; var filter_qs = filter == "" ? "" : "&filter=" + filter; var location = "?page=gf_entries&view=entries&id=" + form_id + "&sort=" + sort_field_id + "&dir=" + sort_direction + search_qs + star_qs + read_qs + filter_qs; document.location = location; } function ToggleStar(img, lead_id, filter){ var is_starred = img.src.indexOf("star1.png") >=0 if(is_starred) img.src = img.src.replace("star1.png", "star0.png"); else img.src = img.src.replace("star0.png", "star1.png"); jQuery("#lead_row_" + lead_id).toggleClass("lead_starred"); //if viewing the starred entries, hide the row and adjust the paging counts if (filter == "star") { var title = jQuery("#lead_row_" + lead_id); title.css("display", "none"); UpdatePagingCounts(1); } UpdateCount("star_count", is_starred ? -1 : 1); UpdateLeadProperty(lead_id, "is_starred", is_starred ? 0 : 1); } function ToggleRead(lead_id, filter){ var title = jQuery("#lead_row_" + lead_id); marking_read = title.hasClass("lead_unread"); jQuery("#mark_read_" + lead_id).css("display", marking_read ? "none" : "inline"); jQuery("#mark_unread_" + lead_id).css("display", marking_read ? "inline" : "none"); jQuery("#is_unread_" + lead_id).css("display", marking_read ? "inline" : "none"); title.toggleClass("lead_unread"); //if viewing the unread entries, hide the row and adjust the paging counts if (filter == "unread") { title.css("display", "none"); UpdatePagingCounts(1); } UpdateCount("unread_count", marking_read ? -1 : 1); UpdateLeadProperty(lead_id, "is_read", marking_read ? 1 : 0); } function UpdateLeadProperty(lead_id, name, value){ var mysack = new sack("<?php echo admin_url("admin-ajax.php"); ?> " ); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "rg_update_lead_property" ); mysack.setVar( "rg_update_lead_property", "<?php echo wp_create_nonce("rg_update_lead_property"); ?> " ); mysack.setVar( "lead_id", lead_id); mysack.setVar( "name", name); mysack.setVar( "value", value); mysack.onError = function() { alert('<?php echo esc_js(__("Ajax error while setting lead property", "gravityforms")); ?> ' )}; mysack.runAJAX(); return true; } function UpdateCount(element_id, change){ var element = jQuery("#" + element_id); var count = parseInt(element.html()) + change element.html(count + ""); } function UpdatePagingCounts(change){ //update paging header/footer Displaying # - # of #, use counts from header, no need to use footer since they are the same, just update footer paging with header info var paging_range_max_header = jQuery("#paging_range_max_header"); var paging_range_max_footer = jQuery("#paging_range_max_footer"); var range_change_max = parseInt(paging_range_max_header.html()) - change; var paging_total_header = jQuery("#paging_total_header"); var paging_total_footer = jQuery("#paging_total_footer"); var total_change = parseInt(paging_total_header.html()) - change; var paging_range_min_header = jQuery("#paging_range_min_header"); var paging_range_min_footer = jQuery("#paging_range_min_footer"); //if min and max are the same, this is the last entry item on the page, clear out the displaying # - # of # text if (parseInt(paging_range_min_header.html()) == parseInt(paging_range_max_header.html())) { var paging_header = jQuery("#paging_header"); paging_header.html(""); var paging_footer = jQuery("#paging_footer"); paging_footer.html(""); } else { paging_range_max_header.html(range_change_max + ""); paging_range_max_footer.html(range_change_max + ""); paging_total_header.html(total_change + ""); paging_total_footer.html(total_change + ""); } gformVars.countAllEntries = gformVars.countAllEntries - change; setSelectAllText(); } function DeleteLead(lead_id){ jQuery("#action").val("delete"); jQuery("#action_argument").val(lead_id); jQuery("#lead_form")[0].submit(); return true; } function handleBulkApply(actionElement){ var action = jQuery("#" + actionElement).val(); var defaultModalOptions = ''; var leadIds = getLeadIds(); if(leadIds.length == 0){ alert('<?php _e('Please select at least one entry.', 'gravityforms'); ?> '); return false; } switch(action){ case 'resend_notifications': resetResendNotificationsUI(); tb_show('<?php _e("Resend Notifications", "gravityforms"); ?> ', '#TB_inline?width=350&inlineId=notifications_modal_container', ''); return false; break; case 'print': resetPrintUI(); tb_show('<?php _e("Print Entries", "gravityforms"); ?> ', '#TB_inline?width=350&height=250&inlineId=print_modal_container', ''); return false; break; default: jQuery('#action').val('bulk'); } } function getLeadIds(){ var all = jQuery("#all_entries").val(); //compare string, the boolean isn't correct, even when casting to a boolean the 0 is set to true if(all == "1") return 0; var leads = jQuery(".check-column input[name='lead[]']:checked"); var leadIds = new Array(); jQuery(leads).each(function(i){ leadIds[i] = jQuery(leads[i]).val(); }); return leadIds; } function BulkResendNotifications(){ var selectedNotifications = new Array(); jQuery(".gform_notifications:checked").each(function(){ selectedNotifications.push(jQuery(this).val()); }); var leadIds = getLeadIds(); var sendTo = jQuery('#notification_override_email').val(); if(selectedNotifications.length <=0) { displayMessage("<?php _e("You must select at least one type of notification to resend.", "gravityforms"); ?> ", "error", "#notifications_container"); return; } jQuery('#please_wait_container').fadeIn(); jQuery.post(ajaxurl, { action : "gf_resend_notifications", gf_resend_notifications : '<?php echo wp_create_nonce('gf_resend_notifications'); ?> ', notifications: jQuery.toJSON(selectedNotifications), sendTo : sendTo, leadIds : leadIds, filter: '<?php echo esc_attr(rgget("filter")); ?> ', search: '<?php echo esc_attr(rgget("s")); ?> ', formId : '<?php echo $form['id']; ?> ' }, function(response){ jQuery('#please_wait_container').hide(); if(response) { displayMessage(response, "error", "#notifications_container"); } else { var message = '<?php _e("Notifications for %s were resent successfully.", "gravityforms"); ?> '; displayMessage(message.replace('%s', leadIds.length + ' ' + getPlural(leadIds.length, '<?php _e('entry', 'gravityforms'); ?> ', '<?php _e('entries', 'gravityforms'); ?> ')), "updated", "#lead_form"); closeModal(true); } } ); } function resetResendNotificationsUI(){ jQuery('#notification_admin, #notification_user').attr('checked', false); jQuery('#notifications_container .message, #notifications_override_settings').hide(); } function BulkPrint(){ var leadIds = getLeadIds(); if(leadIds != 0) leadIds = leadIds.join(','); var leadsQS = '&lid=' + leadIds; var notesQS = jQuery('#gform_print_notes').is(':checked') ? '¬es=1' : ''; var pageBreakQS = jQuery('#gform_print_page_break').is(':checked') ? '&page_break=1' : ''; var filterQS = '&filter=<?php echo esc_attr(rgget("filter")); ?> '; var searchQS = '&search=<?php echo esc_attr(rgget("s")); ?> '; var url = '<?php echo trailingslashit(site_url()); ?> ?gf_page=print-entry&fid=<?php echo $form['id']; ?> ' + leadsQS + notesQS + pageBreakQS + filterQS + searchQS; window.open (url,'printwindow'); closeModal(true); hideMessage('#lead_form', false); } function resetPrintUI(){ jQuery('#print_options input[type="checkbox"]').attr('checked', false); } function displayMessage(message, messageClass, container){ hideMessage(container, true); var messageBox = jQuery('<div class="message ' + messageClass + '" style="display:none;"><p>' + message + '</p></div>'); jQuery(messageBox).prependTo(container).slideDown(); if(messageClass == 'updated') messageTimeout = setTimeout(function(){ hideMessage(container, false); }, 10000); } function hideMessage(container, messageQueued){ if(messageTimeout) clearTimeout(messageTimeout); var messageBox = jQuery(container).find('.message'); if(messageQueued) jQuery(messageBox).remove(); else jQuery(messageBox).slideUp(function(){ jQuery(this).remove(); }); } function closeModal(isSuccess) { if(isSuccess) jQuery('.check-column input[type="checkbox"]').attr('checked', false); tb_remove(); } function getPlural(count, singular, plural) { return count > 1 ? plural : singular; } function toggleNotificationOverride(isInit) { if(isInit) jQuery('#notification_override_email').val(''); if(jQuery(".gform_notifications:checked").length > 0 ) { jQuery('#notifications_override_settings').slideDown(); } else { jQuery('#notifications_override_settings').slideUp(function(){ jQuery('#notification_override_email').val(''); }); } } // Select All var gformStrings = { "allEntriesOnPageAreSelected" : "<?php printf(__("All %s{0}%s entries on this page are selected.", "gravityforms"), "<strong>", "</strong>"); ?> ", "selectAll" : "<?php printf(__("Select all %s{0}%s entries.", "gravityforms"), "<strong>", "</strong>"); ?> ", "allEntriesSelected" : "<?php printf(__("All %s{0}%s entries have been selected.", "gravityforms"), "<strong>", "</strong>"); ?> ", "clearSelection" : "<?php _e("Clear selection", "gravityforms"); ?> " } var gformVars = { "countAllEntries" : <?php echo intval($lead_count); ?> , "perPage" : <?php echo intval($page_size); ?> } function setSelectAllText(){ var tr = getSelectAllText(); jQuery("#gform-select-all-message td").html(tr); } function getSelectAllText(){ var count; count = jQuery("#gf_entry_list tr:visible:not('#gform-select-all-message')").length; return gformStrings.allEntriesOnPageAreSelected.format(count) + " <a href='javascript:void(0)' onclick='selectAllEntriesOnAllPages();'>" + gformStrings.selectAll.format(gformVars.countAllEntries) + "</a>"; } function getSelectAllTr(){ var t = getSelectAllText(); var colspan = jQuery("#gf_entry_list").find("tr:first td").length + 1; return "<tr id='gform-select-all-message' style='display:none;background-color:lightyellow;text-align:center;'><td colspan='{0}'>{1}</td></tr>".format(colspan, t); } function toggleSelectAll(visible){ if(gformVars.countAllEntries <= gformVars.perPage){ jQuery('#gform-select-all-message').hide(); return; } if(visible) setSelectAllText(); jQuery('#gform-select-all-message').toggle(visible); } function clearSelectAllEntries(){ jQuery(".check-column input[type=checkbox]").prop('checked', false); clearSelectAllMessage(); } function clearSelectAllMessage(){ jQuery("#all_entries").val("0"); jQuery("#gform-select-all-message").hide(); jQuery("#gform-select-all-message td").html(''); } function selectAllEntriesOnAllPages (){ var trHtmlClearSelection; trHtmlClearSelection = gformStrings.allEntriesSelected.format(gformVars.countAllEntries) + " <a href='javascript:void(0);' onclick='clearSelectAllEntries();'>" + gformStrings.clearSelection + "</a>"; jQuery("#all_entries").val("1"); jQuery("#gform-select-all-message td").html(trHtmlClearSelection); } function SetUpSelectAllEntries(){ if(gformVars.countAllEntries > gformVars.perPage){ var tr = getSelectAllTr(); jQuery("#gf_entry_list").prepend(tr); jQuery(".headercb").click(function(){ toggleSelectAll(jQuery(this).prop('checked')); }); jQuery("#gf_entry_list .check-column input[type=checkbox]").click(function(){ clearSelectAllMessage(); }) } } String.prototype.format = function() { var args = arguments; return this.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); }; // end Select All jQuery(document).ready(function(){ jQuery("#lead_search").keypress(function(event){ if(event.keyCode == 13){ Search('<?php echo $sort_field; ?> ', '<?php echo $sort_direction; ?> ', <?php echo $form_id; ?> , this.value, '<?php echo $star; ?> ', '<?php echo $read; ?> ', '<?php echo $filter; ?> '); event.preventDefault(); } }); var action = '<?php echo $action; ?> '; var message = '<?php echo $update_message; ?> '; if(action && message) displayMessage(message, 'updated', '#lead_form'); var list = jQuery("#gf_entry_list").wpList( { alt: '<?php echo esc_js(__('Entry List', 'gravityforms')); ?> '} ); list.bind('wpListDelEnd', function(e, s, list){ var currentStatus = "<?php echo $filter == "trash" || $filter == "spam" ? $filter : "active"; ?> "; var filter = "<?php echo $filter; ?> "; var movingTo = "active"; if(s.data.status == "trash") movingTo = "trash"; else if(s.data.status == "spam") movingTo = "spam"; else if(s.data.status == "delete") movingTo = "delete"; var id = s.data.entry; var title = jQuery("#lead_row_" + id); var isUnread = title.hasClass("lead_unread"); var isStarred = title.hasClass("lead_starred"); if(movingTo != "delete"){ //Updating All count var allCount = currentStatus == "active" ? -1 : 1; UpdateCount("all_count", allCount); //Updating Unread count if(isUnread){ var unreadCount = currentStatus == "active" ? -1 : 1; UpdateCount("unread_count", unreadCount); } //Updating Starred count if(isStarred){ var starCount = currentStatus == "active" ? -1 : 1; UpdateCount("star_count", starCount); } } //Updating Spam count if(currentStatus == "spam" || movingTo == "spam"){ var spamCount = movingTo == "spam" ? 1 : -1; UpdateCount("spam_count", spamCount); //adjust paging counts if (filter == "spam") { UpdatePagingCounts(1); } else { UpdatePagingCounts(spamCount); } } //Updating trash count if(currentStatus == "trash" || movingTo == "trash"){ var trashCount = movingTo == "trash" ? 1 : -1; UpdateCount("trash_count", trashCount); //adjust paging counts if (filter == "trash") { UpdatePagingCounts(1); } else { UpdatePagingCounts(trashCount); } } }); SetUpSelectAllEntries(); }); </script> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css" type="text/css" /> <style> /*#TB_window { height: 400px !important; } #TB_ajaxContent[style] { height: 370px !important; }*/ .lead_unread a, .lead_unread td{font-weight: bold;} .lead_spam_trash a, .lead_spam_trash td{font-weight:normal;} .row-actions a { font-weight:normal;} .entry_nowrap{ overflow:hidden; white-space:nowrap; } .message { margin: 15px 0 0 !important; } </style> <div class="wrap"> <div class="icon32" id="gravity-entry-icon"><br></div> <h2 class="gf_admin_page_title"><span><?php _e("Entries", "gravityforms"); ?> </span><span class="gf_admin_page_subtitle"><span class="gf_admin_page_formid">ID: <?php echo $form['id']; ?> </span><?php echo $form['title']; ?> </span></h2> <?php RGForms::top_toolbar(); ?> <form id="lead_form" method="post"> <?php wp_nonce_field('gforms_entry_list', 'gforms_entry_list'); ?> <input type="hidden" value="" name="grid_columns" id="grid_columns" /> <input type="hidden" value="" name="action" id="action" /> <input type="hidden" value="" name="action_argument" id="action_argument" /> <input type="hidden" value="" name="all_entries" id="all_entries" /> <ul class="subsubsub"> <li><a class="<?php echo empty($filter) ? "current" : ""; ?> " href="?page=gf_entries&view=entries&id=<?php echo $form_id; ?> "><?php _e("All", "gravityforms"); ?> <span class="count">(<span id="all_count"><?php echo $active_lead_count; ?> </span>)</span></a> | </li> <li><a class="<?php echo $read !== null ? "current" : ""; ?> " href="?page=gf_entries&view=entries&id=<?php echo $form_id; ?> &filter=unread"><?php _e("Unread", "gravityforms"); ?> <span class="count">(<span id="unread_count"><?php echo $unread_count; ?> </span>)</span></a> | </li> <li><a class="<?php echo $star !== null ? "current" : ""; ?> " href="?page=gf_entries&view=entries&id=<?php echo $form_id; ?> &filter=star"><?php _e("Starred", "gravityforms"); ?> <span class="count">(<span id="star_count"><?php echo $starred_count; ?> </span>)</span></a> | </li> <?php if (GFCommon::akismet_enabled($form_id)) { ?> <li><a class="<?php echo $filter == "spam" ? "current" : ""; ?> " href="?page=gf_entries&view=entries&id=<?php echo $form_id; ?> &filter=spam"><?php _e("Spam", "gravityforms"); ?> <span class="count">(<span id="spam_count"><?php echo $spam_count; ?> </span>)</span></a> | </li> <?php } ?> <li><a class="<?php echo $filter == "trash" ? "current" : ""; ?> " href="?page=gf_entries&view=entries&id=<?php echo $form_id; ?> &filter=trash"><?php _e("Trash", "gravityforms"); ?> <span class="count">(<span id="trash_count"><?php echo $trash_count; ?> </span>)</span></a></li> </ul> <p class="search-box"> <label class="hidden" for="lead_search"><?php _e("Search Entries:", "gravityforms"); ?> </label> <input type="text" id="lead_search" value="<?php echo $search; ?> "><a class="button" id="lead_search_button" href="javascript:Search('<?php echo $sort_field; ?> ', '<?php echo $sort_direction; ?> ', <?php echo $form_id; ?> , jQuery('#lead_search').val(), '<?php echo $star; ?> ', '<?php echo $read; ?> ', '<?php echo $filter; ?> ');"><?php _e("Search", "gravityforms"); ?> </a> </p> <div class="tablenav"> <div class="alignleft actions" style="padding:8px 0 7px 0;"> <label class="hidden" for="bulk_action"> <?php _e("Bulk action", "gravityforms"); ?> </label> <select name="bulk_action" id="bulk_action"> <option value=''><?php _e(" Bulk action ", "gravityforms"); ?> </option> <?php switch ($filter) { case "trash": ?> <option value='restore'><?php _e("Restore", "gravityforms"); ?> </option> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <option value='delete'><?php _e("Delete Permanently", "gravityforms"); ?> </option> <?php } break; case "spam": ?> <option value='unspam'><?php _e("Not Spam", "gravityforms"); ?> </option> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <option value='delete'><?php _e("Delete Permanently", "gravityforms"); ?> </option> <?php } break; default: ?> <option value='mark_read'><?php _e("Mark as Read", "gravityforms"); ?> </option> <option value='mark_unread'><?php _e("Mark as Unread", "gravityforms"); ?> </option> <option value='add_star'><?php _e("Add Star", "gravityforms"); ?> </option> <option value='remove_star'><?php _e("Remove Star", "gravityforms"); ?> </option> <option value='resend_notifications'><?php _e("Resend Notifications", "gravityforms"); ?> </option> <option value='print'><?php _e("Print", "gravityforms"); ?> </option> <?php if (GFCommon::akismet_enabled($form_id)) { ?> <option value='spam'><?php _e("Spam", "gravityforms"); ?> </option> <?php } if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <option value='trash'><?php _e("Trash", "gravityforms"); ?> </option> <?php } } ?> </select> <?php $apply_button = '<input type="submit" class="button" value="' . __("Apply", "gravityforms") . '" onclick="return handleBulkApply(\'bulk_action\');" />'; echo apply_filters("gform_entry_apply_button", $apply_button); if (in_array($filter, array("trash", "spam"))) { $message = $filter == "trash" ? __("WARNING! This operation cannot be undone. Empty trash? \\'Ok\\' to empty trash. \\'Cancel\\' to abort.", "gravityforms") : __("WARNING! This operation cannot be undone. Permanently delete all spam? \\'Ok\\' to delete. \\'Cancel\\' to abort.", "gravityforms"); $button_label = $filter == "trash" ? __("Empty Trash", "gravityforms") : __("Delete All Spam", "gravityforms"); ?> <input type="submit" class="button" name="button_delete_permanently" value="<?php echo $button_label; ?> " onclick="return confirm('<?php echo esc_attr($message); ?> ');" /> <?php } ?> <div id="notifications_modal_container" style="display:none;"> <div id="notifications_container"> <div id="post_tag" class="tagsdiv"> <div id="resend_notifications_options"> <?php if (!is_array($form["notifications"]) || count($form["notifications"]) <= 0) { ?> <p class="description"><?php _e("You cannot resend notifications for these entries because this form does not currently have any notifications configured.", "gravityforms"); ?> </p> <a href="<?php echo admin_url("admin.php?page=gf_edit_forms&view=settings&subview=notification&id={$form["id"]}"); ?> " class="button"><?php _e("Configure Notifications", "gravityforms"); ?> </a> <?php } else { ?> <p class="description"><?php _e("Specify which notifications you would like to resend for the selected entries.", "gravityforms"); ?> </p> <?php foreach ($form["notifications"] as $notification) { ?> <input type="checkbox" class="gform_notifications" value="<?php echo $notification["id"]; ?> " id="notification_<?php echo $notification["id"]; ?> " onclick="toggleNotificationOverride();" /> <label for="notification_<?php echo $notification["id"]; ?> "><?php echo $notification["name"]; ?> </label> <br /><br /> <?php } ?> <div id="notifications_override_settings" style="display:none;"> <p class="description" style="padding-top:0; margin-top:0;">You may override the default notification settings by entering a comma delimited list of emails to which the selected notifications should be sent.</p> <label for="notification_override_email"><?php _e("Send To", "gravityforms"); ?> <?php gform_tooltip("notification_override_email"); ?> </label><br /> <input type="text" name="notification_override_email" id="notification_override_email" style="width:99%;" /><br /><br /> </div> <input type="button" name="notification_resend" id="notification_resend" value="<?php _e("Resend Notifications", "gravityforms"); ?> " class="button" style="" onclick="BulkResendNotifications();"/> <span id="please_wait_container" style="display:none; margin-left: 5px;"> <img src="<?php echo GFCommon::get_base_url(); ?> /images/loading.gif"> <?php _e("Resending...", "gravityforms"); ?> </span> <?php } ?> </div> <div id="resend_notifications_close" style="display:none;margin:10px 0 0;"> <input type="button" name="resend_notifications_close_button" value="<?php _e("Close Window", "gravityforms"); ?> " class="button" style="" onclick="closeModal(true);"/> </div> </div> </div> </div> <!-- / Resend Notifications --> <div id="print_modal_container" style="display:none;"> <div id="print_container"> <div class="tagsdiv"> <div id="print_options"> <p class="description"><?php _e("Print all of the selected entries at once.", "gravityforms"); ?> </p> <?php if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <input type="checkbox" name="gform_print_notes" value="print_notes" checked="checked" id="gform_print_notes" /> <label for="gform_print_notes"><?php _e("Include notes", "gravityforms"); ?> </label> <br /><br /> <?php } ?> <input type="checkbox" name="gform_print_page_break" value="print_notes" checked="checked" id="gform_print_page_break" /> <label for="gform_print_page_break"><?php _e("Add page break between entries", "gravityforms"); ?> </label> <br /><br /> <input type="button" value="<?php _e("Print", "gravityforms"); ?> " class="button" onclick="BulkPrint();" /> </div> </div> </div> </div> <!-- / Print --> </div> <?php echo self::display_paging_links("header", $page_links, $first_item_index, $page_size, $lead_count); ?> <div class="clear"></div> </div> <table class="widefat fixed" cellspacing="0"> <thead> <tr> <th scope="col" id="cb" class="manage-column column-cb check-column"><input type="checkbox" class="headercb" /></th> <?php if (!in_array($filter, array("spam", "trash"))) { ?> <th scope="col" id="cb" class="manage-column column-cb check-column" > </th> <?php } foreach ($columns as $field_id => $field_info) { $dir = $field_id == 0 ? "DESC" : "ASC"; //default every field so ascending sorting except date_created (id=0) if ($field_id == $sort_field) { //reverting direction if clicking on the currently sorted field $dir = $sort_direction == "ASC" ? "DESC" : "ASC"; } ?> <th scope="col" class="manage-column entry_nowrap" onclick="Search('<?php echo $field_id; ?> ', '<?php echo $dir; ?> ', <?php echo $form_id; ?> , '<?php echo $search; ?> ', '<?php echo $star; ?> ', '<?php echo $read; ?> ', '<?php echo $filter; ?> ');" style="cursor:pointer;"><?php echo esc_html($field_info["label"]); ?> </th> <?php } ?> <th scope="col" align="right" width="50"> <a title="<?php _e("Select Columns", "gravityforms"); ?> " href="<?php echo trailingslashit(site_url()); ?> ?gf_page=select_columns&id=<?php echo $form_id; ?> &TB_iframe=true&height=365&width=600" class="thickbox entries_edit_icon"><?php _e("Edit", "gravityforms"); ?> </a> </th> </tr> </thead> <tfoot> <tr> <th scope="col" id="cb" class="manage-column column-cb check-column" style=""><input type="checkbox" /></th> <?php if (!in_array($filter, array("spam", "trash"))) { ?> <th scope="col" id="cb" class="manage-column column-cb check-column" > </th> <?php } foreach ($columns as $field_id => $field_info) { $dir = $field_id == 0 ? "DESC" : "ASC"; //default every field so ascending sorting except date_created (id=0) if ($field_id == $sort_field) { //reverting direction if clicking on the currently sorted field $dir = $sort_direction == "ASC" ? "DESC" : "ASC"; } ?> <th scope="col" class="manage-column entry_nowrap" onclick="Search('<?php echo $field_id; ?> ', '<?php echo $dir; ?> ', <?php echo $form_id; ?> , '<?php echo $search; ?> ', '<?php echo $star; ?> ', '<?php echo $read; ?> ', '<?php echo $filter; ?> ');" style="cursor:pointer;"><?php echo esc_html($field_info["label"]); ?> </th> <?php } ?> <th scope="col" style="width:15px;"> <a href="<?php echo trailingslashit(site_url()); ?> ?gf_page=select_columns&id=<?php echo $form_id; ?> &TB_iframe=true&height=365&width=600" class="thickbox entries_edit_icon"><?php _e("Edit", "gravityforms"); ?> </a> </th> </tr> </tfoot> <tbody data-wp-lists="list:gf_entry" class="user-list" id="gf_entry_list"> <?php if (sizeof($leads) > 0) { $field_ids = array_keys($columns); foreach ($leads as $position => $lead) { $position = $page_size * $page_index + $position; ?> <tr id="lead_row_<?php echo $lead["id"]; ?> " class='author-self status-inherit <?php echo $lead["is_read"] ? "" : "lead_unread"; ?> <?php echo $lead["is_starred"] ? "lead_starred" : ""; ?> <?php echo in_array($filter, array("trash", "spam")) ? "lead_spam_trash" : ""; ?> ' valign="top"> <th scope="row" class="check-column"> <input type="checkbox" name="lead[]" value="<?php echo $lead["id"]; ?> " /> </th> <?php if (!in_array($filter, array("spam", "trash"))) { ?> <td > <img id="star_image_<?php echo $lead["id"]; ?> " src="<?php echo GFCommon::get_base_url(); ?> /images/star<?php echo intval($lead["is_starred"]); ?> .png" onclick="ToggleStar(this, <?php echo $lead["id"] . ",'" . $filter . "'"; ?> );" /> </td> <?php } $is_first_column = true; $nowrap_class = "entry_nowrap"; foreach ($field_ids as $field_id) { /* maybe move to function */ $field = RGFormsModel::get_field($form, $field_id); $value = rgar($lead, $field_id); if ($field['type'] == 'post_category') { $value = GFCommon::prepare_post_category_value($value, $field, 'entry_list'); } //filtering lead value $value = apply_filters("gform_get_field_value", $value, $lead, $field); $input_type = !empty($columns[$field_id]["inputType"]) ? $columns[$field_id]["inputType"] : $columns[$field_id]["type"]; switch ($input_type) { case "checkbox": $value = ""; //if this is the main checkbox field (not an input), display a comma separated list of all inputs if (absint($field_id) == $field_id) { $lead_field_keys = array_keys($lead); $items = array(); foreach ($lead_field_keys as $input_id) { if (is_numeric($input_id) && absint($input_id) == $field_id) { $items[] = GFCommon::selection_display(rgar($lead, $input_id), null, $lead["currency"], false); } } $value = GFCommon::implode_non_blank(", ", $items); // special case for post category checkbox fields if ($field['type'] == 'post_category') { $value = GFCommon::prepare_post_category_value($value, $field, 'entry_list'); } } else { $value = ""; //looping through lead detail values trying to find an item identical to the column label. Mark with a tick if found. $lead_field_keys = array_keys($lead); foreach ($lead_field_keys as $input_id) { //mark as a tick if input label (from form meta) is equal to submitted value (from lead) if (is_numeric($input_id) && absint($input_id) == absint($field_id)) { if ($lead[$input_id] == $columns[$field_id]["label"]) { $value = "<img src='" . GFCommon::get_base_url() . "/images/tick.png'/>"; } else { $field = RGFormsModel::get_field($form, $field_id); if (rgar($field, "enableChoiceValue") || rgar($field, "enablePrice")) { foreach ($field["choices"] as $choice) { if ($choice["value"] == $lead[$field_id]) { $value = "<img src='" . GFCommon::get_base_url() . "/images/tick.png'/>"; break; } else { if (rgar($field, "enablePrice")) { $ary = explode("|", $lead[$field_id]); $val = count($ary) > 0 ? $ary[0] : ""; $price = count($ary) > 1 ? $ary[1] : ""; if ($val == $choice["value"]) { $value = "<img src='" . GFCommon::get_base_url() . "/images/tick.png'/>"; break; } } } } } } } } } break; case "post_image": list($url, $title, $caption, $description) = rgexplode("|:|", $value, 4); if (!empty($url)) { //displaying thumbnail (if file is an image) or an icon based on the extension $thumb = self::get_icon_url($url); $value = "<a href='" . esc_attr($url) . "' target='_blank' title='" . __("Click to view", "gravityforms") . "'><img src='{$thumb}'/></a>"; } break; case "fileupload": $file_path = $value; if (!empty($file_path)) { //displaying thumbnail (if file is an image) or an icon based on the extension $thumb = self::get_icon_url($file_path); $file_path = esc_attr($file_path); $value = "<a href='{$file_path}' target='_blank' title='" . __("Click to view", "gravityforms") . "'><img src='{$thumb}'/></a>"; } break; case "source_url": $value = "<a href='" . esc_attr($lead["source_url"]) . "' target='_blank' alt='" . esc_attr($lead["source_url"]) . "' title='" . esc_attr($lead["source_url"]) . "'>.../" . esc_attr(GFCommon::truncate_url($lead["source_url"])) . "</a>"; break; case "textarea": case "post_content": case "post_excerpt": $value = esc_html($value); break; case "date_created": case "payment_date": $value = GFCommon::format_date($value, false); break; case "date": $field = RGFormsModel::get_field($form, $field_id); $value = GFCommon::date_display($value, rgar($field, "dateFormat")); break; case "radio": case "select": $field = RGFormsModel::get_field($form, $field_id); $value = GFCommon::selection_display($value, $field, $lead["currency"]); break; case "number": $field = RGFormsModel::get_field($form, $field_id); $value = GFCommon::format_number($value, rgar($field, "numberFormat")); break; case "total": case "payment_amount": $value = GFCommon::to_money($value, $lead["currency"]); break; case "created_by": if (!empty($value)) { $userdata = get_userdata($value); $value = $userdata->user_login; } break; case "multiselect": // add space after comma-delimited values $value = implode(', ', explode(',', $value)); break; default: $value = esc_html($value); } $value = apply_filters("gform_entries_field_value", $value, $form_id, $field_id, $lead); /* ^ maybe move to function */ $query_string = "gf_entries&view=entry&id={$form_id}&lid={$lead["id"]}{$search_qs}{$sort_qs}{$dir_qs}{$filter_qs}&paged=" . ($page_index + 1); if ($is_first_column) { ?> <td class="column-title" > <a href="admin.php?page=gf_entries&view=entry&id=<?php echo $form_id; ?> &lid=<?php echo $lead["id"] . $search_qs . $sort_qs . $dir_qs . $filter_qs; ?> &paged=<?php echo $page_index + 1; ?> &pos=<?php echo $position; ?> "><?php echo $value; ?> </a> <div class="row-actions"> <?php switch ($filter) { case "trash": ?> <span class="edit"> <a title="<?php _e("View this entry", "gravityforms"); ?> " href="admin.php?page=gf_entries&view=entry&id=<?php echo $form_id; ?> &lid=<?php echo $lead["id"] . $search_qs . $sort_qs . $dir_qs . $filter_qs; ?> &paged=<?php echo $page_index + 1; ?> &pos=<?php echo $position; ?> "><?php _e("View", "gravityforms"); ?> </a> | </span> <span class="edit"> <a data-wp-lists='delete:gf_entry_list:lead_row_<?php echo $lead["id"]; ?> ::status=active&entry=<?php echo $lead["id"]; ?> ' title="<?php echo _e("Restore this entry", "gravityforms"); ?> " href="<?php echo wp_nonce_url("?page=gf_entries", "gf_delete_entry"); ?> "><?php _e("Restore", "gravityforms"); ?> </a> <?php echo GFCommon::current_user_can_any("gravityforms_delete_entries") ? "|" : ""; ?> </span> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <span class="delete"> <?php $delete_link = '<a data-wp-lists="delete:gf_entry_list:lead_row_' . $lead["id"] . '::status=delete&entry=' . $lead["id"] . '" title="' . __("Delete this entry permanently", "gravityforms") . '" href="' . wp_nonce_url("?page=gf_entries", "gf_delete_entry") . '">' . __("Delete Permanently", "gravityforms") . '</a>'; echo apply_filters("gform_delete_entry_link", $delete_link); ?> </span> <?php } break; case "spam": ?> <span class="edit"> <a title="<?php _e("View this entry", "gravityforms"); ?> " href="admin.php?page=gf_entries&view=entry&id=<?php echo $form_id; ?> &lid=<?php echo $lead["id"] . $search_qs . $sort_qs . $dir_qs . $filter_qs; ?> &paged=<?php echo $page_index + 1; ?> &pos=<?php echo $position; ?> "><?php _e("View", "gravityforms"); ?> </a> | </span> <span class="unspam"> <a data-wp-lists='delete:gf_entry_list:lead_row_<?php echo $lead["id"]; ?> ::status=unspam&entry=<?php echo $lead["id"]; ?> ' title="<?php echo _e("Mark this entry as not spam", "gravityforms"); ?> " href="<?php echo wp_nonce_url("?page=gf_entries", "gf_delete_entry"); ?> "><?php _e("Not Spam", "gravityforms"); ?> </a> <?php echo GFCommon::current_user_can_any("gravityforms_delete_entries") ? "|" : ""; ?> </span> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <span class="delete"> <?php $delete_link = '<a data-wp-lists="delete:gf_entry_list:lead_row_' . $lead["id"] . '::status=delete&entry=' . $lead["id"] . '" title="' . __("Delete this entry permanently", "gravityforms") . '" href="' . wp_nonce_url("?page=gf_entries", "gf_delete_entry") . '">' . __("Delete Permanently", "gravityforms") . '</a>'; echo apply_filters("gform_delete_entry_link", $delete_link); ?> </span> <?php } break; default: ?> <span class="edit"> <a title="<?php _e("View this entry", "gravityforms"); ?> " href="admin.php?page=gf_entries&view=entry&id=<?php echo $form_id; ?> &lid=<?php echo $lead["id"] . $search_qs . $sort_qs . $dir_qs . $filter_qs; ?> &paged=<?php echo $page_index + 1; ?> &pos=<?php echo $position; ?> "><?php _e("View", "gravityforms"); ?> </a> | </span> <span class="edit"> <a id="mark_read_<?php echo $lead["id"]; ?> " title="Mark this entry as read" href="javascript:ToggleRead(<?php echo $lead["id"] . ",'" . $filter . "'"; ?> );" style="display:<?php echo $lead["is_read"] ? "none" : "inline"; ?> ;"><?php _e("Mark read", "gravityforms"); ?> </a><a id="mark_unread_<?php echo $lead["id"]; ?> " title="<?php _e("Mark this entry as unread", "gravityforms"); ?> " href="javascript:ToggleRead(<?php echo $lead["id"] . ",'" . $filter . "'"; ?> );" style="display:<?php echo $lead["is_read"] ? "inline" : "none"; ?> ;"><?php _e("Mark unread", "gravityforms"); ?> </a> <?php echo GFCommon::current_user_can_any("gravityforms_delete_entries") || GFCommon::akismet_enabled($form_id) ? "|" : ""; ?> </span> <?php if (GFCommon::akismet_enabled($form_id)) { ?> <span class="spam"> <a data-wp-lists='delete:gf_entry_list:lead_row_<?php echo $lead["id"]; ?> ::status=spam&entry=<?php echo $lead["id"]; ?> ' title="<?php _e("Mark this entry as spam", "gravityforms"); ?> " href="<?php echo wp_nonce_url("?page=gf_entries", "gf_delete_entry"); ?> "><?php _e("Spam", "gravityforms"); ?> </a> <?php echo GFCommon::current_user_can_any("gravityforms_delete_entries") ? "|" : ""; ?> </span> <?php } if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <span class="trash"> <a data-wp-lists='delete:gf_entry_list:lead_row_<?php echo $lead["id"]; ?> ::status=trash&entry=<?php echo $lead["id"]; ?> ' title="<?php _e("Move this entry to the trash", "gravityforms"); ?> " href="<?php echo wp_nonce_url("?page=gf_entries", "gf_delete_entry"); ?> "><?php _e("Trash", "gravityforms"); ?> </a> </span> <?php } break; } do_action("gform_entries_first_column_actions", $form_id, $field_id, $value, $lead, $query_string); ?> </div> <?php do_action("gform_entries_first_column", $form_id, $field_id, $value, $lead, $query_string); ?> </td> <?php } else { ?> <td class="<?php echo $nowrap_class; ?> "> <?php echo apply_filters("gform_entries_column_filter", $value, $form_id, $field_id, $lead, $query_string); ?> <?php do_action("gform_entries_column", $form_id, $field_id, $value, $lead, $query_string); ?> </td> <?php } $is_first_column = false; } ?> <td> </td> </tr> <?php } } else { $message = ""; $column_count = sizeof($columns) + 3; switch ($filter) { case "unread": $message = __("This form does not have any unread entries.", "gravityforms"); break; case "star": $message = __("This form does not have any starred entries.", "gravityforms"); break; case "spam": $message = __("This form does not have any spam.", "gravityforms"); $column_count = sizeof($columns) + 2; break; case "trash": $message = __("This form does not have any entries in the trash.", "gravityforms"); $column_count = sizeof($columns) + 2; break; default: $message = __("This form does not have any entries yet.", "gravityforms"); } ?> <tr> <td colspan="<?php echo $column_count; ?> " style="padding:20px;"><?php echo $message; ?> </td> </tr> <?php } ?> </tbody> </table> <div class="clear"></div> <div class="tablenav"> <div class="alignleft actions" style="padding:8px 0 7px 0;"> <label class="hidden" for="bulk_action2"> <?php _e("Bulk action", "gravityforms"); ?> </label> <select name="bulk_action2" id="bulk_action2"> <option value=''><?php _e(" Bulk action ", "gravityforms"); ?> </option> <?php switch ($filter) { case "trash": ?> <option value='restore'><?php _e("Restore", "gravityforms"); ?> </option> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <option value='delete'><?php _e("Delete Permanently", "gravityforms"); ?> </option> <?php } break; case "spam": ?> <option value='unspam'><?php _e("Not Spam", "gravityforms"); ?> </option> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <option value='delete'><?php _e("Delete Permanently", "gravityforms"); ?> </option> <?php } break; default: ?> <option value='mark_read'><?php _e("Mark as Read", "gravityforms"); ?> </option> <option value='mark_unread'><?php _e("Mark as Unread", "gravityforms"); ?> </option> <option value='add_star'><?php _e("Add Star", "gravityforms"); ?> </option> <option value='remove_star'><?php _e("Remove Star", "gravityforms"); ?> </option> <option value='resend_notifications'><?php _e("Resend Notifications", "gravityforms"); ?> </option> <option value='print'><?php _e("Print", "gravityforms"); ?> </option> <?php if (GFCommon::akismet_enabled($form_id)) { ?> <option value='spam'><?php _e("Spam", "gravityforms"); ?> </option> <?php } if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <option value='trash'><?php _e("Trash", "gravityforms"); ?> </option> <?php } } ?> </select> <?php $apply_button = '<input type="submit" class="button" value="' . __("Apply", "gravityforms") . '" onclick="return handleBulkApply(\'bulk_action2\');" />'; echo apply_filters("gform_entry_apply_button", $apply_button); ?> </div> <?php echo self::display_paging_links("footer", $page_links, $first_item_index, $page_size, $lead_count); ?> <div class="clear"></div> </div> </form> </div> <?php }
public static function leads_page($form_id) { global $wpdb; //quit if version of wp is not supported if (!GFCommon::ensure_wp_version()) { return; } echo GFCommon::get_remote_message(); $action = RGForms::post("action"); switch ($action) { case "delete": check_admin_referer('gforms_entry_list', 'gforms_entry_list'); $lead_id = $_POST["action_argument"]; RGFormsModel::delete_lead($lead_id); break; case "bulk": check_admin_referer('gforms_entry_list', 'gforms_entry_list'); $bulk_action = !empty($_POST["bulk_action"]) ? $_POST["bulk_action"] : $_POST["bulk_action2"]; $leads = $_POST["lead"]; switch ($bulk_action) { case "delete": RGFormsModel::delete_leads($leads); break; case "mark_read": RGFormsModel::update_leads_property($leads, "is_read", 1); break; case "mark_unread": RGFormsModel::update_leads_property($leads, "is_read", 0); break; case "add_star": RGFormsModel::update_leads_property($leads, "is_starred", 1); break; case "remove_star": RGFormsModel::update_leads_property($leads, "is_starred", 0); break; } break; case "change_columns": check_admin_referer('gforms_entry_list', 'gforms_entry_list'); $columns = GFCommon::json_decode(stripslashes($_POST["grid_columns"]), true); RGFormsModel::update_grid_column_meta($form_id, $columns); break; } $sort_field = empty($_GET["sort"]) ? 0 : $_GET["sort"]; $sort_direction = empty($_GET["dir"]) ? "DESC" : $_GET["dir"]; $search = RGForms::get("s"); $page_index = empty($_GET["paged"]) ? 0 : intval($_GET["paged"]) - 1; $star = is_numeric(RGForms::get("star")) ? intval(RGForms::get("star")) : null; $read = is_numeric(RGForms::get("read")) ? intval(RGForms::get("read")) : null; $page_size = 20; $first_item_index = $page_index * $page_size; $form = RGFormsModel::get_form_meta($form_id); $sort_field_meta = RGFormsModel::get_field($form, $sort_field); $is_numeric = $sort_field_meta["type"] == "number"; $leads = RGFormsModel::get_leads($form_id, $sort_field, $sort_direction, $search, $first_item_index, $page_size, $star, $read, $is_numeric); $lead_count = RGFormsModel::get_lead_count($form_id, $search, $star, $read); $summary = RGFormsModel::get_form_counts($form_id); $total_lead_count = $summary["total"]; $unread_count = $summary["unread"]; $starred_count = $summary["starred"]; $columns = RGFormsModel::get_grid_columns($form_id, true); $search_qs = empty($search) ? "" : "&s=" . urlencode($search); $sort_qs = empty($sort_field) ? "" : "&sort={$sort_field}"; $dir_qs = empty($sort_field) ? "" : "&dir={$sort_direction}"; $star_qs = $star !== null ? "&star={$star}" : ""; $read_qs = $read !== null ? "&read={$read}" : ""; $page_links = paginate_links(array('base' => admin_url("admin.php") . "?page=gf_entries&view=entries&id={$form_id}&%_%" . $search_qs . $sort_qs . $dir_qs . $star_qs . $read_qs, 'format' => 'paged=%#%', 'prev_text' => __('«'), 'next_text' => __('»'), 'total' => ceil($lead_count / $page_size), 'current' => $page_index + 1, 'show_all' => false)); wp_print_scripts(array("thickbox")); wp_print_styles(array("thickbox")); ?> <script src="<?php echo GFCommon::get_base_url(); ?> /js/jquery.json-1.3.js?ver=<?php echo GFCommon::$version; ?> "></script> <script> function ChangeColumns(columns){ jQuery("#action").val("change_columns"); jQuery("#grid_columns").val(jQuery.toJSON(columns)); tb_remove(); jQuery("#lead_form")[0].submit(); } function Search(sort_field_id, sort_direction, form_id, search, star, read){ var search_qs = search == "" ? "" : "&s=" + search; var star_qs = star == "" ? "" : "&star=" + star; var read_qs = read == "" ? "" : "&read=" + read; var location = "?page=gf_entries&view=entries&id=" + form_id + "&sort=" + sort_field_id + "&dir=" + sort_direction + search_qs + star_qs + read_qs; document.location = location; } function ToggleStar(img, lead_id){ var is_starred = img.src.indexOf("star1.png") >=0 if(is_starred) img.src = img.src.replace("star1.png", "star0.png"); else img.src = img.src.replace("star0.png", "star1.png"); UpdateCount("star_count", is_starred ? -1 : 1); UpdateLeadProperty(lead_id, "is_starred", is_starred ? 0 : 1); } function ToggleRead(lead_id){ var title = jQuery("#lead_row_" + lead_id); marking_read = title.hasClass("lead_unread"); jQuery("#mark_read_" + lead_id).css("display", marking_read ? "none" : "inline"); jQuery("#mark_unread_" + lead_id).css("display", marking_read ? "inline" : "none"); title.toggleClass("lead_unread"); UpdateCount("unread_count", marking_read ? -1 : 1); UpdateLeadProperty(lead_id, "is_read", marking_read ? 1 : 0); } function UpdateLeadProperty(lead_id, name, value){ var mysack = new sack("<?php echo admin_url("admin-ajax.php"); ?> " ); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "rg_update_lead_property" ); mysack.setVar( "rg_update_lead_property", "<?php echo wp_create_nonce("rg_update_lead_property"); ?> " ); mysack.setVar( "lead_id", lead_id); mysack.setVar( "name", name); mysack.setVar( "value", value); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() { alert('<?php echo esc_js(__("Ajax error while setting lead property", "gravityforms")); ?> ' )}; mysack.runAJAX(); return true; } function UpdateCount(element_id, change){ var element = jQuery("#" + element_id); var count = parseInt(element.html()) + change element.html(count + ""); } function DeleteLead(lead_id){ jQuery("#action").val("delete"); jQuery("#action_argument").val(lead_id); jQuery("#lead_form")[0].submit(); return true; } jQuery(document).ready(function(){ jQuery("#lead_search").keyup(function(event){ if(event.keyCode == 13) Search('<?php echo $sort_field; ?> ', '<?php echo $sort_direction; ?> ', <?php echo $form_id; ?> , this.value, '<?php echo $star; ?> ', '<?php echo $read; ?> '); }); }); </script> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css" type="text/css" /> <style> .lead_unread a, .lead_unread td{font-weight: bold;} .row-actions a{ font-weight:normal;} .entry_nowrap{ overflow:hidden; white-space:nowrap; } </style> <div class="wrap"> <img alt="<?php _e("Gravity Forms", "gravityforms"); ?> " src="<?php echo GFCommon::get_base_url(); ?> /images/gravity-entry-icon-32.png" style="float:left; margin:15px 7px 0 0;"/> <h2><?php _e("Entries", "gravityforms"); ?> : <?php echo $form["title"]; ?> </h2> <?php RGForms::top_toolbar(); ?> <form id="lead_form" method="post"> <?php wp_nonce_field('gforms_entry_list', 'gforms_entry_list'); ?> <input type="hidden" value="" name="grid_columns" id="grid_columns" /> <input type="hidden" value="" name="action" id="action" /> <input type="hidden" value="" name="action_argument" id="action_argument" /> <ul class="subsubsub"> <li><a class="<?php echo $star === null && $read === null ? "current" : ""; ?> " href="?page=gf_entries&view=entries&id=<?php echo $form_id; ?> "><?php _e("All", "gravityforms"); ?> <span class="count">(<span id="all_count"><?php echo $total_lead_count; ?> </span>)</span></a> | </li> <li><a class="<?php echo $read !== null ? "current" : ""; ?> " href="?page=gf_entries&view=entries&id=<?php echo $form_id; ?> &read=0"><?php _e("Unread", "gravityforms"); ?> <span class="count">(<span id="unread_count"><?php echo $unread_count; ?> </span>)</span></a> | </li> <li><a class="<?php echo $star !== null ? "current" : ""; ?> " href="?page=gf_entries&view=entries&id=<?php echo $form_id; ?> &star=1"><?php _e("Starred", "gravityforms"); ?> <span class="count">(<span id="star_count"><?php echo $starred_count; ?> </span>)</span></a></li> </ul> <p class="search-box"> <label class="hidden" for="lead_search"><?php _e("Search Entries:", "gravityforms"); ?> </label> <input type="text" id="lead_search" value="<?php echo $search; ?> "><a class="button" id="lead_search_button" href="javascript:Search('<?php echo $sort_field; ?> ', '<?php echo $sort_direction; ?> ', <?php echo $form_id; ?> , jQuery('#lead_search').val(), '<?php echo $star; ?> ', '<?php echo $read; ?> ');"><?php _e("Search", "gravityforms"); ?> </a> </p> <div class="tablenav"> <div class="alignleft actions" style="padding:8px 0 7px 0;"> <label class="hidden" for="bulk_action"> <?php _e("Bulk action", "gravityforms"); ?> </label> <select name="bulk_action" id="bulk_action"> <option value=''><?php _e(" Bulk action ", "gravityforms"); ?> </option> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <option value='delete'><?php _e("Delete", "gravityforms"); ?> </option> <?php } ?> <option value='mark_read'><?php _e("Mark as Read", "gravityforms"); ?> </option> <option value='mark_unread'><?php _e("Mark as Unread", "gravityforms"); ?> </option> <option value='add_star'><?php _e("Add Star", "gravityforms"); ?> </option> <option value='remove_star'><?php _e("Remove Star", "gravityforms"); ?> </option> </select> <?php $apply_button = '<input type="submit" class="button" value="' . __("Apply", "gravityforms") . '" onclick="jQuery(\'#action\').val(\'bulk\');" />'; echo apply_filters("gform_entry_apply_button", $apply_button); ?> </div> <?php //Displaying paging links if appropriate if ($page_links) { ?> <div class="tablenav-pages"> <span class="displaying-num"><?php printf(__("Displaying %d - %d of %d", "gravityforms"), $first_item_index + 1, $first_item_index + $page_size > $lead_count ? $lead_count : $first_item_index + $page_size, $lead_count); ?> </span> <?php echo $page_links; ?> </div> <?php } ?> <div class="clear"></div> </div> <table class="widefat fixed" cellspacing="0"> <thead> <tr> <th scope="col" id="cb" class="manage-column column-cb check-column" style="vertical-align:middle;"><input type="checkbox" class="headercb" /></th> <th scope="col" class="manage-column column-cb check-column" > </th> <?php foreach ($columns as $field_id => $field_info) { $dir = $field_id == 0 ? "DESC" : "ASC"; //default every field so ascending sorting except date_created (id=0) if ($field_id == $sort_field) { //reverting direction if clicking on the currently sorted field $dir = $sort_direction == "ASC" ? "DESC" : "ASC"; } ?> <th scope="col" class="manage-column entry_nowrap" onclick="Search('<?php echo $field_id; ?> ', '<?php echo $dir; ?> ', <?php echo $form_id; ?> , '<?php echo $search; ?> ', '<?php echo $star; ?> ', '<?php echo $read; ?> ');" style="cursor:pointer;"><?php echo esc_html($field_info["label"]); ?> </th> <?php } ?> <th scope="col" align="right" width="50"> <a title="<?php _e("Select Columns", "gravityforms"); ?> " href="<?php echo GFCommon::get_base_url(); ?> /select_columns.php?id=<?php echo $form_id; ?> &TB_iframe=true&height=365&width=600" class="thickbox entries_edit_icon">Edit</a> </th> </tr> </thead> <tfoot> <tr> <th scope="col" id="cb" class="manage-column column-cb check-column" style=""><input type="checkbox" /></th> <th scope="col" id="cb" class="manage-column column-cb check-column" > </th> <?php foreach ($columns as $field_id => $field_info) { $dir = $field_id == 0 ? "DESC" : "ASC"; //default every field so ascending sorting except date_created (id=0) if ($field_id == $sort_field) { //reverting direction if clicking on the currently sorted field $dir = $sort_direction == "ASC" ? "DESC" : "ASC"; } ?> <th scope="col" class="manage-column entry_nowrap" onclick="Search('<?php echo $field_id; ?> ', '<?php echo $dir; ?> ', <?php echo $form_id; ?> , '<?php echo $search; ?> ', '<?php echo $star; ?> ', '<?php echo $read; ?> ');" style="cursor:pointer;"><?php echo esc_html($field_info["label"]); ?> </th> <?php } ?> <th scope="col" style="width:15px;"> <a href="<?php echo GFCommon::get_base_url(); ?> /select_columns.php?id=<?php echo $form_id; ?> &TB_iframe=true&height=350&width=500" class="thickbox entries_edit_icon">Edit</a> </th> </tr> </tfoot> <tbody class="list:user user-list"> <?php if (sizeof($leads) > 0) { $field_ids = array_keys($columns); foreach ($leads as $lead) { ?> <tr id="lead_row_<?php echo $lead["id"]; ?> " class='author-self status-inherit <?php echo $lead["is_read"] ? "" : "lead_unread"; ?> ' valign="top"> <th scope="row" class="check-column"> <input type="checkbox" name="lead[]" value="<?php echo $lead["id"]; ?> " /> </th> <td > <img src="<?php echo GFCommon::get_base_url(); ?> /images/star<?php echo intval($lead["is_starred"]); ?> .png" onclick="ToggleStar(this, <?php echo $lead["id"]; ?> );" /> </td> <?php $is_first_column = true; $nowrap_class = "entry_nowrap"; foreach ($field_ids as $field_id) { $value = RGForms::get($field_id, $lead); //filtering lead value $value = apply_filters("gform_get_field_value", $value, $lead, RGFormsModel::get_field($form, $field_id)); $input_type = !empty($columns[$field_id]["inputType"]) ? $columns[$field_id]["inputType"] : $columns[$field_id]["type"]; switch ($input_type) { case "checkbox": $value = ""; //looping through lead detail values trying to find an item identical to the column label. Mark with a tick if found. $lead_field_keys = array_keys($lead); foreach ($lead_field_keys as $input_id) { //mark as a tick if input label (from form meta) is equal to submitted value (from lead) if (is_numeric($input_id) && absint($input_id) == absint($field_id)) { if ($lead[$input_id] == $columns[$field_id]["label"]) { $value = "<img src='" . GFCommon::get_base_url() . "/images/tick.png'/>"; } else { $field = RGFormsModel::get_field($form, $field_id); if ($field["enableChoiceValue"] || $field["enablePrice"]) { foreach ($field["choices"] as $choice) { if ($choice["value"] == $lead[$field_id]) { $value = "<img src='" . GFCommon::get_base_url() . "/images/tick.png'/>"; break; } else { if ($field["enablePrice"]) { list($val, $price) = explode("|", $lead[$field_id]); if ($val == $choice["value"]) { $value = "<img src='" . GFCommon::get_base_url() . "/images/tick.png'/>"; break; } } } } } } } } break; case "post_image": list($url, $title, $caption, $description) = explode("|:|", $value); if (!empty($url)) { //displaying thumbnail (if file is an image) or an icon based on the extension $thumb = self::get_icon_url($url); $value = "<a href='" . esc_attr($url) . "' target='_blank' title='" . __("Click to view", "gravityforms") . "'><img src='{$thumb}'/></a>"; } break; case "post_category": $ary = explode(":", $value); $cat_name = count($ary) > 0 ? $ary[0] : ""; $value = $cat_name; break; case "fileupload": $file_path = $value; if (!empty($file_path)) { //displaying thumbnail (if file is an image) or an icon based on the extension $thumb = self::get_icon_url($file_path); $file_path = esc_attr($file_path); $value = "<a href='{$file_path}' target='_blank' title='" . __("Click to view", "gravityforms") . "'><img src='{$thumb}'/></a>"; } break; case "source_url": $value = "<a href='" . esc_attr($lead["source_url"]) . "' target='_blank' alt='" . esc_attr($lead["source_url"]) . "' title='" . esc_attr($lead["source_url"]) . "'>.../" . esc_attr(GFCommon::truncate_url($lead["source_url"])) . "</a>"; break; case "textarea": case "post_content": case "post_excerpt": $value = esc_html($value); break; case "date_created": case "payment_date": $value = GFCommon::format_date($value, false); break; case "date": $field = RGFormsModel::get_field($form, $field_id); $value = GFCommon::date_display($value, $field["dateFormat"]); break; case "radio": case "select": $field = RGFormsModel::get_field($form, $field_id); $value = GFCommon::selection_display($value, $field, $lead["currency"]); break; case "total": case "payment_amount": $value = GFCommon::to_money($value, $lead["currency"]); break; case "created_by": if (!empty($value)) { $userdata = get_userdata($value); $value = $userdata->user_login; } break; default: $value = esc_html($value); } $value = apply_filters("gform_entries_field_value", $value, $form_id, $field_id, $lead); $query_string = "gf_entries&view=entry&id={$form_id}&lid={$lead["id"]}{$search_qs}{$sort_qs}{$dir_qs}&paged=" . $page_index + 1; if ($is_first_column) { ?> <td class="column-title" > <a href="admin.php?page=gf_entries&view=entry&id=<?php echo $form_id; ?> &lid=<?php echo $lead["id"] . $search_qs . $sort_qs . $dir_qs; ?> &paged=<?php echo $page_index + 1; ?> "><?php echo $value; ?> </a> <div class="row-actions"> <span class="edit"> <a title="<?php _e("View this entry", "gravityforms"); ?> " href="admin.php?page=gf_entries&view=entry&id=<?php echo $form_id; ?> &lid=<?php echo $lead["id"] . $search_qs . $sort_qs . $dir_qs; ?> &paged=<?php echo $page_index + 1; ?> "><?php _e("View", "gravityforms"); ?> </a> | </span> <span class="edit"> <a id="mark_read_<?php echo $lead["id"]; ?> " title="Mark this entry as read" href="javascript:ToggleRead(<?php echo $lead["id"]; ?> );" style="display:<?php echo $lead["is_read"] ? "none" : "inline"; ?> ;"><?php _e("Mark read", "gravityforms"); ?> </a><a id="mark_unread_<?php echo $lead["id"]; ?> " title="<?php _e("Mark this entry as unread", "gravityforms"); ?> " href="javascript:ToggleRead(<?php echo $lead["id"]; ?> );" style="display:<?php echo $lead["is_read"] ? "inline" : "none"; ?> ;"><?php _e("Mark unread", "gravityforms"); ?> </a> <?php echo GFCommon::current_user_can_any("gravityforms_delete_entries") ? "|" : ""; ?> </span> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <span class="edit"> <?php $delete_link = '<a title="' . __("Delete this entry", "gravityforms") . '" href="javascript:if ( confirm(' . __("'You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete.'", "gravityforms") . ') ) { DeleteLead(' . $lead["id"] . ')};">' . __("Delete", "gravityforms") . '</a>'; echo apply_filters("gform_delete_entry_link", $delete_link); ?> </span> <?php } do_action("gform_entries_first_column_actions", $form_id, $field_id, $value, $lead, $query_string); ?> </div> <?php do_action("gform_entries_first_column", $form_id, $field_id, $value, $lead, $query_string); ?> </td> <?php } else { ?> <td class="<?php echo $nowrap_class; ?> "> <?php echo $value; ?> <?php do_action("gform_entries_column", $form_id, $field_id, $value, $lead, $query_string); ?> </td> <?php } $is_first_column = false; } ?> <td> </td> </tr> <?php } } else { ?> <tr> <td colspan="<?php echo sizeof($columns) + 3; ?> " style="padding:20px;"><?php _e("This form does not have any entries yet.", "gravityforms"); ?> </td> </tr> <?php } ?> </tbody> </table> <div class="clear"></div> <div class="tablenav"> <div class="alignleft actions" style="padding:8px 0 7px 0;"> <label class="hidden" for="bulk_action2"> <?php _e("Bulk action", "gravityforms"); ?> </label> <select name="bulk_action2" id="bulk_action2"> <option value=''><?php _e("Bulk action ", "gravityforms"); ?> </option> <option value='delete'><?php _e("Delete", "gravityforms"); ?> </option> <option value='mark_read'><?php _e("Mark as Read", "gravityforms"); ?> </option> <option value='mark_unread'><?php _e("Mark as Unread", "gravityforms"); ?> </option> <option value='add_star'><?php _e("Add Star", "gravityforms"); ?> </option> <option value='remove_star'><?php _e("Remove Star", "gravityforms"); ?> </option> </select> <?php $apply_button = '<input type="submit" class="button" value="' . __("Apply", "gravityforms") . '" onclick="jQuery(\'#action\').val(\'bulk\');" />'; echo apply_filters("gform_entry_apply_button", $apply_button); ?> </div> <?php //Displaying paging links if appropriate if ($page_links) { ?> <div class="tablenav-pages"> <span class="displaying-num"><?php printf(__("Displaying %d - %d of %d", "gravityforms"), $first_item_index + 1, $first_item_index + $page_size > $lead_count ? $lead_count : $first_item_index + $page_size, $lead_count); ?> </span> <?php echo $page_links; ?> </div> <?php } ?> <div class="clear"></div> </div> </form> </div> <?php }
public static function select_columns_page() { $form_id = $_GET["id"]; if (empty($form_id)) { echo __("Oops! We could not locate your form. Please try again.", "gravityforms"); exit; } //reading form metadata $form = RGFormsModel::get_form_meta($form_id); ?> <html> <head> <?php wp_print_styles(array("wp-admin", "colors-fresh")); wp_print_scripts(array("jquery-ui-sortable")); //adds touchscreen support on mobile devices if (wp_is_mobile()) { wp_print_scripts(array("jquery-touch-punch")); } ?> <style type="text/css"> body {font-family:"Lucida Grande",Verdana,Arial,sans-serif;} #sortable_available, #sortable_selected { list-style-type: none; margin: 0; padding: 2px; height:250px; border:1px solid #eaeaea; -moz-border-radius:4px; -webkit-border-radius:4px; -khtml-border-radius:4px; border-radius:4px background-color:#FFF; overflow: auto; } #sortable_available li, #sortable_selected li { margin: 0 2px 2px 2px; padding:2px; width: 96%; border:1px solid white; cursor:pointer; font-size: 13px;} .field_hover { border: 1px dashed #2175A9!important;} .placeholder{background-color: #FFF0A5; height:20px;} .gcolumn_wrapper { height:290px; padding: 0 20px; } .gcolumn_container_left, .gcolumn_container_right {width:46%;} .gcolumn_container_left {float:left;} .gcolumn_container_right {float:right;} .gform_select_column_heading{font-weight:bold; padding-bottom:7px; font-size:13px;} .column-arrow-mid {float:left; width:45px; height:250px; background-image:url(<?php echo GFCommon::get_base_url(); ?> /wp-content/themes/localedge/images/arrow-rightleft.jpg); background-repeat:no-repeat; background-position:center center; margin-top:26px;} .panel-instructions {border-bottom: 1px solid #dfdfdf; color:#555; font-size:11px; padding: 10px 20px; margin-bottom:6px} div.panel-buttons {margin-top:8px; padding: 0 20px; } div.panel-buttons {*margin-top:0px} /* ie specific */ </style> <script type="text/javascript"> jQuery(document).ready(function() { jQuery("#sortable_available, #sortable_selected").sortable({connectWith: '.sortable_connected', placeholder: 'placeholder'}); jQuery(".sortable_connected li").hover( function(){ jQuery(this).addClass("field_hover"); }, function(){ jQuery(this).removeClass("field_hover"); } ); }); var columns = new Array(); function SelectColumns(){ jQuery("#sortable_selected li").each(function(){ columns.push(this.id); }); self.parent.parent.ChangeColumns(columns); } </script> </head> <body> <?php $columns = RGFormsModel::get_grid_columns($form_id); $field_ids = array_keys($columns); $form = RGFormsModel::get_form_meta($form_id); array_push($form["fields"], array("id" => "id", "label" => __("Entry Id", "gravityforms"))); array_push($form["fields"], array("id" => "date_created", "label" => __("Entry Date", "gravityforms"))); array_push($form["fields"], array("id" => "ip", "label" => __("User IP", "gravityforms"))); array_push($form["fields"], array("id" => "source_url", "label" => __("Source Url", "gravityforms"))); array_push($form["fields"], array("id" => "payment_status", "label" => __("Payment Status", "gravityforms"))); array_push($form["fields"], array("id" => "transaction_id", "label" => __("Transaction Id", "gravityforms"))); array_push($form["fields"], array("id" => "payment_amount", "label" => __("Payment Amount", "gravityforms"))); array_push($form["fields"], array("id" => "payment_date", "label" => __("Payment Date", "gravityforms"))); array_push($form["fields"], array("id" => "created_by", "label" => __("User", "gravityforms"))); $form = self::get_selectable_entry_meta($form); ?> <div class="panel-instructions"><?php _e("Drag & drop to order and select which columns are displayed in the entries table.", "gravityforms"); ?> </div> <div class="gcolumn_wrapper"> <div class="gcolumn_container_left"> <div class="gform_select_column_heading"><?php _e("Active Columns", "gravityforms"); ?> </div> <ul id="sortable_selected" class="sortable_connected"> <?php foreach ($columns as $field_id => $field_info) { ?> <li id="<?php echo $field_id; ?> "><?php echo esc_html($field_info["label"]); ?> </li> <?php } ?> </ul> </div> <div class="column-arrow-mid"></div> <div class="gcolumn_container_right" id="available_column"> <div class="gform_select_column_heading"> <?php _e("Inactive Columns", "gravityforms"); ?> </div> <ul id="sortable_available" class="sortable_connected"> <?php foreach ($form["fields"] as $field) { if (RGFormsModel::get_input_type($field) == "checkbox" && !in_array($field["id"], $field_ids)) { ?> <li id="<?php echo $field["id"]; ?> "><?php echo esc_html(GFCommon::get_label($field)); ?> </li> <?php } if (is_array(rgar($field, "inputs"))) { foreach ($field["inputs"] as $input) { if (!in_array($input["id"], $field_ids) && !($field["type"] == "creditcard" && in_array($input["id"], array(floatval("{$field["id"]}.2"), floatval("{$field["id"]}.3"), floatval("{$field["id"]}.5"))))) { ?> <li id="<?php echo $input["id"]; ?> "><?php echo esc_html(GFCommon::get_label($field, $input["id"])); ?> </li> <?php } } } else { if (!rgar($field, "displayOnly") && !in_array($field["id"], $field_ids) && RGFormsModel::get_input_type($field) != "list") { ?> <li id="<?php echo $field["id"]; ?> "><?php echo esc_html(GFCommon::get_label($field)); ?> </li> <?php } } } ?> </ul> </div> </div> <div class="panel-buttons"> <input type="button" value=" <?php _e("Save", "gravityforms"); ?> " class="button-primary" onclick="SelectColumns();"/> <input type="button" value="<?php _e("Cancel", "gravityforms"); ?> " class="button" onclick="self.parent.tb_remove();"/> </div> </body> </html> <?php }
/** * Renders the column selection page * * @access public * @static */ public static function select_columns_page() { $form_id = $_GET['id']; if (empty($form_id)) { echo __('Oops! We could not locate your form. Please try again.', 'gravityforms'); exit; } // Reading form metadata $form = RGFormsModel::get_form_meta($form_id); ?> <html> <head> <?php wp_print_styles(array('wp-admin', 'colors-fresh')); wp_print_scripts(array('jquery-ui-sortable')); //adds touchscreen support on mobile devices if (wp_is_mobile()) { wp_print_scripts(array('jquery-touch-punch')); } ?> <style type="text/css"> body { font-family: "Lucida Grande", Verdana, Arial, sans-serif; } #sortable_available, #sortable_selected { list-style-type: none; margin: 0; padding: 2px; height: 250px; border: 1px solid #eaeaea; -moz-border-radius: 4px; -webkit-border-radius: 4px; -khtml-border-radius: 4px; border-radius: 4px; background-color: #FFF; overflow: auto; } #sortable_available li, #sortable_selected li { margin: 0 2px 2px 2px; padding: 2px; width: 96%; border: 1px solid white; cursor: pointer; font-size: 13px; } .field_hover { border: 1px dashed #2175A9 !important; } .placeholder { background-color: #FFF0A5; height: 20px; } .gcolumn_wrapper { height: 290px; padding: 0 20px; } .gcolumn_container_left, .gcolumn_container_right { width: 46%; } .gcolumn_container_left { float: left; } .gcolumn_container_right { float: right; } .gform_select_column_heading { font-weight: bold; padding-bottom: 7px; font-size: 13px; } .column-arrow-mid { float: left; width: 45px; height: 250px; background-image: url(<?php echo GFCommon::get_base_url(); ?> /images/arrow-rightleft.png); background-repeat: no-repeat; background-position: center center; margin-top: 26px; } .panel-instructions { border-bottom: 1px solid #dfdfdf; color: #555; font-size: 11px; padding: 10px 20px; margin-bottom: 6px } div.panel-buttons { margin-top: 8px; padding: 0 20px; } div.panel-buttons { *margin-top: 0px } /* ie specific */ </style> <script type="text/javascript"> jQuery(document).ready(function () { jQuery("#sortable_available, #sortable_selected").sortable({connectWith: '.sortable_connected', placeholder: 'placeholder'}); jQuery(".sortable_connected li").hover( function () { jQuery(this).addClass("field_hover"); }, function () { jQuery(this).removeClass("field_hover"); } ); }); var columns = new Array(); function SelectColumns() { jQuery("#sortable_selected li").each(function () { columns.push(this.id); }); self.parent.parent.ChangeColumns(columns); } </script> </head> <body> <?php $columns = RGFormsModel::get_grid_columns($form_id); $field_ids = array_keys($columns); $form = RGFormsModel::get_form_meta($form_id); array_push($form['fields'], array('id' => 'id', 'label' => __('Entry Id', 'gravityforms'))); array_push($form['fields'], array('id' => 'date_created', 'label' => __('Entry Date', 'gravityforms'))); array_push($form['fields'], array('id' => 'ip', 'label' => __('User IP', 'gravityforms'))); array_push($form['fields'], array('id' => 'source_url', 'label' => __('Source Url', 'gravityforms'))); array_push($form['fields'], array('id' => 'payment_status', 'label' => __('Payment Status', 'gravityforms'))); array_push($form['fields'], array('id' => 'transaction_id', 'label' => __('Transaction Id', 'gravityforms'))); array_push($form['fields'], array('id' => 'payment_amount', 'label' => __('Payment Amount', 'gravityforms'))); array_push($form['fields'], array('id' => 'payment_date', 'label' => __('Payment Date', 'gravityforms'))); array_push($form['fields'], array('id' => 'created_by', 'label' => __('User', 'gravityforms'))); $form = self::get_selectable_entry_meta($form); $form = GFFormsModel::convert_field_objects($form); ?> <div class="panel-instructions"><?php esc_html_e('Drag & drop to order and select which columns are displayed in the entries table.', 'gravityforms'); ?> </div> <div class="gcolumn_wrapper"> <div class="gcolumn_container_left"> <div class="gform_select_column_heading"><?php esc_html_e('Active Columns', 'gravityforms'); ?> </div> <ul id="sortable_selected" class="sortable_connected"> <?php foreach ($columns as $field_id => $field_info) { ?> <li id="<?php echo esc_attr($field_id); ?> "><?php echo esc_html($field_info['label']); ?> </li> <?php } ?> </ul> </div> <div class="column-arrow-mid"></div> <div class="gcolumn_container_right" id="available_column"> <div class="gform_select_column_heading"> <?php esc_html_e('Inactive Columns', 'gravityforms'); ?> </div> <ul id="sortable_available" class="sortable_connected"> <?php foreach ($form['fields'] as $field) { /* @var GF_Field $field */ if (RGFormsModel::get_input_type($field) == 'checkbox' && !in_array($field->id, $field_ids)) { ?> <li id="<?php echo esc_attr($field->id); ?> "><?php echo esc_html(GFCommon::get_label($field)); ?> </li> <?php } $inputs = $field->get_entry_inputs(); if (is_array($inputs)) { foreach ($inputs as $input) { if (rgar($input, 'isHidden')) { continue; } if (!in_array($input['id'], $field_ids) && !($field->type == 'creditcard' && in_array($input['id'], array(floatval("{$field->id}.2"), floatval("{$field->id}.3"), floatval("{$field->id}.5"))))) { ?> <li id="<?php echo esc_attr($input['id']); ?> "><?php echo esc_html(GFCommon::get_label($field, $input['id'])); ?> </li> <?php } } } else { if (!$field->displayOnly && !in_array($field->id, $field_ids) && RGFormsModel::get_input_type($field) != 'list') { ?> <li id="<?php echo $field->id; ?> "><?php echo esc_html(GFCommon::get_label($field)); ?> </li> <?php } } } ?> </ul> </div> </div> <div class="panel-buttons"> <input type="button" value=" <?php esc_attr_e('Save', 'gravityforms'); ?> " class="button-primary" onclick="SelectColumns();" onkeypress="SelectColumns();" /> <input type="button" value="<?php esc_attr_e('Cancel', 'gravityforms'); ?> " class="button" onclick="self.parent.tb_remove();" onkeypress="self.parent.tb_remove();" /> </div> </body> </html> <?php }
function get_columns() { $args = $this->get_filter_args(); $columns['cb'] = esc_html__('Checkbox', 'gravityflow'); if ($this->id_column) { $columns['id'] = esc_html__('ID', 'gravityflow'); } $columns['date_created'] = esc_html__('Date', 'gravityflow'); if (!isset($args['form-id'])) { $columns['form_id'] = esc_html__('Form', 'gravityflow'); } if ($this->submitter_column) { $columns['created_by'] = esc_html__('Submitter', 'gravityflow'); } if ($this->step_column) { $columns['workflow_step'] = esc_html__('Step', 'gravityflow'); } if ($this->status_column) { $columns['workflow_final_status'] = esc_html__('Status', 'gravityflow'); } if (!empty($args['form-id']) && !empty($this->field_ids)) { $form = GFAPI::get_form($args['form-id']); $grid_columns = RGFormsModel::get_grid_columns($args['form-id'], true); $field_ids = array_keys($grid_columns); foreach ($this->field_ids as $field_id) { $field = GFFormsModel::get_field($form, $field_id); if (in_array(GFFormsModel::get_input_type($field), array('workflow_user', 'workflow_assignee_select', 'workflow_role'))) { continue; } $field_id = trim($field_id); if (in_array($field_id, $field_ids)) { $field_info = $grid_columns[$field_id]; $columns[$field_id] = $field_info['label']; } } } if ($step_id = $this->get_filter_step_id()) { unset($columns['workflow_step']); $step = gravity_flow()->get_step($step_id); $assignees = $step->get_assignees(); foreach ($assignees as $assignee) { $meta_key = sprintf('workflow_%s_%s', $assignee->get_type(), $assignee->get_id()); $columns[$meta_key] = $assignee->get_display_name(); } } if ($this->last_updated) { $columns['workflow_timestamp'] = esc_html__('Last Updated', 'gravityflow'); } return $columns; }
function make_directory($atts) { global $wpdb, $wp_rewrite, $post, $wpdb, $directory_shown, $kws_gf_scripts, $kws_gf_styles; if (!class_exists('GFEntryDetail')) { @(require_once GFCommon::get_base_path() . "/entry_detail.php"); } if (!class_exists('GFCommon')) { @(require_once WP_PLUGIN_DIR . "/gravityforms/common.php"); } if (!class_exists('RGFormsModel')) { @(require_once WP_PLUGIN_DIR . "/gravityforms/forms_model.php"); } //quit if version of wp is not supported if (!class_exists('GFCommon') || !GFCommon::ensure_wp_version()) { return; } ob_start(); // Using ob_start() allows us to use echo instead of $output .= foreach ($atts as $key => $att) { if (strtolower($att) == 'false') { $atts[$key] = false; } if (strtolower($att) == 'true') { $atts[$key] = true; } } $atts['approved'] = isset($atts['approved']) ? $atts['approved'] : -1; if (!empty($atts['lightboxsettings']) && is_string($atts['lightboxsettings'])) { $atts['lightboxsettings'] = explode(',', $atts['lightboxsettings']); } $options = self::directory_defaults($atts); // Make sure everything is on the same page. if (is_array($options['lightboxsettings'])) { foreach ($options['lightboxsettings'] as $key => $value) { if (is_numeric($key)) { $options['lightboxsettings']["{$value}"] = $value; unset($options['lightboxsettings']["{$key}"]); } } } extract($options); $form_id = $form; $form = RGFormsModel::get_form_meta($form_id); if (empty($form)) { return; } $sort_field = empty($_GET["sort"]) ? $sort : $_GET["sort"]; $sort_direction = empty($_GET["dir"]) ? $dir : $_GET["dir"]; $search_query = !empty($_GET["gf_search"]) ? $_GET["gf_search"] : null; $start_date = !empty($_GET["start_date"]) ? $_GET["start_date"] : $start_date; $end_date = !empty($_GET["end_date"]) ? $_GET["end_date"] : $end_date; $page_index = empty($_GET["page"]) ? $startpage - 1 : intval($_GET["page"]) - 1; $star = isset($_GET["star"]) && is_numeric($_GET["star"]) ? intval($_GET["star"]) : null; $read = isset($_GET["read"]) && is_numeric($_GET["read"]) ? intval($_GET["read"]) : null; $first_item_index = $page_index * $page_size; $link_params = array(); if (!empty($page_index)) { $link_params['page'] = $page_index; } $formaction = remove_query_arg(array('gf_search', 'sort', 'dir', 'page', 'edit'), add_query_arg($link_params)); $tableclass .= !empty($jstable) ? ' tablesorter' : ''; $title = $form["title"]; $sort_field_meta = RGFormsModel::get_field($form, $sort_field); $is_numeric = $sort_field_meta["type"] == "number"; $columns = RGFormsModel::get_grid_columns($form_id, true); $approvedcolumn = false; if ($approved || !empty($smartapproval) && $approved === -1) { $approvedcolumn = self::get_approved_column($form); } if (!empty($smartapproval) && $approved === -1 && !empty($approvedcolumn)) { $approved = true; // If there is an approved column, turn on approval } else { $approved = false; // Otherwise, show entries as normal. } $entrylinkcolumns = self::get_entrylink_column($form, $entry); $adminonlycolumns = self::get_admin_only($form); // // Show only a single entry // if (!empty($entry) && ($detail = self::process_lead_detail(true, $entryback, $showadminonly, $adminonlycolumns, $approvedcolumn, $options, $entryonly))) { echo $detail; if (!empty($entryonly)) { do_action('kws_gf_after_directory', do_action('kws_gf_after_directory_form_' . $form_id, $form, compact($approved, $sort_field, $sort_direction, $search_query, $first_item_index, $page_size, $star, $read, $is_numeric, $start_date, $end_date))); $content = ob_get_contents(); // Get the output ob_end_clean(); // Clear the cache // If the form is form #2, two filters are applied: `kws_gf_directory_output_2` and `kws_gf_directory_output` $content = apply_filters('kws_gf_directory_output', apply_filters('kws_gf_directory_output_' . $form_id, self::pseudo_filter($content, $directoryview))); return $content; } } // // Or start to generate the directory // $leads = GFDirectory::get_leads($form_id, $sort_field, $sort_direction, $search_query, $first_item_index, $page_size, $star, $read, $is_numeric, $start_date, $end_date, 'active', $approvedcolumn, $limituser); # if(!$showadminonly) { $columns = self::remove_admin_only($columns, $adminonlycolumns, $approvedcolumn, false, false, $form); $leads = self::remove_admin_only($leads, $adminonlycolumns, $approvedcolumn, true, false, $form); # } // Allow lightbox to determine whether showadminonly is valid without passing a query string in URL if ($entry === true && !empty($lightboxsettings['entry'])) { if (get_transient('gf_form_' . $form_id . '_post_' . $post->ID . '_showadminonly') != $showadminonly) { set_transient('gf_form_' . $form_id . '_post_' . $post->ID . '_showadminonly', $showadminonly, 60 * 60); } } else { delete_transient('gf_form_' . $form_id . '_post_' . $post->ID . '_showadminonly'); } // Get a list of query args for the pagination links if (!empty($search_query)) { $args["gf_search"] = urlencode($search_query); } if (!empty($sort_field)) { $args["sort"] = $sort_field; } if (!empty($sort_direction)) { $args["dir"] = $sort_direction; } if (!empty($star)) { $args["star"] = $star; } if ($page_size > 0) { $lead_count = self::get_lead_count($form_id, $search_query, $star, $read, $approvedcolumn, $approved, $leads, $start_date, $end_date, $limituser); $page_links = array('base' => @add_query_arg('page', '%#%'), 'format' => '&page=%#%', 'add_args' => $args, 'prev_text' => $prev_text, 'next_text' => $next_text, 'total' => ceil($lead_count / $page_size), 'current' => $page_index + 1, 'show_all' => $pagelinksshowall); $page_links = apply_filters('kws_gf_results_pagination', $page_links); $page_links = paginate_links($page_links); } else { // Showing all results $page_links = false; $lead_count = sizeof($leads); } if (!isset($directory_shown)) { $directory_shown = true; if (!empty($lightboxsettings['images']) || !empty($lightboxsettings['entry'])) { if (!is_array($kws_gf_scripts) || !in_array('colorbox', $kws_gf_scripts)) { wp_print_scripts(array("colorbox")); } if (!is_array($kws_gf_styles) || !in_array('colorbox', $kws_gf_styles)) { wp_print_styles(array("colorbox")); } } if (!empty($jstable)) { ?> <?php if (!in_array('tablesorter-blue', $kws_gf_styles)) { ?> <link href="<?php echo WP_PLUGIN_URL . "/" . basename(dirname(__FILE__)); ?> /tablesorter/themes/blue/style.css" rel="stylesheet" /> <?php } if (!in_array('tablesorter-min', $kws_gf_scripts)) { ?> <script type="text/javascript" src="<?php echo WP_PLUGIN_URL . "/" . basename(dirname(__FILE__)); ?> /tablesorter/jquery.tablesorter.min.js"></script> <?php } } ?> <script type="text/javascript"> <?php if (!empty($lightboxsettings['images']) || !empty($lightboxsettings['entry'])) { ?> var tb_pathToImage = "<?php echo site_url('/wp-includes/js/thickbox/loadingAnimation.gif'); ?> "; var tb_closeImage = "<?php echo site_url('/wp-includes/js/thickbox/tb-close.png'); ?> "; var tb_height = 600; <?php } ?> function not_empty(variable) { if(variable == '' || variable == null || variable == 'undefined' || typeof(variable) == 'undefined') { return false; } else { return true; } } <?php if (!empty($jstable)) { ?> jQuery(document).ready(function($) { jQuery('.tablesorter').each(function() { $(this).tablesorter(<?php echo apply_filters('kws_gf_directory_tablesorter_options', ''); ?> ); }); }); <?php } else { if (isset($jssearch) && $jssearch) { ?> function Search(search, sort_field_id, sort_direction){ if(not_empty(search)) { var search = "&gf_search=" + encodeURIComponent(search); } else { var search = ''; } if(not_empty(sort_field_id)) { var sort = "&sort=" + sort_field_id; } else { var sort = ''; } if(not_empty(sort_direction)) { var dir = "&dir=" + sort_direction; } else { var dir = ''; } var page = '<?php if ($wp_rewrite->using_permalinks()) { echo '?'; } else { echo '&'; } ?> page='+<?php echo isset($_GET['page']) ? intval($_GET['page']) : '"1"'; ?> ; var location = "<?php echo get_permalink($post->ID); ?> "+page+search+sort+dir; document.location = location; } <?php } } ?> </script> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css" type="text/css" /> <?php } ?> <div class="wrap"> <?php if ($icon) { ?> <img alt="<?php _e("Gravity Forms", "gravity-forms-addons"); ?> " src="<?php echo GFCommon::get_base_url(); ?> /images/gravity-title-icon-32.png" style="float:left; margin:15px 7px 0 0;"/><?php } ?> <?php if ($titleshow) { ?> <h2><?php echo $titleprefix . $title; ?> </h2><?php } ?> <?php if ($search && ($lead_count > 0 || !empty($_GET['gf_search']))) { ?> <form id="lead_form" method="get" action="<?php echo $formaction; ?> "> <p class="search-box"> <label class="hidden" for="lead_search"><?php _e("Search Entries:", "gravity-forms-addons"); ?> </label> <input type="text" name="gf_search" id="lead_search" value="<?php echo $search_query; ?> "<?php if ($searchtabindex) { echo ' tabindex="' . intval($searchtabindex) . '"'; } ?> /> <?php if (!empty($_GET['p'])) { ?> <input name="p" type="hidden" value="<?php echo esc_html($_GET['p']); ?> " /> <?php } ?> <input type="submit" class="button" id="lead_search_button" value="<?php _e("Search", "gravity-forms-addons"); ?> "<?php if ($searchtabindex) { echo ' tabindex="' . intval($searchtabindex++) . '"'; } ?> /> </p> </form> <?php } //Displaying paging links if appropriate if ($lead_count > 0 && $showcount || $page_links) { if ($lead_count == 0) { $first_item_index--; } ?> <div class="tablenav"> <div class="tablenav-pages"> <?php if ($showcount) { if ($first_item_index + $page_size > $lead_count || $page_size <= 0) { $second_part = $lead_count; } else { $second_part = $first_item_index + $page_size; } ?> <span class="displaying-num"><?php printf(__("Displaying %d - %d of %d", "gravity-forms-addons"), $first_item_index + 1, $second_part, $lead_count); ?> </span> <?php } if ($page_links) { echo $page_links; } ?> </div> <div class="clear"></div> </div> <?php } do_action('kws_gf_before_directory_after_nav', do_action('kws_gf_before_directory_after_nav_form_' . $form_id, $form, $leads, compact($approved, $sort_field, $sort_direction, $search_query, $first_item_index, $page_size, $star, $read, $is_numeric, $start_date, $end_date))); ?> <table class="<?php echo $tableclass; ?> " cellspacing="0"<?php if (!empty($tablewidth)) { echo ' width="' . $tablewidth . '"'; } echo $tablestyle ? ' style="' . $tablestyle . '"' : ''; ?> > <?php if ($thead) { ?> <thead> <tr> <?php $addressesExist = false; foreach ($columns as $field_id => $field_info) { $dir = $field_id == 0 ? "DESC" : "ASC"; //default every field so ascending sorting except date_created (id=0) if ($field_id == $sort_field) { //reverting direction if clicking on the currently sorted field $dir = $sort_direction == "ASC" ? "DESC" : "ASC"; } if (is_array($adminonlycolumns) && !in_array($field_id, $adminonlycolumns) || is_array($adminonlycolumns) && in_array($field_id, $adminonlycolumns) && $showadminonly || !$showadminonly) { if ($field_info['type'] == 'address' && $appendaddress && $hideaddresspieces) { $addressesExist = true; continue; } ?> <?php if (isset($jssearch) && $jssearch && !isset($jstable)) { ?> <th scope="col" class="manage-column" onclick="Search('<?php echo $search_query; ?> ', '<?php echo $field_id; ?> ', '<?php echo $dir; ?> ');" style="cursor:pointer;"><?php } elseif (isset($jstable) && $jstable) { ?> <th scope="col" class="manage-column"> <?php } else { ?> <th scope="col" class="manage-column"> <a href="<?php $searchpage = isset($_GET['page']) ? intval($_GET['page']) : 1; echo add_query_arg(array('gf_search' => $search_query, 'sort' => $field_id, 'dir' => $dir, 'page' => $searchpage), get_permalink($post->ID)); ?> "><?php } if ($field_info['type'] == 'id' && $entry) { $label = $entryth; } else { $label = $field_info["label"]; } $label = apply_filters('kws_gf_directory_th', apply_filters('kws_gf_directory_th_' . $field_id, apply_filters('kws_gf_directory_th_' . sanitize_title($label), $label))); echo esc_html($label); if (!isset($jssearch) || !$jssearch && empty($jstable)) { ?> </a> <?php } ?> </th> <?php } } if ($appendaddress && $addressesExist) { ?> <th scope="col" class="manage-column" onclick="Search('<?php echo $search_query; ?> ', '<?php echo $field_id; ?> ', '<?php echo $dir; ?> ');" style="cursor:pointer;"><?php $label = apply_filters('kws_gf_directory_th', apply_filters('kws_gf_directory_th_address', 'Address')); echo esc_html($label); ?> </th> <?php } ?> </tr> </thead> <?php } ?> <tbody class="list:user user-list"> <?php if (sizeof($leads) > 0 && $lead_count > 0) { $field_ids = array_keys($columns); $evenodd = ''; foreach ($leads as $lead) { flush(); echo "\n\t\t\t\t\t\t"; $address = array(); $celltitle = ''; if ($approved) { $leadapproved = self::check_approval($lead, $approvedcolumn); } if (isset($leadapproved) && $leadapproved && $approved || !$approved) { $target = ''; if ($linknewwindow && empty($lightboxsettings['images'])) { $target = ' target="_blank"'; } $valignattr = ''; if ($valign && $directoryview == 'table') { $valignattr = ' valign="' . $valign . '"'; } $nofollow = ''; if ($nofollowlinks) { $nofollow = ' rel="nofollow"'; } $evenodd = $evenodd == ' odd' ? ' even' : ' odd'; $evenodd = apply_filters('kws_gf_directory_evenodd', $evenodd); ?> <tr<?php if ($showrowids) { ?> id="lead_row_<?php echo $lead["id"]; ?> " <?php } ?> class='<?php echo trim($rowclass . $evenodd); echo $lead["is_starred"] ? " featured" : ""; ?> '<?php echo $rowstyle ? ' style="' . $rowstyle . '"' : ''; echo $valignattr; ?> ><?php $class = ""; $is_first_column = true; $full_address = ''; foreach ($field_ids as $field_id) { $lightboxclass = ''; if (!empty($lightboxsettings['images'])) { $lightboxclass = ' class="thickbox colorbox lightbox"'; } $value = isset($lead[$field_id]) ? $lead[$field_id] : ''; $input_type = !empty($columns[$field_id]["inputType"]) ? $columns[$field_id]["inputType"] : $columns[$field_id]["type"]; switch ($input_type) { case "address": $address['id'] = floor((int) $field_id); $address[$field_id] = $value; if ($hideaddresspieces) { $value = NULL; break; } break; case "checkbox": $value = ""; //looping through lead detail values trying to find an item identical to the column label. Mark with a tick if found. $lead_field_keys = array_keys($lead); foreach ($lead_field_keys as $input_id) { //mark as a tick if input label (from form meta) is equal to submitted value (from lead) if (is_numeric($input_id) && absint($input_id) == absint($field_id) && $lead[$input_id] == $columns[$field_id]["label"]) { $value = "<img src='" . GFCommon::get_base_url() . "/images/tick.png'/>"; } } break; case "fileupload": case "post_image": $valueArray = explode("|:|", $value); @(list($url, $title, $caption, $description) = $valueArray); $size = ''; if (!empty($url)) { //displaying thumbnail (if file is an image) or an icon based on the extension $icon = self::get_icon_url($url); if (!preg_match('/icon\\_image\\.gif/ism', $icon)) { $src = $icon; if (!empty($getimagesize)) { $size = @getimagesize($src); $img = "<img src='{$src}' {$size[3]}/>"; } else { $size = false; $img = "<img src='{$src}' />"; } } else { // No thickbox for non-images please switch (strtolower(trim($postimage))) { case 'image': $src = $url; break; case 'icon': default: $src = $icon; break; } if (!empty($getimagesize)) { $size = @getimagesize($src); } else { $size = false; } } $img = array('src' => $src, 'size' => $size, 'title' => $title, 'caption' => $caption, 'description' => $description, 'url' => esc_attr($url), 'code' => isset($size[3]) ? "<img src='{$src}' {$size[3]} />" : "<img src='{$src}' />"); $img = apply_filters('kws_gf_directory_lead_image', apply_filters('kws_gf_directory_lead_image_' . $postimage, apply_filters('kws_gf_directory_lead_image_' . $lead['id'], $img))); if (in_array('images', $lightboxsettings) || !empty($lightboxsettings['images'])) { $lightboxclass .= ' rel="directory_all directory_images"'; } $value = "<a href='{$url}'{$target}{$lightboxclass}>{$img['code']}</a>"; } break; case "source_url": if (in_array('urls', $lightboxsettings) || !empty($lightboxsettings['urls'])) { $lightboxclass .= ' rel="directory_all directory_urls"'; } if ($linkwebsite) { $value = "<a href='" . esc_attr($lead["source_url"]) . "'{$target}{$lightboxclass} title='" . esc_attr($lead["source_url"]) . "'{$nofollow}>.../" . esc_attr(GFCommon::truncate_url($lead["source_url"])) . "</a>"; } else { $value = esc_attr(GFCommon::truncate_url($lead["source_url"])); } break; case "textarea": case "post_content": case "post_excerpt": if ($fulltext) { $long_text = $value = ""; if (isset($lead[$field_id]) && strlen($lead[$field_id]) >= GFORMS_MAX_FIELD_LENGTH) { $long_text = get_gf_field_value_long($lead["id"], $field_id); } if (isset($lead[$field_id])) { $value = !empty($long_text) ? $long_text : $lead[$field_id]; } if ($wpautop) { $value = wpautop($value); } } else { $value = esc_html($value); } break; case "date_created": $value = GFCommon::format_date($value, false, $datecreatedformat); break; case "date": $field = RGFormsModel::get_field($form, $field_id); if ($dateformat) { $value = GFCommon::date_display($value, $dateformat); } else { $value = GFCommon::date_display($value, $field["dateFormat"]); } break; case "id": $linkClass = ''; break; case "list": $field = RGFormsModel::get_field($form, $field_id); $value = GFCommon::get_lead_field_display($field, $value); break; default: $input_type = 'text'; if (is_email($value) && $linkemail) { $value = "<a href='mailto:{$value}'{$nofollow}>{$value}</a>"; } elseif (preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $value) && $linkwebsite) { $href = $value; if (!empty($lightboxsettings['images'])) { if (in_array('urls', $lightboxsettings) || !empty($lightboxsettings['urls'])) { $lightboxclass .= ' rel="directory_all directory_urls"'; } $linkClass = $lightboxclass; } else { $linkClass = isset($linkClass) ? $linkClass : ''; } if ($truncatelink) { $value = apply_filters('kws_gf_directory_anchor_text', $value); } $value = "<a href='{$href}'{$nofollow}{$target}{$linkClass}>{$value}</a>"; } else { $value = esc_html($value); } } if ($is_first_column) { echo "\n"; } if ($value !== NULL) { if (isset($columns["{$field_id}"]['label']) && $hovertitle || $directoryview !== 'table') { $celltitle = ' title="' . esc_html(apply_filters('kws_gf_directory_th', apply_filters('kws_gf_directory_th_' . $field_id, apply_filters('kws_gf_directory_th_' . sanitize_title($columns["{$field_id}"]['label']), $columns["{$field_id}"]['label'])))) . '"'; } else { $celltitle = ''; } echo "\t\t\t\t\t\t\t"; ?> <td<?php echo empty($class) ? ' class="' . $input_type . '"' : ' class="' . $input_type . ' ' . $class . '"'; echo $valignattr; echo $celltitle; ?> ><?php $value = empty($value) ? ' ' : $value; if (isset($entrylinkcolumns[floor($field_id)])) { $type = $entrylinkcolumns[floor($field_id)]; if ($input_type == 'id' && $entry) { $linkvalue = $entrylink; } elseif ($type === 'label') { $linkvalue = $columns["{$field_id}"]['label']; } elseif (!empty($type) && $type !== 'on') { $linkvalue = str_replace('%value%', $value, $type); } else { $linkvalue = $value; } $value = self::make_entry_link($options, $linkvalue, $lead['id'], $form_id, $field_id); } $value = apply_filters('kws_gf_directory_value', apply_filters('kws_gf_directory_value_' . $input_type, apply_filters('kws_gf_directory_value_' . $field_id, $value))); echo $value; ?> </td><?php echo "\n"; $is_first_column = false; } } if (is_array($address) && !empty($address) && $appendaddress) { $address = apply_filters('kws_gf_directory_td_address', $address, $linknewwindow); if (!is_array($address)) { echo "\t\t\t\t\t\t\t" . '<td class="address" title="' . esc_html(apply_filters('kws_gf_directory_th', apply_filters('kws_gf_directory_th_address', 'Address'))) . '">' . $address . '</td>'; } } ?> </tr> <?php } } } else { ?> <tr> <td colspan="<?php echo sizeof($columns); ?> " style="padding:20px;"><?php if ($search_query) { _e("This search returned no results.", "gravity-forms-addons"); } elseif ($limituser) { _e("This form does not have any visible entries.", "gravity-forms-addons"); } else { _e("This form does not have any entries yet.", "gravity-forms-addons"); } ?> </td> </tr> <?php } ?> </tbody> <?php if ($tfoot) { if (isset($jssearch) && $jssearch && !isset($jstable)) { $th = '<th scope="col" class="manage-column" onclick="Search(\'' . $search_query . '\', \'' . $field_id . '\', \'' . $dir . '\');" style="cursor:pointer;">'; } else { $th = '<th scope="col" class="manage-column">'; } ?> <tfoot> <tr> <?php $addressesExist = false; foreach ($columns as $field_id => $field_info) { $dir = $field_id == 0 ? "DESC" : "ASC"; //default every field so ascending sorting except date_created (id=0) if ($field_id == $sort_field) { //reverting direction if clicking on the currently sorted field $dir = $sort_direction == "ASC" ? "DESC" : "ASC"; } if (is_array($adminonlycolumns) && !in_array($field_id, $adminonlycolumns) || is_array($adminonlycolumns) && in_array($field_id, $adminonlycolumns) && $showadminonly || !$showadminonly) { if ($field_info['type'] == 'address' && $appendaddress && $hideaddresspieces) { $addressesExist = true; continue; } echo $th; if ($field_info['type'] == 'id' && $entry) { $label = $entryth; } else { $label = $field_info["label"]; } $label = apply_filters('kws_gf_directory_th', apply_filters('kws_gf_directory_th_' . $field_id, apply_filters('kws_gf_directory_th_' . sanitize_title($label), $label))); echo esc_html($label); ?> </th> <?php } } if ($appendaddress && $addressesExist) { ?> <th scope="col" class="manage-column" onclick="Search('<?php echo $search_query; ?> ', '<?php echo $field_id; ?> ', '<?php echo $dir; ?> ');" style="cursor:pointer;"><?php $label = apply_filters('kws_gf_directory_th', apply_filters('kws_gf_directory_th_address', 'Address')); echo esc_html($label); ?> </th> <?php } ?> </tr> <?php if (!empty($credit)) { self::get_credit_link(sizeof($columns)); } ?> </tfoot> <?php } ?> </table> <?php do_action('kws_gf_after_directory_before_nav', do_action('kws_gf_after_directory_before_nav_form_' . $form_id, $form, $leads, compact($approved, $sort_field, $sort_direction, $search_query, $first_item_index, $page_size, $star, $read, $is_numeric, $start_date, $end_date))); //Displaying paging links if appropriate if ($lead_count > 0 && $showcount || $page_links) { if ($lead_count == 0) { $first_item_index--; } ?> <div class="tablenav"> <div class="tablenav-pages"> <?php if ($showcount) { if ($first_item_index + $page_size > $lead_count || $page_size <= 0) { $second_part = $lead_count; } else { $second_part = $first_item_index + $page_size; } ?> <span class="displaying-num"><?php printf(__("Displaying %d - %d of %d", "gravity-forms-addons"), $first_item_index + 1, $second_part, $lead_count); ?> </span> <?php } if ($page_links) { echo $page_links; } ?> </div> <div class="clear"></div> </div> <?php } ?> </div> <?php if (empty($credit)) { echo "\n" . '<!-- Directory generated by Gravity Forms Directory & Addons : http://wordpress.org/extend/plugins/gravity-forms-addons/ -->' . "\n"; } do_action('kws_gf_after_directory', do_action('kws_gf_after_directory_form_' . $form_id, $form, $leads, compact($approved, $sort_field, $sort_direction, $search_query, $first_item_index, $page_size, $star, $read, $is_numeric, $start_date, $end_date))); $content = ob_get_contents(); // Get the output ob_end_clean(); // Clear the cache // If the form is form #2, two filters are applied: `kws_gf_directory_output_2` and `kws_gf_directory_output` $content = apply_filters('kws_gf_directory_output', apply_filters('kws_gf_directory_output_' . $form_id, self::pseudo_filter($content, $directoryview))); return $content; // Return it! }
public static function display($args) { global $current_user; $filter = apply_filters('gravityflow_inbox_filter', array('form_id' => 0, 'start_date' => '', 'end_date' => '')); $field_ids = apply_filters('gravityflow_inbox_fields', array()); $defaults = array('display_empty_fields' => true, 'id_column' => true, 'submitter_column' => true, 'step_column' => true, 'check_permissions' => true, 'form_id' => absint(rgar($filter, 'form_id')), 'field_ids' => $field_ids, 'detail_base_url' => admin_url('admin.php?page=gravityflow-inbox&view=entry'), 'last_updated' => false); $args = array_merge($defaults, $args); if ($current_user->ID > 0) { $filter_key = 'user_id_' . $current_user->ID; } elseif ($token = gravity_flow()->decode_access_token()) { $filter_key = 'email_' . gravity_flow()->parse_token_assignee($token)->get_id(); } $entries = array(); $form_id = $args['form_id']; $total_count = 0; if (!empty($filter_key)) { $field_filters[] = array('key' => 'workflow_' . $filter_key, 'value' => 'pending'); $user_roles = gravity_flow()->get_user_roles(); foreach ($user_roles as $user_role) { $field_filters[] = array('key' => 'workflow_role_' . $user_role, 'value' => 'pending'); } $field_filters['mode'] = 'any'; $search_criteria['field_filters'] = $field_filters; $search_criteria['status'] = 'active'; $form_ids = $args['form_id'] ? $args['form_id'] : gravity_flow()->get_workflow_form_ids(); if (!empty($form_ids)) { $paging = array('page_size' => 150); $entries = GFAPI::get_entries($form_ids, $search_criteria, null, $paging, $total_count); } } if (sizeof($entries) > 0) { $id_style = $args['id_column'] ? '' : 'style="display:none;"'; $submitter_style = $args['submitter_column'] ? '' : 'style="display:none;"'; $step_style = $args['step_column'] ? '' : 'style="display:none;"'; ?> <table id="gravityflow-inbox" class="widefat gravityflow-inbox" cellspacing="0" style="border:0px;"> <thead> <tr> <th <?php echo $id_style; ?> data-label="<?php esc_html_e('ID', 'gravityflow'); ?> "><?php esc_html_e('ID', 'gravityflow'); ?> </th> <?php if (empty($form_id)) { ?> <th><?php esc_html_e('Form', 'gravityflow'); ?> </th> <?php } ?> <th <?php echo $submitter_style; ?> ><?php esc_html_e('Submitter', 'gravityflow'); ?> </th> <th <?php echo $step_style; ?> ><?php esc_html_e('Step', 'gravityflow'); ?> </th> <th><?php esc_html_e('Submitted', 'gravityflow'); ?> </th> <?php if ($args['form_id'] && is_array($args['field_ids'])) { $columns = RGFormsModel::get_grid_columns($args['form_id'], true); $field_ids = array_keys($columns); foreach ($args['field_ids'] as $field_id) { $field_id = trim($field_id); if (in_array($field_id, $field_ids)) { $field_info = $columns[$field_id]; echo '<th>' . esc_html($field_info['label']) . '</th>'; } } } if ($args['last_updated']) { echo '<th>' . esc_html__('Last Updated', 'gravityflow') . '</th>'; } ?> </tr> </thead> <tbody class="list:user user-list"> <?php foreach ($entries as $entry) { $form = GFAPI::get_form($entry['form_id']); $user = get_user_by('id', (int) $entry['created_by']); $name = $user ? $user->display_name : $entry['ip']; $base_url = $args['detail_base_url']; $url_entry = $base_url . sprintf('&id=%d&lid=%d', $entry['form_id'], $entry['id']); $url_entry = esc_url_raw($url_entry); $link = "<a href='%s'>%s</a>"; ?> <tr> <td data-label="<?php esc_html_e('ID', 'gravityflow'); ?> " <?php echo $id_style; ?> > <?php printf($link, $url_entry, $entry['id']); ?> </td> <?php if (empty($form_id)) { ?> <td data-label="<?php esc_html_e('Form', 'gravityflow'); ?> "> <?php printf($link, $url_entry, $form['title']); ?> </td> <?php } ?> <td data-label="<?php esc_html_e('Submitter', 'gravityflow'); ?> " <?php echo $submitter_style; ?> > <?php printf($link, $url_entry, $name); ?> </td> <td data-label="<?php esc_html_e('Step', 'gravityflow'); ?> " <?php echo $step_style; ?> > <?php if (isset($entry['workflow_step'])) { $step = gravity_flow()->get_step($entry['workflow_step']); if ($step) { printf($link, $url_entry, $step->get_name()); } } ?> </td> <td data-label="<?php esc_html_e('Submitted', 'gravityflow'); ?> "> <?php printf($link, $url_entry, GFCommon::format_date($entry['date_created'])); ?> </td> <?php if ($args['form_id'] && is_array($args['field_ids'])) { if (isset($form['fields']) && is_array($form['fields'])) { $field_ids = array_keys($columns); foreach ($args['field_ids'] as $field_id) { /* @var GF_Field $field */ if (!in_array($field_id, $field_ids)) { continue; } $field_id = trim($field_id); $field_info = $columns[$field_id]; $value = rgar($entry, $field_id); $field = GFFormsModel::get_field($form, $field_id); ?> <td data-label="<?php echo esc_attr($field_info['label']); ?> "> <?php printf($link, $url_entry, $field->get_value_entry_list($value, $entry, $field_id, $columns, $form)); ?> </td> <?php } } } if ($args['last_updated']) { ?> <td data-label="<?php esc_html_e('Last_Updated', 'gravityflow'); ?> "> <?php $last_updated = date('Y-m-d H:i:s', $entry['workflow_timestamp']); if ($entry['date_created'] != $last_updated) { echo esc_html(GFCommon::format_date($last_updated, true, 'Y/m/d')); } else { echo '-'; } ?> </td> <?php } ?> </tr> <?php } ?> </tbody> </table> <?php if ($total_count > 150) { echo '<br />'; echo '<div class="excess_entries_indicator">'; printf('(Showing 150 of %d)', absint($total_count)); echo '</div>'; } } else { ?> <div id="gravityflow-no-pending-tasks-container"> <div id="gravityflow-no-pending-tasks-content"> <i class="fa fa-check-circle-o gravityflow-inbox-check"></i> <br/><br/> <?php esc_html_e('No pending tasks', 'gravityflow'); ?> </div> </div> <?php } }
private static function sort_by_default_field_query($form_id, $sort_field, $sort_direction='DESC', $search='', $offset=0, $page_size=30, $star=null, $read=null, $is_numeric_sort = false, $start_date=null, $end_date=null, $status='active', $payment_status = false){ global $wpdb; if(!is_numeric($form_id) || !is_numeric($offset)|| !is_numeric($page_size)){ return ""; } $lead_detail_table_name = self::get_lead_details_table_name(); $lead_table_name = self::get_lead_table_name(); $lead_meta_table_name = self::get_lead_meta_table_name(); $where = self::get_leads_where_sql(compact('form_id', 'search', 'status', 'star', 'read', 'start_date', 'end_date', 'payment_status')); $entry_meta = self::get_entry_meta($form_id); $entry_meta_sql_join = ""; if ( false === empty( $entry_meta ) && array_key_exists( $sort_field, $entry_meta ) ) { $entry_meta_sql_join = $wpdb->prepare("INNER JOIN ( SELECT lead_id, meta_value as $sort_field from $lead_meta_table_name WHERE meta_key = '$sort_field' ) lead_meta_data ON lead_meta_data.lead_id = l.id "); $is_numeric_sort = $entry_meta[$sort_field]['is_numeric']; } $grid_columns = RGFormsModel::get_grid_columns($form_id); if ( $sort_field != "date_created" && false === array_key_exists($sort_field, $grid_columns) ) $sort_field = "date_created"; $orderby = $is_numeric_sort ? "ORDER BY ($sort_field+0) $sort_direction" : "ORDER BY $sort_field $sort_direction"; $sql = " SELECT filtered.sort, l.*, d.field_number, d.value FROM $lead_table_name l INNER JOIN $lead_detail_table_name d ON d.lead_id = l.id INNER JOIN ( SELECT @rownum:=@rownum + 1 as sort, id FROM ( SELECT distinct l.id FROM $lead_table_name l INNER JOIN $lead_detail_table_name d ON d.lead_id = l.id $entry_meta_sql_join $where $orderby LIMIT $offset,$page_size ) page ) filtered ON filtered.id = l.id ORDER BY filtered.sort"; return $sql; }