File ManagerCurrent Directory: wp-content/plugins/wpforms/src/Pro/AntiSpamLinux appserver-0d5e4f1e-php-cc8da225320a42ba9b7d66cba40b1f03 6.6.123+ #1 SMP PREEMPT_DYNAMIC Wed Mar 11 09:04:28 UTC 2026 x86_64Edit File: SpamEntry.php <?php namespace WPForms\Pro\AntiSpam; /** * Class SpamEntry. * * @since 1.8.3 */ class SpamEntry { /** * Entry status. * * @since 1.8.3 */ const ENTRY_STATUS = 'spam'; /** * Initialize. * * @since 1.8.3 * * @return void */ public function init() { $this->hooks(); } /** * Hooks. * * @since 1.8.3 * * @return void */ public function hooks() { // Spam entry save. add_filter( 'wpforms_entry_save_args', [ $this, 'add_spam_status' ], 10, 2 ); // Spam entries list. add_filter( 'wpforms_entries_table_counts', [ $this, 'entries_table_counts' ], 10, 2 ); add_filter( 'wpforms_entries_table_views', [ $this, 'entries_table_views' ], 10, 3 ); add_filter( 'wpforms_entries_single_details_actions_disable', [ $this, 'disallow_details_actions' ], 10, 2 ); add_filter( 'wpforms_entry_table_actions', [ $this, 'filter_entry_actions' ], 10, 2 ); // Spam entries table. add_filter( 'wpforms_entries_table_display_date_range_filter_disable', [ $this, 'disable_date_range_filter' ] ); add_action( 'wpforms_entries_table_extra_tablenav', [ $this, 'add_remove_spam_entries_button' ] ); add_filter( 'wpforms_entries_table_get_bulk_actions', [ $this, 'filter_bulk_actions' ] ); add_filter( 'wpforms_entries_table_get_table_classes', [ $this, 'add_spam_entries_table_class' ] ); add_filter( 'wpforms_entries_single_details_form_url', [ $this, 'filter_spam_form_url' ], 10, 3 ); // Spam entry actions. add_action( 'admin_init', [ $this, 'entry_actions' ] ); add_action( 'admin_notices', [ $this, 'entry_notices' ] ); add_action( 'wpforms_process_entry_saved', [ $this, 'add_meta_data' ], 20, 4 ); add_filter( 'wpforms_entries_table_process_actions_entries_list', [ $this, 'filter_process_actions_entries_list' ], 10, 2 ); add_filter( 'wpforms_entry_details_sidebar_actions_link', [ $this, 'add_spam_action_link' ], 10, 2 ); add_filter( 'wpforms_entry_email' , [ $this, 'disable_entry_email' ], 10, 4 ); // Additional wrap classes. add_filter( 'wpforms_entries_list_list_all_wrap_classes', [ $this, 'add_wrap_classes' ] ); // Enable storing spam entries for new setup. add_filter( 'wpforms_create_form_args', [ $this, 'enable_store_spam_entries' ], 15 ); // Akismet submit ham. add_action( 'wpforms_pro_anti_spam_entry_set_as_not_spam', [ $this, 'maybe_akismet_submit_ham' ], 10, 2 ); // Akismet submit spam. add_action( 'wpforms_pro_anti_spam_entry_marked_as_spam', [ $this, 'maybe_akismet_submit_spam' ], 10, 2 ); } /** * Add spam status to the entry save args. * * @since 1.8.3 * * @param array $args Entry save args. * @param array $form_data Form data. * * @return array */ public function add_spam_status( $args, $form_data ) { if ( $this->is_spam_form_data( $form_data ) ) { $args['status'] = self::ENTRY_STATUS; } return $args; } /** * Add spam meta data to the entry. * * @since 1.8.3 * * @param array $fields Entry fields. * @param array $entry Entry data. * @param array $form_data Form data. * @param int $entry_id Entry ID. */ public function add_meta_data( $fields, $entry, $form_data, $entry_id ) { $spam_reason = ! empty( $form_data['spam_reason'] ) ? $form_data['spam_reason'] : null; if ( ! $spam_reason ) { return; } wpforms()->obj( 'entry_meta' )->add( [ 'entry_id' => absint( $entry_id ), 'form_id' => absint( $form_data['id'] ), 'type' => 'spam', 'data' => sanitize_text_field( $spam_reason ), ], 'entry_meta' ); wpforms()->obj( 'entry_meta' )->add( [ 'entry_id' => absint( $entry_id ), 'form_id' => absint( $form_data['id'] ), 'type' => 'post_data_raw', 'data' => wp_json_encode( $form_data['post_data_raw'] ), ], 'entry_meta' ); } /** * Get entry spam reason. * * @since 1.8.3 * * @param int $entry_id Entry ID. * * @return string */ private function get_spam_reason( $entry_id ) { $reason = wpforms()->obj( 'entry_meta' )->get_meta( [ 'entry_id' => absint( $entry_id ), 'type' => 'spam', 'number' => 1, ] ); return ! empty( $reason[0] ) ? $reason[0]->data : ''; } /** * Get entry post data raw. * * @since 1.8.3 * * @param int $entry_id Entry ID. * * @return array */ private function get_entry_post_data_raw( $entry_id ) { $post_data_raw = wpforms()->obj( 'entry_meta' )->get_meta( [ 'entry_id' => absint( $entry_id ), 'type' => 'post_data_raw', 'number' => 1, ] ); return ! empty( $post_data_raw[0] ) ? json_decode( $post_data_raw[0]->data, true ) : []; } /** * Disable entry email if the entry is marked as spam. * * @since 1.8.3 * * @param bool $enabled Whether the email is enabled. * @param array $fields Entry fields. * @param array $entry Entry data. * @param array $form_data Form data. * * @return bool */ public function disable_entry_email( $enabled, $fields, $entry, $form_data ) { if ( $this->is_spam_form_data( $form_data ) ) { return false; } return $enabled; } /** * Send entry email if the entry is marked as spam. * * @since 1.8.3 * * @param int $entry_id Entry ID. * @param array $fields Entry fields. * @param array $form_data Form data. */ private function send_entry_email( $entry_id, $fields, $form_data ) { wpforms()->obj( 'process' )->entry_email( $fields, [], $form_data, $entry_id, 'entry' ); } /** * Delete entry spam reason. * * @since 1.8.3 * * @param int $entry_id Entry ID. */ private function delete_spam_reason( $entry_id ) { wpforms()->obj( 'entry_meta' )->delete( [ 'entry_id' => absint( $entry_id ), 'type' => 'spam', ] ); } /** * Add spam entries to the entries table counts. * * @since 1.8.3 * * @param array $counts Entries table counts. * @param array $form_data Form data. * * @return array */ public function entries_table_counts( $counts, $form_data ) { $counts['spam'] = $this->get_spam_entries_count( $form_data['id'] ); return $counts; } /** * Add spam entries to the entries table views. * * @since 1.8.3 * * @param array $views Entries table views. * @param array $form_data Form data. * @param array $counts Entries table counts. * * @return array */ public function entries_table_views( $views, $form_data, $counts ) { $views['spam'] = sprintf( '<a href="%1$s" class="%2$s">%3$s <span class="count">(%4$d)</span></a>', esc_url( $this->get_spam_entries_list_url( $form_data['id'] ) ), $this->is_spam_list() ? 'current' : '', esc_html__( 'Spam', 'wpforms' ), absint( $counts['spam'] ) ); return $views; } /** * Display spam entry notices. * * @since 1.8.3 */ public function entry_notices() { if ( ! wpforms_is_admin_page( 'entries' ) ) { return; } $this->maybe_display_success_message(); $this->maybe_display_error_message(); $this->display_purge_notice(); } /** * Maybe display a success message. * * @since 1.8.3 */ private function maybe_display_success_message() { // Show a success message after marking entry as not spam. $message = ! empty( $_GET['message'] ) ? sanitize_text_field( wp_unslash( $_GET['message'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification $action = ! empty( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification if ( $message === 'unspam' && $action !== 'spam' ) { wpforms()->obj( 'notice' )->success( esc_html__( 'Entry successfully unmarked as spam.', 'wpforms' ) ); } } /** * Maybe display an error message. * * @since 1.8.3 */ private function maybe_display_error_message() { if ( ! wpforms_is_admin_page( 'entries', 'details' ) ) { return; } $entry_id = $this->get_current_entry_id(); if ( ! $entry_id ) { return; } $is_spam = $this->is_spam_entry( $entry_id ); if ( ! $is_spam ) { return; } $spam_reason = $this->get_spam_reason( $entry_id ); $mark_not_spam_url = wp_nonce_url( add_query_arg( [ 'action' => 'mark_not_spam', 'entry_id' => $entry_id, ] ), 'edit-entry' ); // Show error message if entry is spam. wpforms()->obj( 'notice' )->error( sprintf( '%s %s', sprintf( /* translators: %s - antispam method. */ esc_html__( 'This entry was marked as spam by %s.', 'wpforms' ), esc_html( $spam_reason ) ), sprintf( '<a href="%1$s">%2$s</a>', esc_url( $mark_not_spam_url ), esc_html__( 'Mark as Not Spam', 'wpforms' ) ) ), [ 'class' => 'wpforms-notice-spam', ] ); } /** * Display purge notice. * * The notice should be displayed over the Spam Entries list informing the user * that the entries will be purged automatically. * * @since 1.9.1 **/ private function display_purge_notice() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended if ( ! isset( $_GET['status'] ) || $_GET['status'] !== self::ENTRY_STATUS ) { return; } $days = Helpers::get_delete_spam_entries_days(); if ( $days === false ) { return; } /* translators: %d - number of days. */ $days_text = sprintf( esc_html__( '%d days', 'wpforms' ), $days ); $link = defined( 'WPFORMS_DELETE_SPAM_ENTRIES' ) ? $days_text : '<a href="' . esc_url( admin_url( 'admin.php?page=wpforms-settings&view=misc' ) ) . '">' . $days_text . '</a>'; $message = sprintf( '<p>%s</p>', sprintf( /* translators: %s - number of days wrapped in the link to the settings page. */ esc_html__( 'Spam entries older than %s are automatically deleted.', 'wpforms' ), $link ) ); // Display the notice. wpforms()->obj( 'notice' )->info( $message ); } /** * Entry actions. * * @since 1.8.3 */ public function entry_actions() { $nonce = ! empty( $_REQUEST['_wpnonce'] ) ? sanitize_key( $_REQUEST['_wpnonce'] ) : ''; if ( ! wp_verify_nonce( $nonce, 'edit-entry' ) ) { return; } $action = ! empty( $_REQUEST['action'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) : ''; if ( $action === 'mark_not_spam' ) { $this->action_mark_not_spam(); } if ( $action === 'spam' ) { $this->action_mark_spam(); } } /** * Mark entry as not spam action. * * @since 1.8.3 */ private function action_mark_not_spam() { $entry_id = $this->get_current_entry_id(); if ( ! $this->is_spam_entry( $entry_id ) ) { return; } // Prepare entry data to use in post-processing. $entry = wpforms()->obj( 'entry' )->get( $entry_id ); if ( ! $entry ) { return; } // Mark entry as not spam. $this->set_as_not_spam( $entry ); $this->process_complete( $entry ); } /** * Mark entry as spam action. * * @since 1.8.9 */ private function action_mark_spam() { $entry_id = $this->get_current_entry_id(); if ( $this->is_spam_entry( $entry_id ) ) { return; } $form_id = $this->get_current_form_id(); $user = get_user_by( 'id', get_current_user_id() ); $this->set_as_spam( $entry_id, $form_id, $user->display_name ); } /** * Process entry as not spam. * * @since 1.8.3 * * @param object $entry Entry data. */ private function process_complete( $entry ) { $entry_id = $entry->entry_id; $form_id = $entry->form_id; $fields = wpforms_decode( $entry->fields ); $form_data = wpforms()->obj( 'form' )->get( $form_id, [ 'content_only' => true, ] ); $form_data['post_data_raw'] = $this->get_entry_post_data_raw( $entry_id ); wpforms()->obj( 'process' )->process_complete( $form_id, $form_data, $fields, [], $entry_id ); // Send email notification. $this->send_entry_email( $entry_id, $fields, $form_data ); $url = remove_query_arg( [ 'action', '_wpnonce' ], wp_get_referer() ); wp_safe_redirect( add_query_arg( 'message', 'unspam', $url ) ); exit; } /** * Filter entries list by spam status. * * @since 1.8.3 * * @param array $entries_list Entries list. * @param array $args Query args. * * @return array */ public function filter_process_actions_entries_list( $entries_list, $args ) { $ids = $args['entry_id']; if ( empty( $ids ) ) { return $entries_list; } /** * If we have just one entry ID in the list, it means that bulk action fired for spam entries. * If it is, we need to change the status of the query to 'spam' to get the correct list. */ if ( $this->is_spam_entry( $ids[0] ) ) { $args['status'] = self::ENTRY_STATUS; $entries_list = (array) wpforms()->obj( 'entry' )->get_entries( $args ); } return $entries_list; } /** * Add spam action link to the entry details sidebar. * * @since 1.8.9 * * @param array $action_links Action links. * @param object $entry Entry data. * * @return array */ public function add_spam_action_link( array $action_links, $entry ): array { $action_links['spam'] = [ 'label' => esc_html__( 'Mark as Spam', 'wpforms' ), 'icon' => 'dashicons-shield', 'url' => wp_nonce_url( add_query_arg( [ 'action' => 'spam', 'entry_id' => $entry->entry_id, 'form_id' => $entry->form_id, ] ), 'edit-entry' ), ]; return $action_links; } /** * Set entry as not spam. * * @since 1.8.3 * * @param object $entry Entry data. */ public function set_as_not_spam( $entry ) { wpforms()->obj( 'entry' )->update( $entry->entry_id, [ 'status' => '' ] ); // Add record to entry meta. wpforms()->obj( 'entry_meta' )->add( [ 'entry_id' => (int) $entry->entry_id, 'form_id' => (int) $entry->form_id, 'user_id' => get_current_user_id(), 'type' => 'log', 'data' => wpautop( sprintf( '<em>%s</em>', __( 'Marked as not spam.', 'wpforms' ) ) ), ], 'entry_meta' ); /** * Fires after the entry is set as not spam. * * @since 1.8.8 * * @param int $entry_id Entry ID. * @param int $form_id Form ID. */ do_action( 'wpforms_pro_anti_spam_entry_set_as_not_spam', $entry->entry_id, $entry->form_id ); $this->delete_spam_reason( $entry->entry_id ); } /** * Disallow details actions for spam entries. * * @since 1.8.3 * * @param bool $disable Disable actions. * @param object $entry Entry object. * * @return bool */ public function disallow_details_actions( $disable, $entry ) { return $this->is_spam_entry( $entry->entry_id ); } /** * Filter entry actions for spam entries. * * @since 1.8.3 * * @param array $actions Actions. * @param object $entry Entry object. * * @return array */ public function filter_entry_actions( $actions, $entry ) { if ( ! wpforms_current_user_can( 'edit_entries_form_single', $entry->form_id ) ) { return $actions; } if ( $this->is_spam_entry( $entry->entry_id ) ) { $args = [ 'action' => 'mark_not_spam', 'entry_id' => $entry->entry_id, 'form_id' => $entry->form_id, ]; $url = wp_nonce_url( $this->get_spam_entries_list_url( $entry->form_id, $args ), 'edit-entry' ); $actions['edit'] = sprintf( '<a href="%s" title="%s" class="mark-not-spam">%s</a>', esc_url( $url ), esc_attr__( 'Mark as Not Spam', 'wpforms' ), esc_html__( 'Not Spam', 'wpforms' ) ); } if ( ! $this->is_spam_entry( $entry->entry_id ) ) { $action = [ 'spam' => sprintf( '<a href="%s" title="%s" class="mark-spam">%s</a>', esc_url( wp_nonce_url( add_query_arg( [ 'view' => 'list', 'action' => 'spam', 'form_id' => $entry->form_id, 'entry_id' => $entry->entry_id, ] ), 'edit-entry' ) ), esc_attr__( 'Mark as Spam', 'wpforms' ), esc_html__( 'Spam', 'wpforms' ) ), ]; $actions = wpforms_list_insert_before( $actions, 'trash', $action ); } return $actions; } /** * Disallow entry date range filter for spam entries. * * @since 1.8.3 * * @return bool */ public function disable_date_range_filter() { return $this->is_spam_list(); } /** * Add button to remove spam entries. * * @since 1.8.3 */ public function add_remove_spam_entries_button() { $form_id = $this->get_current_form_id(); if ( ! $form_id ) { return; } if ( ! $this->is_spam_list() ) { return; } if ( ! $this->get_spam_entries_count( $form_id ) ) { return; } $base = add_query_arg( [ 'page' => 'wpforms-entries', 'view' => 'list', 'form_id' => absint( $form_id ), ], admin_url( 'admin.php' ) ); printf( '<a href="%1$s" class="button delete-all form-details-actions-removeall" data-page="spam">%2$s</a>', esc_url( wp_nonce_url( $base, 'bulk-entries' ) ), esc_html__( 'Empty Spam', 'wpforms' ) ); } /** * Filter bulk actions for spam entries. * * @since 1.8.3 * * @param array $actions Bulk actions. * * @return array */ public function filter_bulk_actions( $actions ) { if ( ! $this->is_spam_list() ) { unset( $actions['unspam'] ); } if ( $this->is_spam_list() ) { $allowed_actions = [ 'read', 'unread', 'null', 'trash', 'delete', 'unspam', ]; $actions = array_intersect_key( $actions, array_flip( $allowed_actions ) ); } return $actions; } /** * Add spam entries table class. * * @since 1.8.3 * * @param array $classes Table classes. * * @return array */ public function add_spam_entries_table_class( $classes ) { if ( $this->is_spam_list() ) { $classes[] = 'wpforms-entries-table-spam'; } return $classes; } /** * Add spam entries wrap class. * * @since 1.8.3 * * @param array $classes Wrap classes. * * @return array */ public function add_wrap_classes( $classes ) { if ( $this->is_spam_list() && ! $this->get_spam_entries_count( $this->get_current_form_id() ) ) { $classes[] = 'wpforms-entries-spam-empty'; } return $classes; } /** * Enable storing entries for new setup. * * @since 1.8.7 * * @param array $args Form args. */ public function enable_store_spam_entries( $args ) { if ( ! wpforms()->is_pro() ) { return $args; } $post_content = $args['post_content'] ?? ''; if ( ! empty( $post_content ) ) { $post_content = json_decode( wp_unslash( $post_content ), true ); // New forms created from templates may explicitly set it to 0|false, we must respect that. $post_content['settings']['store_spam_entries'] = $post_content['settings']['store_spam_entries'] ?? 1; $args['post_content'] = wpforms_encode( $post_content ); } return $args; } /** * Filter Back to All Entries link for spam entries. * * @since 1.8.3 * * @param string $url Form URL. * @param int $entry_id Entry ID. * @param int $form_id Form ID. * * @return string */ public function filter_spam_form_url( $url, $entry_id, $form_id ) { if ( $this->is_spam_entry( $entry_id ) ) { return $this->get_spam_entries_list_url( $form_id ); } return $url; } /** * Submit Akismet ham (false positives) after marking entry as not spam. * * This call is intended for the submission of false positives – * items that were incorrectly classified as spam by Akismet. * * See docs: https://akismet.com/developers/detailed-docs/submit-ham-false-positives/ * * @since 1.8.8 * * @param int $entry_id Entry ID. * @param int $form_id Form ID. */ public function maybe_akismet_submit_ham( $entry_id, $form_id ) { $this->submit_akismet( $entry_id, $form_id, 'ham' ); } /** * Submit Akismet spam after marking entry as spam. * * This call is intended for the submission of missed spam – * items that were incorrectly classified as ham by Akismet. * * See docs: https://akismet.com/developers/detailed-docs/submit-spam/ * * @since 1.8.9 * * @param int $entry_id Entry ID. * @param int $form_id Form ID. */ public function maybe_akismet_submit_spam( $entry_id, $form_id ) { $this->submit_akismet( $entry_id, $form_id, 'spam' ); } /** * Submit entry to Akismet. * This method is used to submit the entry as spam or ham in Akismet. * * @since 1.8.9 * * @param int $entry_id Entry ID. * @param int $form_id Form ID. * @param string $type Type of submission (spam or ham). */ private function submit_akismet( $entry_id, $form_id, $type ) { $form_data = $this->get_form_data( $form_id ); if ( ! $this->is_akismet_allowed( $form_data ) ) { return; } $entry_data = $this->get_entry_data( $entry_id ); if ( $type === 'spam' ) { // Submit the entry as spam in Akismet. wpforms()->obj( 'akismet' )->submit_missed_spam( $form_data, $entry_data ); } if ( $type === 'ham' ) { // Submit the entry as not spam in Akismet. wpforms()->obj( 'akismet' )->set_entry_not_spam( $form_data, $entry_data ); } } /** * Check if Akismet is allowed for the form. * * @since 1.8.9 * * @param array $form_data Form data. * * @return bool */ private function is_akismet_allowed( array $form_data ): bool { // Check if Akismet is enabled for the form. if ( empty( $form_data['settings']['akismet'] ) ) { return false; } // Check if Akismet is configured. if ( ! wpforms()->obj( 'akismet' )::is_configured() ) { return false; } return true; } /** * Set entry as spam. * * @since 1.8.9 * * @param int $entry_id Entry ID. * @param int $form_id Form ID. * @param string $reason Reason for marking as spam. */ public function set_as_spam( $entry_id, $form_id, $reason ) { wpforms()->obj( 'entry' )->update( $entry_id, [ 'status' => self::ENTRY_STATUS ] ); wpforms()->obj( 'entry_meta' )->add( [ 'entry_id' => (int) $entry_id, 'form_id' => (int) $form_id, 'type' => 'spam', 'data' => sanitize_text_field( $reason ), ], 'entry_meta' ); /** * Fires after the entry is marked as spam. * * @since 1.8.9 * * @param int $entry_id Entry ID. * @param int $form_id Form ID. */ do_action( 'wpforms_pro_anti_spam_entry_marked_as_spam', $entry_id, $form_id ); } /** * Get the form data. * * @since 1.8.9 * * @param int $form_id Form ID. * * @return array */ private function get_form_data( $form_id ) { return wpforms()->obj( 'form' )->get( $form_id, [ 'content_only' => true, ] ); } /** * Get the entry data. * * @since 1.8.9 * * @param int $entry_id Entry ID. * * @return array */ private function get_entry_data( $entry_id ) { $entry = wpforms()->obj( 'entry' )->get( $entry_id ); if ( ! $entry ) { return []; } $entry_fields = wpforms_decode( $entry->fields ); return [ 'entry_id' => $entry_id, 'fields' => $entry_fields, ]; } /** * Check if entry is spam. * * @since 1.8.3 * * @param int $entry_id Entry ID. * * @return bool */ private function is_spam_entry( $entry_id ) { $entry = wpforms()->obj( 'entry' )->get( $entry_id ); if ( ! $entry ) { return false; } return $entry->status === self::ENTRY_STATUS; } /** * Check if form data marked as spam. * * @since 1.8.3 * * @param array $form_data Form data. * * @return bool */ private function is_spam_form_data( $form_data ) { return ! empty( $form_data['spam_reason'] ); } /** * Check if the current page is a spam list. * * @since 1.8.3 * * @return bool */ public function is_spam_list() { $status = ! empty( $_GET['status'] ) ? sanitize_text_field( wp_unslash( $_GET['status'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended return $status === self::ENTRY_STATUS; } /** * Get spam entries count. * * @since 1.8.3 * * @param int $form_id Form ID. * * @return int */ private function get_spam_entries_count( $form_id ) { return wpforms()->obj( 'entry' )->get_entries( [ 'form_id' => $form_id, 'status' => self::ENTRY_STATUS, ], true ); } /** * Get spam entries list URL. * * @since 1.8.3 * * @param int $form_id Form ID. * @param array $args Additional arguments. * * @return string */ private function get_spam_entries_list_url( $form_id, $args = [] ) { $defaults = [ 'page' => 'wpforms-entries', 'view' => 'list', 'form_id' => $form_id, 'status' => self::ENTRY_STATUS, ]; $args = wp_parse_args( $args, $defaults ); $base = remove_query_arg( [ 'type', 'status', 'paged' ] ); return add_query_arg( $args, $base ); } /** * Get current entry ID. * * @since 1.8.3 * * @return int */ private function get_current_entry_id() { return ! empty( $_REQUEST['entry_id'] ) ? absint( $_REQUEST['entry_id'] ) : 0; // phpcs:ignore WordPress.Security.NonceVerification.Recommended } /** * Get current form ID. * * @since 1.8.3 * * @return int */ private function get_current_form_id() { return ! empty( $_REQUEST['form_id'] ) ? absint( $_REQUEST['form_id'] ) : 0; // phpcs:ignore WordPress.Security.NonceVerification.Recommended } } Upload File Directory Listing NameTypeSizeActions.. (Parent Directory)DirCountryFilter.phpFile13.83 KB Rename | Delete | EditHelpers.phpFile1.58 KB Rename | Delete | EditKeywordFilter.phpFile11.56 KB Rename | Delete | EditSpamEntry.phpFile24.59 KB Rename | Delete | Edit