public static function entry_delete_link($atts)
 {
     global $post, $frm_vars;
     extract(shortcode_atts(array('id' => isset($frm_vars['editing_entry']) ? $frm_vars['editing_entry'] : false, 'label' => __('Delete'), 'confirm' => __('Are you sure you want to delete that entry?', 'formidable'), 'class' => '', 'page_id' => $post ? $post->ID : 0, 'html_id' => false, 'prefix' => '', 'title' => ''), $atts));
     $entry_id = ($id and is_numeric($id)) ? $id : ((is_admin() and !defined('DOING_AJAX')) ? FrmAppHelper::get_param('id', false) : FrmAppHelper::get_param('entry', false));
     if (empty($entry_id)) {
         return '';
     }
     // Check if user has permission to delete before showing link
     if (!FrmProEntriesHelper::user_can_delete($entry_id)) {
         return '';
     }
     $frm_vars['forms_loaded'][] = true;
     if (!empty($prefix)) {
         if (!$html_id) {
             $html_id = "frm_delete_{$entry_id}";
         }
         $link = "<a href='javascript:frmDeleteEntry({$entry_id},\"{$prefix}\")' class='frm_delete_link {$class}' id='{$html_id}' onclick='return confirm(\"" . $confirm . "\")'>{$label}</a>\n";
         return $link;
     }
     $link = '';
     // Delete entry now
     $action = FrmAppHelper::get_param('frm_action');
     if ($action == 'destroy') {
         $entry_key = FrmAppHelper::get_param('entry');
         if (is_numeric($entry_key) and $entry_key == $entry_id) {
             $link = FrmProEntriesController::ajax_destroy(false, false, false);
             if (!empty($link)) {
                 $new_link = '<div class="frm_message">' . $link . '</div>';
                 if (empty($label)) {
                     return;
                 }
                 if ($link == __('Your entry was successfully deleted', 'formidable')) {
                     return $new_link;
                 } else {
                     $link = $new_link;
                 }
                 unset($new_link);
             }
         }
     }
     if (empty($label)) {
         $link .= add_query_arg(array('frm_action' => 'destroy', 'entry' => $entry_id), get_permalink($page_id));
     } else {
         if (empty($title)) {
             $title = $label;
         }
         $link .= "<a href='" . add_query_arg(array('frm_action' => 'destroy', 'entry' => $entry_id), get_permalink($page_id)) . "' class='{$class}' onclick='return confirm(\"" . $confirm . "\")' title='" . esc_attr($title) . "'>{$label}</a>\n";
     }
     return $link;
 }
 function entry_delete_link($atts)
 {
     global $frm_editing_entry, $post, $frm_forms_loaded;
     extract(shortcode_atts(array('id' => $frm_editing_entry, 'label' => 'Delete', 'confirm' => __('Are you sure you want to delete that entry?', 'formidable'), 'class' => '', 'page_id' => $post ? $post->ID : 0, 'html_id' => false, 'prefix' => ''), $atts));
     $frm_forms_loaded[] = true;
     $link = '';
     $entry_id = ($id and is_numeric($id)) ? $id : (is_admin() ? FrmAppHelper::get_param('id', false) : FrmAppHelper::get_param('entry', false));
     if ($entry_id and !empty($entry_id)) {
         if (empty($prefix)) {
             $action = FrmAppHelper::get_param('frm_action');
             if ($action == 'destroy') {
                 $entry_key = FrmAppHelper::get_param('entry');
                 if (is_numeric($entry_key) and $entry_key == $entry_id) {
                     $link = FrmProEntriesController::ajax_destroy(false, false, false);
                     if (!empty($link)) {
                         $new_link = '<div class="frm_message">' . $link . '</div>';
                         if ($link == __('Your entry was successfully deleted', 'formidable')) {
                             return $new_link;
                         } else {
                             $link = $new_link;
                         }
                         unset($new_link);
                     }
                 }
             }
             $link .= "<a href='" . add_query_arg(array('frm_action' => 'destroy', 'entry' => $entry_id), get_permalink($page_id)) . "' class='{$class}' onclick='return confirm(\"" . $confirm . "\")'>{$label}</a>\n";
         } else {
             if (!$html_id) {
                 $html_id = "frm_delete_{$entry_id}";
             }
             $link = "<a href='javascript:frmDeleteEntry({$entry_id},\"" . FRM_SCRIPT_URL . "\",\"{$prefix}\")' class='frm_delete_link {$class}' id='{$html_id}' onclick='return confirm(\"" . $confirm . "\")'>{$label}</a>\n";
         }
     }
     return $link;
 }
 public static function get_display_data($display, $content = '', $entry_id = false, $extra_atts = array())
 {
     global $frmpro_display, $frm_entry, $frmpro_settings, $frm_entry_meta, $frm_vars, $post;
     $frm_vars['forms_loaded'][] = true;
     if (!isset($display->frm_form_id)) {
         $display = FrmProDisplaysHelper::setup_edit_vars($display, false);
     }
     if (!isset($display->frm_form_id) or empty($display->frm_form_id)) {
         return $content;
     }
     // check if entry needs to be deleted before loading entries
     if (FrmAppHelper::get_param('frm_action') == 'destroy' && isset($_GET['entry'])) {
         $deleted = FrmProEntriesController::ajax_destroy($display->frm_form_id, false, false);
         if (!empty($deleted)) {
             $message = '<div class="with_frm_style"><div class="frm_message">' . $deleted . '</div></div>';
         }
         unset($_GET['entry']);
     }
     //for backwards compatability
     $display->id = $display->frm_old_id;
     $display->display_key = $display->post_name;
     $defaults = array('filter' => false, 'user_id' => '', 'limit' => '', 'page_size' => '', 'order_by' => '', 'order' => '', 'drafts' => false, 'auto_id' => '');
     extract(wp_parse_args($extra_atts, $defaults));
     //if (FrmProAppHelper::rewriting_on() && $frmpro_settings->permalinks )
     //    self::parse_pretty_entry_url();
     if ($display->frm_show_count == 'one' and is_numeric($display->frm_entry_id) and $display->frm_entry_id > 0 and !$entry_id) {
         $entry_id = $display->frm_entry_id;
     }
     $entry = false;
     $show = 'all';
     global $wpdb, $frmpro_entry;
     $where = $wpdb->prepare('it.form_id=%d', $display->frm_form_id);
     if (in_array($display->frm_show_count, array('dynamic', 'calendar', 'one'))) {
         $one_param = isset($_GET['entry']) ? $_GET['entry'] : $auto_id;
         $get_param = isset($_GET[$display->frm_param]) ? $_GET[$display->frm_param] : ($display->frm_show_count == 'one' ? $one_param : $auto_id);
         unset($one_param);
         if ($get_param) {
             if (($display->frm_type == 'id' or $display->frm_show_count == 'one') and is_numeric($get_param)) {
                 $where .= $wpdb->prepare(' AND it.id=%d', $get_param);
             } else {
                 $where .= $wpdb->prepare(' AND it.item_key=%s', $get_param);
             }
             $entry = $frm_entry->getAll($where, '', 1, 0);
             if ($entry) {
                 $entry = reset($entry);
             }
             if ($entry and $entry->post_id) {
                 //redirect to single post page if this entry is a post
                 if (in_the_loop() and $display->frm_show_count != 'one' and !is_single($entry->post_id) and $post->ID != $entry->post_id) {
                     $this_post = get_post($entry->post_id);
                     if (in_array($this_post->post_status, array('publish', 'private'))) {
                         die(FrmAppHelper::js_redirect(get_permalink($entry->post_id)));
                     }
                 }
             }
         }
         unset($get_param);
     }
     if ($entry and in_array($display->frm_show_count, array('dynamic', 'calendar'))) {
         $new_content = $display->frm_dyncontent;
         $show = 'one';
     } else {
         $new_content = $display->post_content;
     }
     $show = $display->frm_show_count == 'one' ? 'one' : $show;
     $shortcodes = FrmProDisplaysHelper::get_shortcodes($new_content, $display->frm_form_id);
     //don't let page size and limit override single entry displays
     if ($display->frm_show_count == 'one') {
         $display->frm_page_size = $display->frm_limit = '';
     }
     //don't keep current content if post type is frm_display
     if ($post and $post->post_type == 'frm_display') {
         $display->frm_insert_loc = '';
     }
     $pagination = '';
     $is_draft = !empty($drafts) ? 1 : 0;
     $form_query = $wpdb->prepare("SELECT id, post_id FROM {$wpdb->prefix}frm_items WHERE form_id=%d and post_id>%d", $display->frm_form_id, 1);
     if ($drafts != 'both') {
         $form_query .= $wpdb->prepare(' AND is_draft=%d', $is_draft);
     }
     if ($entry and $entry->form_id == $display->frm_form_id) {
         $form_query .= $wpdb->prepare(' AND id=%d', $entry->id);
         $form_posts = $wpdb->get_results($form_query);
         $entry_ids = array($entry->id);
     } else {
         $form_posts = $wpdb->get_results($form_query);
         //Only get $entry_ids if filters are set or if frm_search parameter is set
         if (isset($display->frm_where) && !empty($display->frm_where) && (!$entry || !$post || empty($auto_id)) || isset($_GET['frm_search'])) {
             $entry_query = $wpdb->prepare("SELECT id FROM {$wpdb->prefix}frm_items WHERE form_id=%d", $display->frm_form_id);
             if ($drafts != 'both') {
                 $entry_query .= $wpdb->prepare(" AND is_draft=%d", $is_draft);
             }
             $entry_ids = $wpdb->get_col($entry_query);
             unset($entry_query);
         }
     }
     unset($form_query);
     $empty_msg = (isset($display->frm_empty_msg) and !empty($display->frm_empty_msg)) ? '<div class="frm_no_entries">' . FrmProFieldsHelper::get_default_value($display->frm_empty_msg, false, true, true) . '</div>' : '';
     if (isset($message)) {
         // if an entry was deleted above, show a message
         $empty_msg = $message . $empty_msg;
     }
     $after_where = false;
     if ($user_id and !empty($user_id)) {
         $user_id = FrmProAppHelper::get_user_id_param($user_id);
         $uid_used = false;
     }
     if (isset($display->frm_where) && !empty($display->frm_where) && (!$entry || !$post || empty($auto_id))) {
         $display->frm_where = apply_filters('frm_custom_where_opt', $display->frm_where, array('display' => $display, 'entry' => $entry));
         $continue = false;
         foreach ($display->frm_where as $where_key => $where_opt) {
             $where_val = isset($display->frm_where_val[$where_key]) ? $display->frm_where_val[$where_key] : '';
             if (preg_match("/\\[(get|get-(.?))\\b(.*?)(?:(\\/))?\\]/s", $where_val)) {
                 $where_val = FrmProFieldsHelper::get_default_value($where_val, false, true, true);
                 //if this param doesn't exist, then don't include it
                 if ($where_val == '') {
                     if (!$after_where) {
                         $continue = true;
                     }
                     continue;
                 }
             } else {
                 $where_val = FrmProFieldsHelper::get_default_value($where_val, false, true, true);
             }
             $continue = false;
             if ($where_val == 'current_user') {
                 if ($user_id and is_numeric($user_id)) {
                     $where_val = $user_id;
                     $uid_used = true;
                 } else {
                     $where_val = get_current_user_id();
                 }
             }
             $where_val = do_shortcode($where_val);
             if (in_array($where_opt, array('id', 'item_key', 'post_id')) && !is_array($where_val) && strpos($where_val, ',')) {
                 $where_val = explode(',', $where_val);
             }
             if (is_array($where_val) and !empty($where_val)) {
                 $new_where = '(';
                 if (strpos($display->frm_where_is[$where_key], 'LIKE') !== false) {
                     foreach ($where_val as $w) {
                         if ($new_where != '(') {
                             $new_where .= ',';
                         }
                         $new_where .= $wpdb->prepare('%s', '%' . FrmAppHelper::esc_like($w) . '%');
                         unset($w);
                     }
                 } else {
                     foreach ($where_val as $w) {
                         if ($new_where != '(') {
                             $new_where .= ',';
                         }
                         $new_where .= $wpdb->prepare('%s', $w);
                         unset($w);
                     }
                 }
                 $new_where .= ')';
                 $where_val = $new_where;
                 unset($new_where);
                 if (strpos($display->frm_where_is[$where_key], '!') === false && strpos($display->frm_where_is[$where_key], 'not') === false) {
                     $display->frm_where_is[$where_key] = ' in ';
                 } else {
                     $display->frm_where_is[$where_key] = ' not in ';
                 }
             }
             if (is_numeric($where_opt)) {
                 $filter_opts = apply_filters('frm_display_filter_opt', array('where_opt' => $where_opt, 'where_is' => $display->frm_where_is[$where_key], 'where_val' => $where_val, 'form_id' => $display->frm_form_id, 'form_posts' => $form_posts, 'after_where' => $after_where, 'display' => $display, 'drafts' => $is_draft));
                 $entry_ids = FrmProAppHelper::filter_where($entry_ids, $filter_opts);
                 unset($filter_opts);
                 $after_where = true;
                 $continue = false;
                 if (empty($entry_ids)) {
                     break;
                 }
             } else {
                 if ($where_opt == 'created_at' or $where_opt == 'updated_at') {
                     if ($where_val == 'NOW') {
                         $where_val = current_time('mysql', 1);
                     }
                     if (strpos($display->frm_where_is[$where_key], 'LIKE') === false) {
                         $where_val = date('Y-m-d H:i:s', strtotime($where_val));
                     }
                     $where .= $wpdb->prepare(" and it.{$where_opt} " . $display->frm_where_is[$where_key] . "%s", '');
                     if (strpos($display->frm_where_is[$where_key], 'in')) {
                         $where .= " {$where_val}";
                     } else {
                         if (strpos($display->frm_where_is[$where_key], 'LIKE') !== false) {
                             $where .= $wpdb->prepare(" %s", '%' . FrmAppHelper::esc_like($where_val) . '%');
                         } else {
                             $where .= $wpdb->prepare(" %s", $where_val);
                         }
                     }
                     $continue = true;
                 } else {
                     if (in_array($where_opt, array('id', 'item_key', 'post_id'))) {
                         $where .= " and it.{$where_opt} " . $display->frm_where_is[$where_key];
                         if (strpos($display->frm_where_is[$where_key], 'in')) {
                             $where .= " {$where_val}";
                         } else {
                             $where .= $wpdb->prepare(" %s", $where_val);
                         }
                         $continue = true;
                     }
                 }
             }
         }
         if (!$continue and empty($entry_ids)) {
             if ($display->frm_insert_loc == 'after') {
                 $content .= $empty_msg;
             } else {
                 if ($display->frm_insert_loc == 'before') {
                     $content = $empty_msg . $content;
                 } else {
                     if ($filter) {
                         $empty_msg = apply_filters('the_content', $empty_msg);
                     }
                     if ($post->post_type == 'frm_display' and in_the_loop()) {
                         $content = '';
                     }
                     $content .= $empty_msg;
                 }
             }
             return $content;
         }
     }
     if ($user_id && is_numeric($user_id) && !$uid_used) {
         $where .= $wpdb->prepare(" AND it.user_id=%d", $user_id);
     }
     $s = FrmAppHelper::get_param('frm_search', false);
     if ($s) {
         $new_ids = FrmProEntriesHelper::get_search_ids($s, $display->frm_form_id);
         if ($after_where and isset($entry_ids) and !empty($entry_ids)) {
             $entry_ids = array_intersect($new_ids, $entry_ids);
         } else {
             $entry_ids = $new_ids;
         }
         if (empty($entry_ids)) {
             if ($post->post_type == 'frm_display' and in_the_loop()) {
                 $content = '';
             }
             return $content . ' ' . $empty_msg;
         }
     }
     if (isset($entry_ids) && !empty($entry_ids)) {
         $where .= ' and it.id in (' . implode(',', array_filter($entry_ids, 'is_numeric')) . ')';
     }
     if ($entry_id) {
         $entry_id_array = explode(',', $entry_id);
         //Get IDs (if there are any)
         $numeric_entry_ids = array_filter($entry_id_array, 'is_numeric');
         //If there are entry keys, use esc_sql
         if (empty($numeric_entry_ids)) {
             $entry_id_array = array_filter($entry_id_array, 'esc_sql');
         }
         $where .= !empty($numeric_entry_ids) ? " and it.id in ('" . implode("','", $numeric_entry_ids) . "')" : " and it.item_key in ('" . implode("','", $entry_id_array) . "')";
     }
     if ($drafts != 'both') {
         $where .= $wpdb->prepare(' AND is_draft=%d', $is_draft);
     }
     unset($is_draft);
     if ($show == 'one') {
         $limit = ' LIMIT 1';
     } else {
         if (isset($_GET['frm_cat']) and isset($_GET['frm_cat_id'])) {
             //Get fields with specified field value 'frm_cat' = field key/id, 'frm_cat_id' = order position of selected option
             global $frm_field;
             if ($cat_field = $frm_field->getOne($_GET['frm_cat'])) {
                 $categories = maybe_unserialize($cat_field->options);
                 if (isset($categories[$_GET['frm_cat_id']])) {
                     $cat_entry_ids = $frm_entry_meta->getEntryIds(array('meta_value' => $categories[$_GET['frm_cat_id']], 'fi.field_key' => $_GET['frm_cat']));
                     if ($cat_entry_ids) {
                         $where .= " and it.id in (" . implode(',', $cat_entry_ids) . ")";
                     } else {
                         $where .= " and it.id=0";
                     }
                 }
             }
         }
     }
     if (!empty($limit) and is_numeric($limit)) {
         $display->frm_limit = (int) $limit;
     }
     if (is_numeric($display->frm_limit)) {
         $num_limit = (int) $display->frm_limit;
         $limit = ' LIMIT ' . $display->frm_limit;
     }
     if (!empty($order_by)) {
         $display->frm_order_by = explode(',', $order_by);
         $order_by = '';
     }
     if (!empty($order)) {
         $display->frm_order = explode(',', $order);
     }
     unset($order);
     if (!empty($page_size) && is_numeric($page_size)) {
         $display->frm_page_size = (int) $page_size;
     }
     // if limit is lower than page size, ignore the page size
     if (isset($num_limit) && $display->frm_page_size > $num_limit) {
         $display->frm_page_size = '';
     }
     if (isset($display->frm_page_size) and is_numeric($display->frm_page_size)) {
         $page_param = ($_GET and isset($_GET['frm-page-' . $display->ID])) ? 'frm-page-' . $display->ID : 'frm-page';
         $current_page = (int) FrmAppHelper::get_param($page_param, 1);
         $record_where = $where == $wpdb->prepare('it.form_id=%d', $display->frm_form_id) ? $display->frm_form_id : $where;
         $record_count = $frm_entry->getRecordCount($record_where);
         if (isset($num_limit) and $record_count > (int) $num_limit) {
             $record_count = (int) $num_limit;
         }
         $page_count = $frm_entry->getPageCount($display->frm_page_size, $record_count);
         //Get a page of entries
         $entries = $frmpro_entry->get_view_page($current_page, $display->frm_page_size, $where, array('order_by_array' => $display->frm_order_by, 'order_array' => $display->frm_order, 'posts' => $form_posts));
         $page_last_record = FrmAppHelper::getLastRecordNum($record_count, $current_page, $display->frm_page_size);
         $page_first_record = FrmAppHelper::getFirstRecordNum($record_count, $current_page, $display->frm_page_size);
         if ($page_count > 1) {
             $page_param = 'frm-page-' . $display->ID;
             $pagination = FrmProDisplaysController::get_pagination_file(FrmAppHelper::plugin_path() . '/pro/classes/views/displays/pagination.php', compact('current_page', 'record_count', 'page_count', 'page_last_record', 'page_first_record', 'page_param'));
         }
     } else {
         //Get all entries
         $entries = $frmpro_entry->get_view_results($where, array('order_by_array' => $display->frm_order_by, 'order_array' => $display->frm_order, 'limit' => $limit, 'posts' => $form_posts));
     }
     $total_count = count($entries);
     $sc_atts = array();
     if (isset($record_count)) {
         $sc_atts['record_count'] = $record_count;
     } else {
         $sc_atts['record_count'] = $total_count;
     }
     $display_content = '';
     if (isset($message)) {
         // if an entry was deleted above, show a message
         $display_content .= $message;
     }
     if ($show == 'all') {
         $display_content .= isset($display->frm_before_content) ? $display->frm_before_content : '';
     }
     if (!isset($entry_ids) || empty($entry_ids)) {
         $entry_ids = array_keys($entries);
     }
     $display_content = apply_filters('frm_before_display_content', $display_content, $display, $show, array('total_count' => $total_count, 'record_count' => $sc_atts['record_count'], 'entry_ids' => $entry_ids));
     $filtered_content = apply_filters('frm_display_entries_content', $new_content, $entries, $shortcodes, $display, $show, $sc_atts);
     if ($filtered_content != $new_content) {
         $display_content .= $filtered_content;
     } else {
         $odd = 'odd';
         $count = 0;
         if (!empty($entries)) {
             foreach ($entries as $entry) {
                 $count++;
                 //TODO: use the count with conditionals
                 $display_content .= apply_filters('frm_display_entry_content', $new_content, $entry, $shortcodes, $display, $show, $odd, array('count' => $count, 'total_count' => $total_count, 'record_count' => $sc_atts['record_count'], 'pagination' => $pagination, 'entry_ids' => $entry_ids));
                 $odd = $odd == 'odd' ? 'even' : 'odd';
                 unset($entry);
             }
             unset($count);
         } else {
             if ($post->post_type == 'frm_display' and in_the_loop()) {
                 $display_content = '';
             }
             if (!isset($message) || FrmAppHelper::get_param('frm_action') != 'destroy') {
                 $display_content .= $empty_msg;
             }
         }
     }
     if (isset($message)) {
         unset($message);
     }
     if ($show == 'all') {
         $display_content .= isset($display->frm_after_content) ? apply_filters('frm_after_content', $display->frm_after_content, $display, $show, array('total_count' => $total_count, 'record_count' => $sc_atts['record_count'], 'entry_ids' => $entry_ids)) : '';
     }
     if (!isset($sc_atts)) {
         $sc_atts = array('record_count' => 0);
     }
     if (!isset($total_count)) {
         $total_count = 0;
     }
     $display_content .= apply_filters('frm_after_display_content', $pagination, $display, $show, array('total_count' => $total_count, 'record_count' => $sc_atts['record_count'], 'entry_ids' => $entry_ids));
     unset($sc_atts);
     $display_content = FrmProFieldsHelper::get_default_value($display_content, false, true, true);
     if ($display->frm_insert_loc == 'after') {
         $content .= $display_content;
     } else {
         if ($display->frm_insert_loc == 'before') {
             $content = $display_content . $content;
         } else {
             if ($filter) {
                 $display_content = apply_filters('the_content', $display_content);
             }
             $content = $display_content;
         }
     }
     return $content;
 }