| Server IP : 43.141.49.119 / Your IP : 113.219.202.141 Web Server : Apache System : Linux VM-8-5-opencloudos 6.6.34-9.oc9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 19 19:35:45 CST 2024 x86_64 User : www ( 1000) PHP Version : 8.1.27 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/wwwroot/www.ucppt.com/wp-content/plugins/simple-csv-exporter/src/ |
Upload File : |
<?php
namespace HAMWORKS\WP\Simple_CSV_Exporter;
/**
* Class Exporter
*
* @package HAMWORKS\WP\Simple_CSV_Exporter
*/
class Exporter {
/**
* @var Nonce
*/
private Nonce $nonce;
/**
* @var Data_Builder
*/
private Data_Builder $data_builder;
/**
* @var CSV_Writer
*/
private CSV_Writer $csv_writer;
/**
* Exporter
*
* @param Nonce $nonce
* @param Data_Builder $data_builder
* @param CSV_Writer $csv_writer
*/
public function __construct( Nonce $nonce, Data_Builder $data_builder, CSV_Writer $csv_writer ) {
$this->nonce = $nonce;
$this->data_builder = $data_builder;
$this->csv_writer = $csv_writer;
$this->process_request();
}
private function process_request() {
if ( ! $this->nonce->verify() ) {
return;
}
if ( ! current_user_can( 'export' ) ) {
wp_die( esc_html__( 'Sorry, you are not allowed to export the content of this site.', 'default' ) );
}
if ( $this->data_builder ) {
$this->do_export();
} else {
wp_die( 'No data!' );
}
}
private function do_export() {
$this->send_headers( $this->data_builder->get_name() . '.csv' );
$this->csv_writer->set_rows( $this->data_builder );
$this->csv_writer->set_file_name( 'php://output' );
try {
$this->csv_writer->render();
} catch ( \Exception $e ) {
wp_die( esc_html( $e->getMessage() ) );
}
exit();
}
/**
* Response headers.
*
* @param string $file_name
*/
private function send_headers( string $file_name ) {
header( 'Content-Type: application/octet-stream' );
header( "Content-Disposition: attachment; filename={$file_name}" );
header( 'Content-Transfer-Encoding: binary' );
}
}