Файловый менеджер - Редактировать - /home/avadvi5/public_html/wp-content/plugins/wp-mail-smtp-pro/src/Pro/Emails/Logs/Reports/Table.php
Ðазад
<?php namespace WPMailSMTP\Pro\Emails\Logs\Reports; use WPMailSMTP\Admin\Area; use WPMailSMTP\Helpers\Helpers; if ( ! class_exists( 'WP_List_Table', false ) ) { require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php'; } /** * Class Table that displays the list of email stats. * * @since 3.0.0 */ class Table extends \WP_List_Table { /** * Emails stats report object. * * @since 3.0.0 * * @var Report */ protected $report; /** * Constructor. * * @since 3.0.0 * * @param Report $report Emails stats report object. */ public function __construct( $report ) { $this->report = $report; // Set parent defaults. parent::__construct( [ 'singular' => 'report-item', 'plural' => 'report-items', 'screen' => 'wp-mail-smtp_page_wp-mail-smtp-reports', ] ); } /** * Define the table columns. * * @since 3.0.0 * * @return array Associative array of slug=>name columns data. */ public function get_columns() { $columns = []; $columns['subject'] = esc_html__( 'Subject', 'wp-mail-smtp-pro' ); $columns['total_count'] = esc_html__( 'Total', 'wp-mail-smtp-pro' ); if ( Helpers::mailer_without_send_confirmation() ) { $columns['sent_count'] = esc_html__( 'Sent', 'wp-mail-smtp-pro' ); } else { $columns['confirmed_count'] = esc_html__( 'Confirmed', 'wp-mail-smtp-pro' ); $columns['unconfirmed_count'] = esc_html__( 'Unconfirmed', 'wp-mail-smtp-pro' ); } $columns['unsent_count'] = esc_html__( 'Failed', 'wp-mail-smtp-pro' ); if ( wp_mail_smtp()->get_pro()->get_logs()->is_enabled_open_email_tracking() ) { $columns['open_count'] = esc_html__( 'Open Count', 'wp-mail-smtp-pro' ); } if ( wp_mail_smtp()->get_pro()->get_logs()->is_enabled_click_link_tracking() ) { $columns['click_count'] = esc_html__( 'Click Count', 'wp-mail-smtp-pro' ); } $columns['graph'] = esc_html__( 'Graph', 'wp-mail-smtp-pro' ); return $columns; } /** * Define columns that are sortable. * * @since 3.0.0 * * @return array List of columns that should be sortable. */ public function get_sortable_columns() { return [ 'subject' => [ 'subject', false ], 'total_count' => [ 'total', false ], 'sent_count' => [ 'sent', false ], 'confirmed_count' => [ 'delivered', false ], 'unconfirmed_count' => [ 'sent', false ], 'unsent_count' => [ 'unsent', false ], 'open_count' => [ 'open_count', false ], 'click_count' => [ 'click_count', false ], ]; } /** * Display Email subject. * * @since 3.0.0 * * @param array $item Stats row. * * @return string */ public function column_subject( $item ) { return sprintf( '<a href="#" class="subject-toggle-single-stats" data-subject="%1$s">%2$s</a>', esc_attr( $item['subject'] ), esc_html( $item['subject'] ) ); } /** * Display emails total count. * * @since 3.0.0 * * @param array $item Stats row. * * @return string */ public function column_total_count( $item ) { return $this->report->get_total_count( $item ); } /** * Display emails sent count. * * @since 3.0.0 * * @param array $item Stats row. * * @return string */ public function column_sent_count( $item ) { return sprintf( '%1$d <span>(%2$d%%)</span>', $this->report->get_sent_count( $item ), $this->report->get_sent_percent_count( $item ) ); } /** * Display emails confirmed count. * * @since 3.0.0 * * @param array $item Stats row. * * @return string */ public function column_confirmed_count( $item ) { return sprintf( '%1$d <span>(%2$d%%)</span>', $this->report->get_confirmed_count( $item ), $this->report->get_confirmed_percent_count( $item ) ); } /** * Display emails unconfirmed count. * * @since 3.0.0 * * @param array $item Stats row. * * @return string */ public function column_unconfirmed_count( $item ) { return sprintf( '%1$d <span>(%2$d%%)</span>', $this->report->get_unconfirmed_count( $item ), $this->report->get_unconfirmed_percent_count( $item ) ); } /** * Display emails failed count. * * @since 3.0.0 * * @param array $item Stats row. * * @return string */ public function column_unsent_count( $item ) { return sprintf( '%1$d <span>(%2$d%%)</span>', $this->report->get_unsent_count( $item ), $this->report->get_unsent_percent_count( $item ) ); } /** * Display emails open count. * * @since 3.0.0 * * @param array $item Stats row. * * @return string */ public function column_open_count( $item ) { return sprintf( '%1$d <span>(%2$d%%)</span>', $this->report->get_open_count( $item ), $this->report->get_open_percent_count( $item ) ); } /** * Display emails click link count. * * @since 3.0.0 * * @param array $item Stats row. * * @return string */ public function column_click_count( $item ) { return sprintf( '%1$d <span>(%2$d%%)</span>', $this->report->get_click_count( $item ), $this->report->get_click_percent_count( $item ) ); } /** * Display graph icon. * Used for enable/disable single stat. * * @since 3.0.0 * * @param array $item Stats row. * * @return string */ public function column_graph( $item ) { return sprintf( '<div class="wp-mail-smtp-toggle-single-stats-btn-container"><button type="button" class="js-wp-mail-smtp-toggle-single-stats" data-subject="%s"><i class="dashicons dashicons-chart-line"></i></button></div>', esc_attr( $item['subject'] ) ); } /** * Get the data. * * @since 3.0.0 */ public function prepare_items() { $items = $this->report->get_stats_by_subject(); // Pagination options. $per_page = $this->get_items_per_page( 'wp_mail_smtp_report_items_per_page' ); $page = isset( $_GET['paged'] ) && $_GET['paged'] > 0 ? intval( $_GET['paged'] ) : 1; // phpcs:ignore WordPress.Security.NonceVerification.Recommended $offset = $per_page * ( $page - 1 ); $this->items = array_slice( $items, $offset, $per_page ); $this->set_pagination_args( [ 'total_items' => count( $items ), 'per_page' => $per_page, ] ); } /** * Whether the table has items to display or not. * * @since 3.0.0 * * @return bool */ public function has_items() { return count( $this->items ) > 0; } /** * Message to be displayed when there are no items. * * @since 3.0.0 */ public function no_items() { esc_html_e( 'No email reports are available.', 'wp-mail-smtp-pro' ); } /** * Get the name of the primary column. * Important for the mobile view. * * @since 3.0.0 * * @return string The name of the primary column. */ protected function get_primary_column_name() { return 'subject'; } /** * Generates the table navigation above the table. * * @since 3.0.0 * * @param string $which Navigation location. */ protected function display_tablenav( $which ) { ?> <div class="tablenav <?php echo esc_attr( $which ); ?>"> <?php if ( $which === 'top' ) { // Display filters. $this->filters(); // Display search box. $this->search_box( esc_html__( 'Search Emails', 'wp-mail-smtp-pro' ), Area::SLUG . '-reports-search-input' ); } else { $this->pagination( $which ); } ?> </div> <?php } /** * Filters HTML. * * @since 3.0.0 */ protected function filters() { $timespan = ''; $date = ''; // phpcs:disable WordPress.Security.NonceVerification.Recommended if ( ! empty( $_REQUEST['timespan'] ) ) { $timespan = sanitize_text_field( wp_unslash( $_REQUEST['timespan'] ) ); } if ( ! empty( $_REQUEST['date'] ) ) { $date = sanitize_text_field( wp_unslash( $_REQUEST['date'] ) ); } // phpcs:enable $timespans = [ '7' => esc_html__( 'Last 7 days', 'wp-mail-smtp-pro' ), '14' => esc_html__( 'Last 14 days', 'wp-mail-smtp-pro' ), '30' => esc_html__( 'Last 30 days', 'wp-mail-smtp-pro' ), 'custom' => esc_html__( 'Custom Date Range', 'wp-mail-smtp-pro' ), ]; ?> <div class="alignleft actions wp-mail-smtp-filter-date"> <select name="timespan" class="wp-mail-smtp-filter-date__control"> <?php foreach ( $timespans as $value => $label ) { printf( '<option value="%s" %s>%s</option>', esc_attr( $value ), selected( $timespan, $value, false ), esc_html( $label ) ); } ?> </select> <input type="text" name="date" class="regular-text wp-mail-smtp-filter-date-selector wp-mail-smtp-filter-date__control" placeholder="<?php esc_attr_e( 'Select a date range', 'wp-mail-smtp-pro' ); ?>" value="<?php echo esc_attr( $date ); ?>"> <button type="submit" class="button wp-mail-smtp-filter-date__btn"> <?php esc_html_e( 'Filter', 'wp-mail-smtp-pro' ); ?> </button> </div> <?php } }
| ver. 1.1 | |
.
| PHP 8.3.30 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка