/
var
/
www
/
barefootlaw.org
/
wp-content
/
plugins
/
wpforms
/
src
/
Pro
/
Admin
/
Entries
/
Upload File
HOME
<?php namespace WPForms\Pro\Admin\Entries; /** * Default Entries screen shows a chart and the form entries stats if no form selected. * * @since 1.5.5 */ class DefaultScreen extends \WPForms\Pro\Admin\DashboardWidget { /** * Instance slug. * * @since 1.5.5 * * @const string */ const SLUG = 'entries_default_screen'; /** * Init class. * * @since 1.5.5 */ public function init() { $is_admin_page = wpforms_is_admin_page( 'entries' ) && empty( $_GET['view'] ); // phpcs:ignore WordPress.Security.NonceVerification $is_ajax_request = ( wp_doing_ajax() && false !== strpos( $_REQUEST['action'], 'wpforms_entries_default_screen' ) ); // phpcs:ignore if ( ! $is_admin_page && ! $is_ajax_request ) { return; } $this->hooks(); $this->settings(); } /** * Hooks. We use filters here to redefine certain settings. * So this method should be called before settings() method. * * @since 1.5.5 */ public function hooks() { parent::hooks(); add_action( 'wpforms_admin_page', array( $this, 'content' ) ); // Disable "Screen Options" on Default Screen only. add_filter( 'screen_options_show_screen', static function () { return ! ( wpforms_is_admin_page( 'entries' ) && empty( $_GET['form_id'] ) ); // phpcs:ignore } ); // Display all forms. add_filter( 'wpforms_entries_default_screen_forms_list_number_to_display', static function () { return 0; } ); add_filter( 'wpforms_entries_default_screen_forms_list_columns', array( $this, 'forms_list_columns' ), 10, 2 ); add_filter( 'wpforms_entries_default_screen_forms_list_form_title', array( $this, 'forms_list_form_title' ), 10, 2 ); add_filter( 'wpforms_entries_default_screen_form_item_fields', array( $this, 'form_item_fields' ), 10, 2 ); add_filter( 'wpforms_entries_default_screen_forms_list_additional_cells', array( $this, 'forms_list_additional_cells' ), 10, 2 ); add_filter( 'wpforms_entries_default_screen_forms_list_additional_buttons', array( $this, 'forms_list_additional_buttons' ), 10, 2 ); add_filter( 'wpforms_entries_default_screen_timespan_at_top', '__return_true' ); add_filter( 'wpforms_entries_default_screen_total_entries_title', array( $this, 'total_entries_title' ) ); // Do not cache results in a table - always display up-to-date information. add_filter( 'wpforms_entries_default_screen_date_end_str', static function () { return 'today'; } ); add_filter( 'wpforms_entries_default_screen_allow_data_caching', '__return_false' ); add_filter( 'wpforms_entries_default_screen_cached_data', '__return_false' ); } /** * Display page content. * * @since 1.5.5 */ public function content() { ?> <div id="wpforms-entries-list" class="wrap wpforms-admin-wrap"> <h1 class="page-title"><?php esc_html_e( 'Entries', 'wpforms' ); ?></h1> <div class="wpforms-admin-content" id="wpforms_reports_widget_pro"> <?php $this->widget_content(); ?> </div> </div> <?php } /** * Get timespan options (in days). * * @since 1.5.5 * * @return array */ public function get_timespan_options() { $default = array( 7, 30 ); $options = \apply_filters( 'wpforms_pro_admin_entries_defaultscreen_timespan_options', $default ); if ( ! \is_array( $options ) ) { return $default; } $options = \array_filter( $options, 'is_numeric' ); return empty( $options ) ? $default : $options; } /** * Columns row markup. * * @since 1.5.5 * * @param string $columns Columns row markup. * @param array $forms Forms list data. * * @return string Table header columns. */ public function forms_list_columns( $columns, $forms ) { $days = empty( $this->runtime_data['days'] ) ? $this->widget_meta( 'get', 'timespan' ) : $this->runtime_data['days']; /* translators: %d - Selected timespan (in days). */ $last_n_days = sprintf( esc_html__( 'Last %d days', 'wpforms' ), (int) $days ); return '<tr class="wpforms-dash-widget-forms-list-columns"> <td>' . esc_html__( 'Form Name', 'wpforms' ) . '</td> <td>' . esc_html__( 'Created', 'wpforms' ) . '</td> <td>' . esc_html__( 'All Time', 'wpforms' ) . '</td> <td>' . $last_n_days . '</td> <td>' . esc_html__( 'Graph', 'wpforms' ) . '</td> </tr>'; } /** * Form title with link to form entries. * * @since 1.5.5 * * @param string $form_title Form title. * @param array $form Form data. * * @return string Link to form entries. */ public function forms_list_form_title( $form_title, $form ) { $form_title = '<a href="' . \esc_url( $form['total_url'] ) . '" class="">' . esc_html( $form_title ) . '</a>'; return $form_title; } /** * Forms list additional cells. * * @since 1.5.5 * * @param string $html Cells markup. * @param array $form Form data. * * @return string Cell `Created` markup. */ public function forms_list_additional_cells( $html, $form ) { return '<td>' . esc_html( $form['created_date'] ) . '</td> <td><a href="' . esc_url( $form['total_url'] ) . '">' . esc_html( $form['total'] ) . '</a></td>'; } /** * Forms list additional buttons. * * @since 1.5.5 * * @param string $html Buttons markup. * @param array $form Form data. * * @return string "Reset" button markup. */ public function forms_list_additional_buttons( $html, $form ) { return '<button type="button" class="wpforms-dash-widget-reset-chart wpforms-hide" title="' . \esc_attr__( 'Reset chart to display all forms', 'wpforms' ) . '"> <span class="dashicons dashicons-dismiss"></span> </button>'; } /** * Form item data elements filter. * * @since 1.5.5 * * @param array $form_item Form item data. * @param \WP_Post $form Form object. * * @return array Form item data. */ public function form_item_fields( $form_item, $form ) { $form_item['created_date'] = date_i18n( get_option( 'date_format' ), strtotime( $form->post_date ) ); $form_item['total_url'] = $form_item['edit_url']; $form_item['total'] = wpforms()->entry->get_entries( array( 'form_id' => $form_item['form_id'], ), true ); $dates = $this->get_days_interval(); if ( ! ( empty( $dates['start'] ) || empty( $dates['end'] ) ) ) { $form_item['edit_url'] = add_query_arg( array( 'action' => 'filter_date', 'date' => $dates['start']->format( 'Y-m-d' ) . ' - ' . $dates['end']->format( 'Y-m-d' ), ), $form_item['edit_url'] ); } return $form_item; } /** * Total entries title filter. * * @since 1.5.5 * * @param string $title Title. * * @return string Title. */ public function total_entries_title( $title ) { return \esc_html__( 'Entries Overview', 'wpforms' ); } /** * Do not display recommended plugin block. * * @since 1.5.5 */ public function recommended_plugin_block_html() { } /** * Content if a user has no forms. * * @since 1.6.2.3 */ public function widget_content_no_forms_html() { echo wpforms_render( 'admin/empty-states/no-forms' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } }