Файловый менеджер - Редактировать - /home/avadvi5/public_html/wp-content/plugins/wp-mail-smtp-pro/src/Pro/Emails/Logs/Export/Handler.php
Ðазад
<?php namespace WPMailSMTP\Pro\Emails\Logs\Export; use WP_Error; use WPMailSMTP\WP; use WPMailSMTP\Pro\Tasks\Logs\ExportCleanupTask; /** * Export request handler. * * @since 2.8.0 */ class Handler { /** * Remove export file trait. * * @since 2.9.0 */ use CanRemoveExportFileTrait; /** * Export request. * * @since 2.8.0 * * @var Request Export request. */ protected $request; /** * Constructor. * * @since 2.8.0 */ public function __construct() { $this->hooks(); } /** * Register hooks. * * @since 2.8.0 */ public function hooks() { add_action( 'admin_init', [ $this, 'init' ] ); } /** * Initialize. * * @since 2.8.0 */ public function init() { $is_valid = $this->check_requirements(); if ( is_wp_error( $is_valid ) ) { if ( WP::is_doing_ajax() ) { wp_send_json_error( [ 'error' => $is_valid->get_error_message() ] ); } else { WP::add_admin_notice( $is_valid->get_error_message() ); return; } } $this->request = new Request( WP::is_doing_ajax() ? 'POST' : 'GET' ); $action = $this->request->get_arg( 'action' ); switch ( $action ) { case 'wp_mail_smtp_tools_export_single_email_log': $this->single_email_log_export(); break; case 'wp_mail_smtp_tools_export_email_logs': add_action( 'wp_ajax_' . $action, [ $this, 'email_logs_export_ajax_handler' ] ); break; case 'wp_mail_smtp_tools_export_download_result': $this->download_export_file(); break; } } /** * Single email log export file download. * * @since 2.8.0 * * @throws \Exception Try-catch. */ public function single_email_log_export() { try { // Check for email_id. if ( empty( $this->request->get_arg( 'email_id' ) ) ) { throw new \Exception( Export::get_config( 'errors', 'unknown_email_id' ) ); } // Security check. if ( ! current_user_can( wp_mail_smtp()->get_pro()->get_logs()->get_manage_capability() ) || ! wp_verify_nonce( $this->request->get_arg( 'nonce' ), 'wp-mail-smtp-tools-export-single-email-log-nonce' ) ) { throw new \Exception( Export::get_config( 'errors', 'security' ) ); } $file = new File(); $is_exported = $file->write( $this->request ); if ( is_wp_error( $is_exported ) ) { throw new \Exception( $is_exported->get_error_message() ); } ( new ExportCleanupTask() )->schedule( $this->request->get_request_id(), Export::get_config( 'export', 'request_data_ttl' ) ); $file->output_file( $this->request ); } catch ( \Exception $e ) { $this->remove_export_file( $this->request->get_request_id() ); $error = Export::get_config( 'errors', 'common' ) . '<br>' . $e->getMessage(); WP::add_admin_notice( $error ); } } /** * Bulk email logs ajax export. * * @since 2.8.0 * * @throws \Exception Try-catch. */ public function email_logs_export_ajax_handler() { try { // Security checks. if ( ! current_user_can( wp_mail_smtp()->get_pro()->get_logs()->get_manage_capability() ) || ! check_ajax_referer( 'wp-mail-smtp-tools-export-email-logs-nonce', 'nonce', false ) ) { throw new \Exception( Export::get_config( 'errors', 'security' ) ); } // Unlimited execution time. WP::set_time_limit(); $is_written = ( new File() )->write( $this->request ); if ( is_wp_error( $is_written ) ) { throw new \Exception( $is_written->get_error_message() ); } // Store request data. $this->request->persist(); if ( $this->request->get_data( 'total_steps' ) === $this->request->get_arg( 'step' ) ) { ( new ExportCleanupTask() )->schedule( $this->request->get_request_id(), Export::get_config( 'export', 'request_data_ttl' ) ); } wp_send_json_success( [ 'request_id' => $this->request->get_request_id(), 'count' => $this->request->get_data( 'count' ), 'total_steps' => $this->request->get_data( 'total_steps' ), 'notices' => $this->request->get_notices(), ] ); } catch ( \Exception $e ) { $this->remove_export_file( $this->request->get_request_id() ); $error = Export::get_config( 'errors', 'common' ) . '<br>' . $e->getMessage(); wp_send_json_error( [ 'error' => $error ] ); } } /** * Download export file. * * @since 2.8.0 * * @throws \Exception Try-catch. */ public function download_export_file() { try { // Security check. if ( ! wp_verify_nonce( $this->request->get_arg( 'nonce' ), 'wp-mail-smtp-tools-export-email-logs-nonce' ) || ! current_user_can( wp_mail_smtp()->get_pro()->get_logs()->get_manage_capability() ) ) { throw new \Exception( Export::get_config( 'errors', 'security' ) ); } // Check for request_id. if ( empty( $this->request->get_request_id() ) ) { throw new \Exception( Export::get_config( 'errors', 'unknown_request' ) ); } ( new File() )->output_file( $this->request ); } catch ( \Exception $e ) { // phpcs:disable $error = Export::get_config( 'errors', 'common' ) . '<br>' . $e->getMessage(); $error = str_replace( "'", ''', $error ); echo " <script> ( function() { var w = window; if ( w.frameElement != null && w.frameElement.nodeName === 'IFRAME' && w.parent.jQuery ) { w.parent.WPMailSmtpEmailLogsExport.displaySubmitSpinner( true ); w.parent.jQuery( w.parent.document ).trigger( 'csv_file_error', [ '" . str_replace( "\n", '', $error ) . "' ] ); w.parent.WPMailSmtpEmailLogsExport.displaySubmitSpinner( false ); } } )(); </script> <pre>" . $error . '</pre>'; exit; // phpcs:enable } } /** * Check export requirements. * * @since 2.8.0 * * @return WP_Error|true */ protected function check_requirements() { if ( ! wp_mail_smtp()->get_pro()->get_logs()->is_valid_db() ) { return new WP_Error( 'empty_email_log', esc_html__( 'No Email Logs found. It looks like the Email Logs database table is missing.', 'wp-mail-smtp-pro' ) ); } return true; } }
| ver. 1.1 | |
.
| PHP 8.3.30 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка