html-admin-page-addons.php
2 years ago
html-admin-page-builder.php
2 years ago
html-admin-page-entries-view.php
3 years ago
html-admin-page-export.php
3 years ago
html-admin-page-form-templates.php
3 years ago
html-admin-page-import.php
3 years ago
html-admin-page-tools-logs.php
4 years ago
html-admin-page-tools.php
5 years ago
html-admin-settings.php
7 years ago
html-deactivation-popup.php
3 years ago
html-notice-allow-usage.php
2 years ago
html-notice-custom.php
6 years ago
html-notice-php-deprecation.php
3 years ago
html-notice-review.php
2 years ago
html-notice-survey.php
4 years ago
html-notice-update.php
6 years ago
html-notice-updated.php
6 years ago
html-notice-updating.php
6 years ago
html-admin-page-entries-view.php
306 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Admin View: Entries |
| 4 | * |
| 5 | * @package EverestForms/Admin/Entries/Views |
| 6 | */ |
| 7 | |
| 8 | defined( 'ABSPATH' ) || exit; |
| 9 | |
| 10 | $form_id = isset( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : 0; // phpcs:ignore WordPress.Security.NonceVerification |
| 11 | $entry_id = isset( $_GET['view-entry'] ) ? absint( $_GET['view-entry'] ) : 0; // phpcs:ignore WordPress.Security.NonceVerification |
| 12 | $entry = evf_get_entry( $entry_id, true ); |
| 13 | $form_data = evf()->form->get( $form_id, array( 'content_only' => true ) ); |
| 14 | $hide_empty = isset( $_COOKIE['everest_forms_entry_hide_empty'] ) && 'true' === $_COOKIE['everest_forms_entry_hide_empty']; |
| 15 | $trash_link = wp_nonce_url( |
| 16 | add_query_arg( |
| 17 | array( |
| 18 | 'trash' => $entry_id, |
| 19 | ), |
| 20 | admin_url( 'admin.php?page=evf-entries&form_id=' . $form_id ) |
| 21 | ), |
| 22 | 'trash-entry' |
| 23 | ); |
| 24 | |
| 25 | $form_entries = evf_get_entries_by_form_id( $form_id, '', '', true ); |
| 26 | $form_entries = array_map( |
| 27 | function( $el ) { |
| 28 | return $el['entry_id']; |
| 29 | }, |
| 30 | $form_entries |
| 31 | ); |
| 32 | |
| 33 | $entry_index = array_search( $entry_id, $form_entries ); //phpcs:ignore |
| 34 | $prev_entry = ''; |
| 35 | $next_entry = ''; |
| 36 | $prev_entry_url = '#'; |
| 37 | $next_entry_url = '#'; |
| 38 | |
| 39 | if ( false !== $entry_index ) { |
| 40 | if ( isset( $form_entries[ $entry_index - 1 ] ) ) { |
| 41 | $prev_entry = $form_entries[ $entry_index - 1 ]; |
| 42 | $prev_entry_url = admin_url( sprintf( 'admin.php?page=evf-entries&form_id=%d&view-entry=%d', $form_id, $prev_entry ) ); |
| 43 | } |
| 44 | |
| 45 | if ( isset( $form_entries[ $entry_index + 1 ] ) ) { |
| 46 | $next_entry = $form_entries[ $entry_index + 1 ]; |
| 47 | $next_entry_url = admin_url( sprintf( 'admin.php?page=evf-entries&form_id=%d&view-entry=%d', $form_id, $next_entry ) ); |
| 48 | } |
| 49 | |
| 50 | $next_entry = isset( $form_entries[ $entry_index + 1 ] ) ? $form_entries[ $entry_index + 1 ] : ''; |
| 51 | } |
| 52 | |
| 53 | ?> |
| 54 | <div class="wrap everest-forms"> |
| 55 | <h1 class="wp-heading-inline"><?php esc_html_e( 'View Entry', 'everest-forms' ); ?></h1> |
| 56 | <a href="<?php echo esc_url( admin_url( 'admin.php?page=evf-entries&form_id=' . $form_id ) ); ?>" class="page-title-action"><?php esc_html_e( 'Back to All Entries', 'everest-forms' ); ?></a> |
| 57 | <hr class="wp-header-end"> |
| 58 | <?php do_action( 'everest_forms_view_entries_notices' ); ?> |
| 59 | <div class="everest-forms-entry"> |
| 60 | <div id="poststuff"> |
| 61 | <div id="post-body" class="metabox-holder columns-2"> |
| 62 | <!-- Entry Fields metabox --> |
| 63 | <div id="evf-entry-nav-buttons"> |
| 64 | <a class="button" id="evf-prev-entry-button" href="<?php echo esc_url( $prev_entry_url ); ?>" <?php echo empty( $prev_entry ) ? esc_attr( 'disabled=disabled' ) : ''; ?> > |
| 65 | <?php esc_html_e( 'Previous', 'everest-forms' ); ?> |
| 66 | </a> |
| 67 | <a class="button" id="evf-next-entry-button" href="<?php echo esc_url( $next_entry_url ); ?>" <?php echo empty( $next_entry ) ? esc_attr( 'disabled=disabled' ) : ''; ?> > |
| 68 | <?php esc_html_e( 'Next', 'everest-forms' ); ?> |
| 69 | </a> |
| 70 | </div> |
| 71 | <div id="post-body-content" style="position: relative;"> |
| 72 | <div id="everest-forms-entry-fields" class="stuffbox"> |
| 73 | <h2 class="hndle"> |
| 74 | <?php do_action( 'everest_forms_before_entry_details_hndle', $entry ); ?> |
| 75 | <span> |
| 76 | <?php |
| 77 | /* translators: %s: Entry ID */ |
| 78 | printf( esc_html__( '%1$s: Entry #%2$s', 'everest-forms' ), esc_html( _draft_or_post_title( $form_id ) ), absint( $entry_id ) ); |
| 79 | ?> |
| 80 | </span> |
| 81 | <?php do_action( 'everest_forms_after_entry_details_hndle', $entry ); ?> |
| 82 | <a href="#" class="everest-forms-empty-field-toggle"> |
| 83 | <?php $hide_empty ? esc_html_e( 'Show Empty Fields', 'everest-forms' ) : esc_html_e( 'Hide Empty Fields', 'everest-forms' ); ?> |
| 84 | </a> |
| 85 | </h2> |
| 86 | <div class="inside"> |
| 87 | <table class="wp-list-table widefat fixed striped posts"> |
| 88 | <tbody> |
| 89 | <?php |
| 90 | $entry_meta = apply_filters( 'everest_forms_entry_single_data', $entry->meta, $entry, $form_data ); |
| 91 | |
| 92 | if ( empty( $entry_meta ) ) { |
| 93 | // Whoops, no fields! This shouldn't happen under normal use cases. |
| 94 | echo '<p class="no-fields">' . esc_html__( 'This entry does not have any fields.', 'everest-forms' ) . '</p>'; |
| 95 | } else { |
| 96 | // Display the fields and their values. |
| 97 | foreach ( $entry_meta as $meta_key => $meta_value ) { |
| 98 | // Check if hidden fields exists. |
| 99 | if ( in_array( $meta_key, apply_filters( 'everest_forms_hidden_entry_fields', array() ), true ) ) { |
| 100 | continue; |
| 101 | } |
| 102 | |
| 103 | $meta_value = is_serialized( $meta_value ) ? $meta_value : wp_strip_all_tags( $meta_value ); |
| 104 | |
| 105 | // Check for empty serialized value. |
| 106 | if ( is_serialized( $meta_value ) ) { |
| 107 | $raw_meta_val = unserialize( $meta_value ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_unserialize |
| 108 | if ( preg_match( '/dropdown_/', $meta_key ) && empty( $raw_meta_val[0] ) ) { |
| 109 | $meta_value = ''; |
| 110 | } elseif ( ! preg_match( '/dropdown_/', $meta_key ) && empty( $raw_meta_val['label'][0] ) ) { |
| 111 | $meta_value = ''; |
| 112 | } |
| 113 | } |
| 114 | |
| 115 | if ( evf_is_json( $meta_value ) ) { |
| 116 | $meta_value = json_decode( $meta_value, true ); |
| 117 | $meta_value = $meta_value['value']; |
| 118 | } |
| 119 | |
| 120 | $field_value = apply_filters( 'everest_forms_html_field_value', $meta_value, $entry_meta[ $meta_key ], $entry_meta, 'entry-single' ); |
| 121 | $field_class = is_string( $field_value ) && ( '(empty)' === wp_strip_all_tags( $field_value ) || '' === $field_value ) ? ' empty' : ''; |
| 122 | $field_style = $hide_empty && empty( $field_value ) ? 'display:none;' : ''; |
| 123 | $correct_answers = false; |
| 124 | |
| 125 | // Field name. |
| 126 | echo '<tr class="everest-forms-entry-field field-name' . esc_attr( $field_class ) . '" style="' . esc_attr( $field_style ) . '"><th>'; |
| 127 | |
| 128 | $value = evf_get_form_data_by_meta_key( $form_id, $meta_key, json_decode( $entry->fields ) ); |
| 129 | |
| 130 | if ( $value ) { |
| 131 | if ( apply_filters( 'everest_forms_html_field_label', false ) ) { |
| 132 | $correct_answers = apply_filters( 'everest_forms_single_entry_label', $value, $meta_key, $field_value ); |
| 133 | } else { |
| 134 | echo '<strong>' . esc_html( make_clickable( $value ) ) . '</strong>'; |
| 135 | } |
| 136 | } else { |
| 137 | echo '<strong>' . esc_html__( 'Field ID', 'everest-forms' ) . '</strong>'; |
| 138 | } |
| 139 | |
| 140 | echo '</th></tr>'; |
| 141 | |
| 142 | // Field value. |
| 143 | echo '<tr class="everest-forms-entry-field field-value' . esc_attr( $field_class ) . '" style="' . esc_attr( $field_style ) . '"><td>'; |
| 144 | |
| 145 | if ( ! empty( $field_value ) || is_numeric( $field_value ) ) { |
| 146 | if ( is_serialized( $field_value ) ) { |
| 147 | $field_value = maybe_unserialize( $field_value ); |
| 148 | $field_label = isset( $field_value['label'] ) ? $field_value['label'] : $field_value; |
| 149 | |
| 150 | if ( ! empty( $field_label ) && is_array( $field_label ) ) { |
| 151 | foreach ( $field_label as $field => $value ) { |
| 152 | $answer_class = ''; |
| 153 | if ( $correct_answers ) { |
| 154 | if ( in_array( $value, $correct_answers, true ) ) { |
| 155 | $answer_class = 'correct_answer'; |
| 156 | } else { |
| 157 | $answer_class = 'wrong_answer'; |
| 158 | } |
| 159 | } |
| 160 | echo '<span class="list ' . esc_attr( $answer_class ) . '">' . esc_html( wp_strip_all_tags( $value ) ) . '</span>'; |
| 161 | } |
| 162 | } else { |
| 163 | echo nl2br( make_clickable( $field_label ) ); // @codingStandardsIgnoreLine |
| 164 | } |
| 165 | } else { |
| 166 | if ( $correct_answers && false !== $correct_answers ) { |
| 167 | if ( in_array( $field_value, $correct_answers, true ) ) { |
| 168 | $answer_class = 'correct_answer'; |
| 169 | } else { |
| 170 | $answer_class = 'wrong_answer'; |
| 171 | } |
| 172 | echo '<span class="list ' . esc_attr( $answer_class ) . '">' . esc_html( wp_strip_all_tags( $field_value ) ) . '</span>'; |
| 173 | } else { |
| 174 | echo nl2br( make_clickable( $field_value ) ); // @codingStandardsIgnoreLine |
| 175 | } |
| 176 | } |
| 177 | } else { |
| 178 | esc_html_e( 'Empty', 'everest-forms' ); |
| 179 | } |
| 180 | |
| 181 | echo '</td></tr>'; |
| 182 | } |
| 183 | } |
| 184 | ?> |
| 185 | </tbody> |
| 186 | </table> |
| 187 | </div> |
| 188 | </div> |
| 189 | |
| 190 | <?php do_action( 'everest_forms_entry_details_content', $entry, $form_id ); ?> |
| 191 | </div> |
| 192 | <!-- Entry Details metabox --> |
| 193 | <div id="postbox-container-1" class="postbox-container"> |
| 194 | <div id="everest-forms-entry-details" class="stuffbox"> |
| 195 | <h2><?php esc_html_e( 'Entry Details', 'everest-forms' ); ?></h2> |
| 196 | <div class="inside"> |
| 197 | <div id="submitbox" class="submitbox"> |
| 198 | <div class="everest-forms-entry-details-meta"> |
| 199 | <p class="everest-forms-entry-id"> |
| 200 | <span class="dashicons dashicons-admin-network"></span> |
| 201 | <?php esc_html_e( 'Entry ID:', 'everest-forms' ); ?> |
| 202 | <strong><?php echo absint( $entry_id ); ?></strong> |
| 203 | </p> |
| 204 | |
| 205 | <p class="everest-forms-entry-date"> |
| 206 | <span class="dashicons dashicons-calendar"></span> |
| 207 | <?php esc_html_e( 'Submitted:', 'everest-forms' ); ?> |
| 208 | <strong><?php echo esc_html( date_i18n( esc_html__( 'M j, Y @ g:ia', 'everest-forms' ), strtotime( $entry->date_created ) + ( get_option( 'gmt_offset' ) * 3600 ) ) ); ?> </strong> |
| 209 | </p> |
| 210 | |
| 211 | <?php if ( ! empty( $entry->date_modified ) ) : ?> |
| 212 | <p class="everest-forms-entry-modified"> |
| 213 | <span class="dashicons dashicons-calendar"></span> |
| 214 | <?php esc_html_e( 'Modified:', 'everest-forms' ); ?> |
| 215 | <strong><?php echo esc_html( date_i18n( esc_html__( 'M j, Y @ g:ia', 'everest-forms' ), strtotime( $entry->date_modified ) + ( get_option( 'gmt_offset' ) * 3600 ) ) ); ?> </strong> |
| 216 | </p> |
| 217 | <?php endif; ?> |
| 218 | |
| 219 | <?php if ( ! empty( $entry->user_id ) && 0 !== $entry->user_id ) : ?> |
| 220 | <p class="everest-forms-entry-user"> |
| 221 | <span class="dashicons dashicons-admin-users"></span> |
| 222 | <?php |
| 223 | esc_html_e( 'User:', 'everest-forms' ); |
| 224 | $user = get_userdata( $entry->user_id ); |
| 225 | $user_name = ! empty( $user->display_name ) ? $user->display_name : $user->user_login; |
| 226 | // phpcs:ignore WordPress.WP.GlobalVariablesOverride |
| 227 | $user_url = add_query_arg( |
| 228 | array( |
| 229 | 'user_id' => absint( $user->ID ), |
| 230 | ), |
| 231 | admin_url( 'user-edit.php' ) |
| 232 | ); |
| 233 | ?> |
| 234 | <strong><a href="<?php echo esc_url( $user_url ); ?>"><?php echo esc_html( $user_name ); ?></a></strong> |
| 235 | </p> |
| 236 | <?php endif; ?> |
| 237 | |
| 238 | <?php if ( ! empty( $entry->user_ip_address ) ) : ?> |
| 239 | <p class="everest-forms-entry-ip"> |
| 240 | <span class="dashicons dashicons-location"></span> |
| 241 | <?php esc_html_e( 'User IP:', 'everest-forms' ); ?> |
| 242 | <strong><?php echo esc_html( $entry->user_ip_address ); ?></strong> |
| 243 | </p> |
| 244 | <?php endif; ?> |
| 245 | |
| 246 | <?php if ( ! empty( $entry->referer ) ) : ?> |
| 247 | <p class="everest-forms-entry-referer"> |
| 248 | <span class="dashicons dashicons-admin-links"></span> |
| 249 | <?php esc_html_e( 'Referer Link:', 'everest-forms' ); ?> |
| 250 | <strong><a href="<?php echo esc_url( $entry->referer ); ?>" target="_blank"><?php esc_html_e( 'View', 'everest-forms' ); ?></a></strong> |
| 251 | </p> |
| 252 | <?php endif; ?> |
| 253 | |
| 254 | <?php if ( apply_filters( 'everest_forms_entry_details_sidebar_details_status', false, $entry, $form_data ) ) : ?> |
| 255 | <p class="everest-forms-entry-status"> |
| 256 | <span class="dashicons dashicons-category"></span> |
| 257 | <?php esc_html_e( 'Status:', 'everest-forms' ); ?> |
| 258 | <strong><?php echo ! empty( $entry->status ) ? esc_html( ucwords( sanitize_text_field( $entry->status ) ) ) : esc_html__( 'Completed', 'everest-forms' ); ?></strong> |
| 259 | </p> |
| 260 | <?php endif; ?> |
| 261 | |
| 262 | <?php do_action( 'everest_forms_entry_details_sidebar_details', $entry, $entry_meta, $form_data ); ?> |
| 263 | </div> |
| 264 | |
| 265 | <?php if ( current_user_can( 'everest_forms_edit_entry', $entry->entry_id ) || current_user_can( 'everest_forms_delete_entry', $entry->entry_id ) ) : ?> |
| 266 | <div id="major-publishing-actions"> |
| 267 | <?php do_action( 'everest_forms_entry_details_sidebar_action', $entry, $form_data ); ?> |
| 268 | <?php if ( current_user_can( 'everest_forms_delete_entry', $entry->entry_id ) ) : ?> |
| 269 | <div id="delete-action"> |
| 270 | <a class="submitdelete" aria-label="<?php echo esc_attr__( 'Move to trash', 'everest-forms' ); ?>" href="<?php echo esc_url( $trash_link ); ?>"><?php esc_html_e( 'Move to trash', 'everest-forms' ); ?></a> |
| 271 | </div> |
| 272 | <?php endif; ?> |
| 273 | <div class="clear"></div> |
| 274 | </div> |
| 275 | <?php endif; ?> |
| 276 | </div> |
| 277 | </div> |
| 278 | </div> |
| 279 | <?php do_action( 'everest_forms_after_entry_details', $entry, $entry_meta, $form_data ); ?> |
| 280 | </div> |
| 281 | </div> |
| 282 | </div> |
| 283 | </div> |
| 284 | </div> |
| 285 | <!-- Toggle displaying empty fields. --> |
| 286 | <script type="text/javascript"> |
| 287 | jQuery( document ).on( 'click', '#everest-forms-entry-fields .everest-forms-empty-field-toggle', function( event ) { |
| 288 | event.preventDefault(); |
| 289 | |
| 290 | // Handle cookie. |
| 291 | if ( wpCookies.get( 'everest_forms_entry_hide_empty' ) === 'true' ) { |
| 292 | |
| 293 | // User was hiding empty fields, so now display them. |
| 294 | wpCookies.remove( 'everest_forms_entry_hide_empty' ); |
| 295 | jQuery( this ).text( 'Hide Empty Fields' ); |
| 296 | } else { |
| 297 | |
| 298 | // User was seeing empty fields, so now hide them. |
| 299 | wpCookies.set( 'everest_forms_entry_hide_empty', 'true', 2592000 ); // 1month. |
| 300 | jQuery( this ).text( 'Show Empty Fields' ); |
| 301 | } |
| 302 | |
| 303 | jQuery( '.everest-forms-entry-field.empty' ).toggle(); |
| 304 | }); |
| 305 | </script> |
| 306 |