Changeset 3199315
- Timestamp:
- 11/29/2024 09:21:43 AM (16 months ago)
- Location:
- simple-csv-exporter
- Files:
-
- 6 added
- 24 edited
- 1 copied
-
tags/3.0.2 (copied) (copied from simple-csv-exporter/trunk)
-
tags/3.0.2/readme.txt (modified) (2 diffs)
-
tags/3.0.2/simple-csv-exporter.php (modified) (1 diff)
-
tags/3.0.2/src/Admin_UI.php (modified) (6 diffs)
-
tags/3.0.2/src/CSV_Writer.php (modified) (2 diffs)
-
tags/3.0.2/src/CSV_Writer_With_BOM.php (added)
-
tags/3.0.2/src/Container_Factory.php (modified) (2 diffs)
-
tags/3.0.2/src/Encodings.php (added)
-
tags/3.0.2/src/Exporter.php (modified) (2 diffs)
-
tags/3.0.2/src/Request.php (added)
-
tags/3.0.2/src/Simple_CSV_Exporter.php (modified) (2 diffs)
-
tags/3.0.2/vendor/autoload.php (modified) (1 diff)
-
tags/3.0.2/vendor/composer/autoload_classmap.php (modified) (1 diff)
-
tags/3.0.2/vendor/composer/autoload_real.php (modified) (2 diffs)
-
tags/3.0.2/vendor/composer/autoload_static.php (modified) (3 diffs)
-
tags/3.0.2/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/simple-csv-exporter.php (modified) (1 diff)
-
trunk/src/Admin_UI.php (modified) (6 diffs)
-
trunk/src/CSV_Writer.php (modified) (2 diffs)
-
trunk/src/CSV_Writer_With_BOM.php (added)
-
trunk/src/Container_Factory.php (modified) (2 diffs)
-
trunk/src/Encodings.php (added)
-
trunk/src/Exporter.php (modified) (2 diffs)
-
trunk/src/Request.php (added)
-
trunk/src/Simple_CSV_Exporter.php (modified) (2 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_classmap.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (3 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
simple-csv-exporter/tags/3.0.2/readme.txt
r3199300 r3199315 6 6 Tested up to: 6.7 7 7 Requires PHP: 7.4 8 Stable tag: 3.0. 08 Stable tag: 3.0.2 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 74 74 == Changelog == 75 75 76 = 3.0.0 = 77 * Add support UTF-8 with BOM. 78 * Refactor code. 79 76 80 = 2.2.0 = 77 81 * Add `simple_csv_exporter_data_builder_for_wp_posts_get_the_terms_field` filter. -
simple-csv-exporter/tags/3.0.2/simple-csv-exporter.php
r3199300 r3199315 11 11 * Domain Path: /languages 12 12 * Requires PHP: 8.0 13 * Version: 3.0. 013 * Version: 3.0.2 14 14 */ 15 15 -
simple-csv-exporter/tags/3.0.2/src/Admin_UI.php
r3197984 r3199315 21 21 22 22 /** 23 * @var string23 * @var Request 24 24 */ 25 private string $post_type_var_name; 25 private Request $request; 26 27 /** 28 * @var Encodings 29 */ 30 private Encodings $encodings; 26 31 27 32 /** … … 29 34 * 30 35 * @param string $slug Slug for admin page. 31 * @param string $post_type_var_name `name` attribute for post type select control.36 * @param Request $request 32 37 * @param Nonce $nonce 33 38 */ 34 public function __construct( string $slug, string $post_type_var_name, Nonce $nonce) {39 public function __construct( string $slug, Request $request, Nonce $nonce, Encodings $encodings ) { 35 40 add_action( 36 41 'admin_menu', … … 39 44 } 40 45 ); 41 $this->slug = $slug; 42 $this->nonce = $nonce; 43 $this->post_type_var_name = $post_type_var_name; 46 $this->slug = $slug; 47 $this->nonce = $nonce; 48 $this->request = $request; 49 $this->encodings = $encodings; 44 50 } 45 51 … … 88 94 <form method="post"> 89 95 <?php $this->nonce->render(); ?> 90 <table >96 <table class="form-table"> 91 97 <tr> 92 98 <th scope="row"> 93 <label for="<?php echo esc_attr( $this-> post_type_var_name); ?>">99 <label for="<?php echo esc_attr( $this->request::POST_TYPE_TO_EXPORT ); ?>"> 94 100 <?php esc_html_e( 'Export', 'simple-csv-exporter' ); ?> 95 101 </label> … … 97 103 <td> 98 104 <select 99 id="<?php echo esc_attr( $this-> post_type_var_name); ?>"100 name="<?php echo esc_attr( $this-> post_type_var_name); ?>"105 id="<?php echo esc_attr( $this->request::POST_TYPE_TO_EXPORT ); ?>" 106 name="<?php echo esc_attr( $this->request::POST_TYPE_TO_EXPORT ); ?>" 101 107 > 102 108 <?php … … 110 116 </td> 111 117 </tr> 118 <tr> 119 <th scope="row"> 120 <label for="<?php echo esc_attr( $this->request::ENCODING ); ?>"> 121 <?php esc_html_e( 'Encoding', 'simple-csv-exporter' ); ?> 122 </label> 123 </th> 124 <td> 125 <select 126 id="<?php echo esc_attr( $this->request::ENCODING ); ?>" 127 name="<?php echo esc_attr( $this->request::ENCODING ); ?>"> 128 <?php foreach ( $this->encodings->get_items() as $encoding ) : ?> 129 <option value="<?php echo esc_attr( $encoding['name'] ); ?>"> 130 <?php echo esc_html( $encoding['value'] ); ?> 131 </option> 132 <?php endforeach; ?> 133 </select> 134 </td> 135 </tr> 112 136 </table> 113 137 <?php submit_button( esc_html__( 'Export', 'simple-csv-exporter' ) ); ?> -
simple-csv-exporter/tags/3.0.2/src/CSV_Writer.php
r3197847 r3199315 13 13 * @var string 14 14 */ 15 pr ivatestring $file_name;15 protected string $file_name; 16 16 17 17 /** 18 18 * @var iterable 19 19 */ 20 pr ivateiterable $rows;20 protected iterable $rows; 21 21 22 22 /** 23 23 * CSV_Builder constructor. 24 24 * 25 * @param iterable $rows 25 * @param iterable|null $rows 26 * @param string|null $file_name 27 */ 28 public function __construct( iterable $rows = null, string $file_name = null ) { 29 if ( $rows ) { 30 $this->rows = $rows; 31 } 32 if ( $file_name ) { 33 $this->file_name = $file_name; 34 } 35 } 36 37 /** 26 38 * @param string $file_name 27 39 */ 28 public function __construct( iterable $rows, string $file_name ) { 29 $this->rows = $rows; 40 public function set_file_name( string $file_name ): void { 30 41 $this->file_name = $file_name; 31 42 } 32 43 33 44 /** 45 * @param iterable $rows 46 */ 47 public function set_rows( iterable $rows ): void { 48 $this->rows = $rows; 49 } 50 51 /** 34 52 * Render. 53 * 54 * @throws \Exception 35 55 */ 36 56 public function render() { 37 $this->write( $this->rows ); 57 if ( ! $this->file_name || ! $this->rows ) { 58 throw new \Exception( 'File name or rows are not set.' ); 59 } 60 $this->write(); 38 61 } 39 62 40 41 63 /** 42 * Render CSV to Standard IO.64 * Put Contents 43 65 * 44 * @param iterable $data 66 * @param resource $file_pointer 67 * 68 * @return void 45 69 */ 46 public function write( iterable $data ) { 47 // phpcs:ignore 48 $file_pointer = fopen( $this->file_name, 'w' ); 49 70 protected function put( $file_pointer ) { 50 71 $header_rendered = false; 51 foreach ( $ dataas $row ) {72 foreach ( $this->rows as $row ) { 52 73 if ( ! $header_rendered ) { 53 74 fputcsv( $file_pointer, array_keys( $row ) ); … … 56 77 fputcsv( $file_pointer, $row ); 57 78 } 79 } 80 81 /** 82 * Write CSV 83 * 84 * @throws \Exception 85 */ 86 public function write() { 87 // phpcs:ignore 88 $file_pointer = fopen( $this->file_name, 'w' ); 89 if ( ! $file_pointer ) { 90 throw new \Exception( 'Could not open file.' ); 91 } 92 $this->put( $file_pointer ); 58 93 // phpcs:ignore 59 94 fclose( $file_pointer ); -
simple-csv-exporter/tags/3.0.2/src/Container_Factory.php
r3197847 r3199315 18 18 19 19 /** 20 * @param string $slug 21 * 20 22 * @return Container 21 23 * @throws Exception 22 24 */ 23 public static function create( ): Container {25 public static function create( string $slug ): Container { 24 26 $builder = new ContainerBuilder(); 25 27 $builder->addDefinitions( 26 28 array( 27 'var.name' => 'post_type_to_export', 28 'slug' => 'simple_csv_exporter', 29 'post_type' => function ( ContainerInterface $c ) { 30 return filter_input( INPUT_POST, $c->get( 'var.name' ), FILTER_SANITIZE_SPECIAL_CHARS ) ?? ''; 31 }, 32 Nonce::class => create()->constructor( get( 'slug' ) ), 29 Nonce::class => create()->constructor( $slug ), 33 30 Data_Builder::class => factory( 34 function ( $post_type) {35 $data_builder = new Data_Builder_For_WP_Posts( $ post_type);31 function ( Request $request ) { 32 $data_builder = new Data_Builder_For_WP_Posts( $request->get_post_type_to_export() ); 36 33 37 34 /** … … 41 38 */ 42 39 do_action( 'simple_csv_exporter_created_data_builder', $data_builder ); 40 43 41 return $data_builder; 44 42 } 45 )->parameter( 'post_type', get( 'post_type' ) ), 46 Admin_UI::class => autowire()->constructor( get( 'slug' ), get( 'var.name' ) ), 47 Exporter::class => autowire()->constructor(), 43 ), 44 CSV_Writer::class => factory( 45 function ( Request $request ) { 46 if ( $request->get_encoding() === Encodings::UTF8_WITH_BOM['name'] ) { 47 $csv_writer = new CSV_Writer_With_BOM(); 48 } else { 49 $csv_writer = new CSV_Writer(); 50 } 51 52 /** 53 * Fires after data generator is created, but before export. 54 * 55 * @param CSV_Writer $csv_writer 56 */ 57 do_action( 'simple_csv_exporter_created_csv_writer', $csv_writer ); 58 59 return $csv_writer; 60 } 61 ), 62 Admin_UI::class => autowire()->constructor( $slug ), 63 Exporter::class => autowire(), 48 64 ) 49 65 ); -
simple-csv-exporter/tags/3.0.2/src/Exporter.php
r3197847 r3199315 20 20 21 21 /** 22 * @var CSV_Writer 23 */ 24 private CSV_Writer $csv_writer; 25 26 /** 22 27 * Exporter 23 28 * 24 29 * @param Nonce $nonce 25 30 * @param Data_Builder $data_builder 31 * @param CSV_Writer $csv_writer 26 32 */ 27 public function __construct( Nonce $nonce, Data_Builder $data_builder ) {33 public function __construct( Nonce $nonce, Data_Builder $data_builder, CSV_Writer $csv_writer ) { 28 34 $this->nonce = $nonce; 29 35 $this->data_builder = $data_builder; 36 $this->csv_writer = $csv_writer; 30 37 31 38 $this->process_request(); … … 50 57 private function do_export() { 51 58 $this->send_headers( $this->data_builder->get_name() . '.csv' ); 52 $csv = new CSV_Writer( $this->data_builder, 'php://output' ); 53 $csv->render(); 59 $this->csv_writer->set_rows( $this->data_builder ); 60 $this->csv_writer->set_file_name( 'php://output' ); 61 62 try { 63 $this->csv_writer->render(); 64 } catch ( \Exception $e ) { 65 wp_die( esc_html( $e->getMessage() ) ); 66 } 67 54 68 exit(); 55 69 } -
simple-csv-exporter/tags/3.0.2/src/Simple_CSV_Exporter.php
r2446249 r3199315 10 10 class Simple_CSV_Exporter { 11 11 12 const SLUG = 'simple_csv_exporter'; 13 12 14 /** 13 15 * Admin constructor. … … 16 18 */ 17 19 public function __construct() { 18 $container = Container_Factory::create(); 20 21 $container = Container_Factory::create( self::SLUG ); 19 22 $container->get( Admin_UI::class ); 20 23 21 $slug = $container->get( 'slug' );22 24 add_action( 23 "load-tools_page_{$slug}",25 'load-tools_page_' . self::SLUG, 24 26 function () use ( $container ) { 25 27 $container->get( Exporter::class ); -
simple-csv-exporter/tags/3.0.2/vendor/autoload.php
r3198551 r3199315 23 23 require_once __DIR__ . '/composer/autoload_real.php'; 24 24 25 return ComposerAutoloaderInit5 39a0472a1ee0fa7de391bf8f828eab8::getLoader();25 return ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df::getLoader(); -
simple-csv-exporter/tags/3.0.2/vendor/composer/autoload_classmap.php
r3197847 r3199315 68 68 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Admin_UI' => $baseDir . '/src/Admin_UI.php', 69 69 'HAMWORKS\\WP\\Simple_CSV_Exporter\\CSV_Writer' => $baseDir . '/src/CSV_Writer.php', 70 'HAMWORKS\\WP\\Simple_CSV_Exporter\\CSV_Writer_With_BOM' => $baseDir . '/src/CSV_Writer_With_BOM.php', 70 71 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Container_Factory' => $baseDir . '/src/Container_Factory.php', 71 72 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder' => $baseDir . '/src/Data_Builder.php', 72 73 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder_For_WP_Posts' => $baseDir . '/src/Data_Builder_For_WP_Posts.php', 74 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Encodings' => $baseDir . '/src/Encodings.php', 73 75 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Exporter' => $baseDir . '/src/Exporter.php', 74 76 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Nonce' => $baseDir . '/src/Nonce.php', 77 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Request' => $baseDir . '/src/Request.php', 75 78 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Simple_CSV_Exporter' => $baseDir . '/src/Simple_CSV_Exporter.php', 76 79 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Tests\\CSV_Writer_Test' => $baseDir . '/tests/CSV_Writer_Test.php', -
simple-csv-exporter/tags/3.0.2/vendor/composer/autoload_real.php
r3198551 r3199315 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit5 39a0472a1ee0fa7de391bf8f828eab85 class ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit5 39a0472a1ee0fa7de391bf8f828eab8', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit5 39a0472a1ee0fa7de391bf8f828eab8', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit596e526f0db295e22573d8b67d4e76df::getInitializer($loader)); 33 33 34 34 $loader->register(true); 35 35 36 $filesToLoad = \Composer\Autoload\ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::$files;36 $filesToLoad = \Composer\Autoload\ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$files; 37 37 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { 38 38 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
simple-csv-exporter/tags/3.0.2/vendor/composer/autoload_static.php
r3198551 r3199315 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab87 class ComposerStaticInit596e526f0db295e22573d8b67d4e76df 8 8 { 9 9 public static $files = array ( … … 129 129 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Admin_UI' => __DIR__ . '/../..' . '/src/Admin_UI.php', 130 130 'HAMWORKS\\WP\\Simple_CSV_Exporter\\CSV_Writer' => __DIR__ . '/../..' . '/src/CSV_Writer.php', 131 'HAMWORKS\\WP\\Simple_CSV_Exporter\\CSV_Writer_With_BOM' => __DIR__ . '/../..' . '/src/CSV_Writer_With_BOM.php', 131 132 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Container_Factory' => __DIR__ . '/../..' . '/src/Container_Factory.php', 132 133 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder' => __DIR__ . '/../..' . '/src/Data_Builder.php', 133 134 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder_For_WP_Posts' => __DIR__ . '/../..' . '/src/Data_Builder_For_WP_Posts.php', 135 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Encodings' => __DIR__ . '/../..' . '/src/Encodings.php', 134 136 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Exporter' => __DIR__ . '/../..' . '/src/Exporter.php', 135 137 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Nonce' => __DIR__ . '/../..' . '/src/Nonce.php', 138 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Request' => __DIR__ . '/../..' . '/src/Request.php', 136 139 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Simple_CSV_Exporter' => __DIR__ . '/../..' . '/src/Simple_CSV_Exporter.php', 137 140 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Tests\\CSV_Writer_Test' => __DIR__ . '/../..' . '/tests/CSV_Writer_Test.php', … … 179 182 { 180 183 return \Closure::bind(function () use ($loader) { 181 $loader->prefixLengthsPsr4 = ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::$prefixLengthsPsr4;182 $loader->prefixDirsPsr4 = ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::$prefixDirsPsr4;183 $loader->classMap = ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::$classMap;184 $loader->prefixLengthsPsr4 = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$prefixLengthsPsr4; 185 $loader->prefixDirsPsr4 = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$prefixDirsPsr4; 186 $loader->classMap = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$classMap; 184 187 185 188 }, null, ClassLoader::class); -
simple-csv-exporter/tags/3.0.2/vendor/composer/installed.php
r3199300 r3199315 2 2 'root' => array( 3 3 'name' => 'hamworks/simple-csv-exporter', 4 'pretty_version' => '3.0. 0',5 'version' => '3.0. 0.0',6 'reference' => ' e428ce26b8537c36b4ccbe89111f09f46d3ab183',4 'pretty_version' => '3.0.2', 5 'version' => '3.0.2.0', 6 'reference' => '6f12e47a124930815f2e9b382e904b8b792445d5', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'hamworks/simple-csv-exporter' => array( 14 'pretty_version' => '3.0. 0',15 'version' => '3.0. 0.0',16 'reference' => ' e428ce26b8537c36b4ccbe89111f09f46d3ab183',14 'pretty_version' => '3.0.2', 15 'version' => '3.0.2.0', 16 'reference' => '6f12e47a124930815f2e9b382e904b8b792445d5', 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../../', -
simple-csv-exporter/trunk/readme.txt
r3199300 r3199315 6 6 Tested up to: 6.7 7 7 Requires PHP: 7.4 8 Stable tag: 3.0. 08 Stable tag: 3.0.2 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 74 74 == Changelog == 75 75 76 = 3.0.0 = 77 * Add support UTF-8 with BOM. 78 * Refactor code. 79 76 80 = 2.2.0 = 77 81 * Add `simple_csv_exporter_data_builder_for_wp_posts_get_the_terms_field` filter. -
simple-csv-exporter/trunk/simple-csv-exporter.php
r3199300 r3199315 11 11 * Domain Path: /languages 12 12 * Requires PHP: 8.0 13 * Version: 3.0. 013 * Version: 3.0.2 14 14 */ 15 15 -
simple-csv-exporter/trunk/src/Admin_UI.php
r3197984 r3199315 21 21 22 22 /** 23 * @var string23 * @var Request 24 24 */ 25 private string $post_type_var_name; 25 private Request $request; 26 27 /** 28 * @var Encodings 29 */ 30 private Encodings $encodings; 26 31 27 32 /** … … 29 34 * 30 35 * @param string $slug Slug for admin page. 31 * @param string $post_type_var_name `name` attribute for post type select control.36 * @param Request $request 32 37 * @param Nonce $nonce 33 38 */ 34 public function __construct( string $slug, string $post_type_var_name, Nonce $nonce) {39 public function __construct( string $slug, Request $request, Nonce $nonce, Encodings $encodings ) { 35 40 add_action( 36 41 'admin_menu', … … 39 44 } 40 45 ); 41 $this->slug = $slug; 42 $this->nonce = $nonce; 43 $this->post_type_var_name = $post_type_var_name; 46 $this->slug = $slug; 47 $this->nonce = $nonce; 48 $this->request = $request; 49 $this->encodings = $encodings; 44 50 } 45 51 … … 88 94 <form method="post"> 89 95 <?php $this->nonce->render(); ?> 90 <table >96 <table class="form-table"> 91 97 <tr> 92 98 <th scope="row"> 93 <label for="<?php echo esc_attr( $this-> post_type_var_name); ?>">99 <label for="<?php echo esc_attr( $this->request::POST_TYPE_TO_EXPORT ); ?>"> 94 100 <?php esc_html_e( 'Export', 'simple-csv-exporter' ); ?> 95 101 </label> … … 97 103 <td> 98 104 <select 99 id="<?php echo esc_attr( $this-> post_type_var_name); ?>"100 name="<?php echo esc_attr( $this-> post_type_var_name); ?>"105 id="<?php echo esc_attr( $this->request::POST_TYPE_TO_EXPORT ); ?>" 106 name="<?php echo esc_attr( $this->request::POST_TYPE_TO_EXPORT ); ?>" 101 107 > 102 108 <?php … … 110 116 </td> 111 117 </tr> 118 <tr> 119 <th scope="row"> 120 <label for="<?php echo esc_attr( $this->request::ENCODING ); ?>"> 121 <?php esc_html_e( 'Encoding', 'simple-csv-exporter' ); ?> 122 </label> 123 </th> 124 <td> 125 <select 126 id="<?php echo esc_attr( $this->request::ENCODING ); ?>" 127 name="<?php echo esc_attr( $this->request::ENCODING ); ?>"> 128 <?php foreach ( $this->encodings->get_items() as $encoding ) : ?> 129 <option value="<?php echo esc_attr( $encoding['name'] ); ?>"> 130 <?php echo esc_html( $encoding['value'] ); ?> 131 </option> 132 <?php endforeach; ?> 133 </select> 134 </td> 135 </tr> 112 136 </table> 113 137 <?php submit_button( esc_html__( 'Export', 'simple-csv-exporter' ) ); ?> -
simple-csv-exporter/trunk/src/CSV_Writer.php
r3197847 r3199315 13 13 * @var string 14 14 */ 15 pr ivatestring $file_name;15 protected string $file_name; 16 16 17 17 /** 18 18 * @var iterable 19 19 */ 20 pr ivateiterable $rows;20 protected iterable $rows; 21 21 22 22 /** 23 23 * CSV_Builder constructor. 24 24 * 25 * @param iterable $rows 25 * @param iterable|null $rows 26 * @param string|null $file_name 27 */ 28 public function __construct( iterable $rows = null, string $file_name = null ) { 29 if ( $rows ) { 30 $this->rows = $rows; 31 } 32 if ( $file_name ) { 33 $this->file_name = $file_name; 34 } 35 } 36 37 /** 26 38 * @param string $file_name 27 39 */ 28 public function __construct( iterable $rows, string $file_name ) { 29 $this->rows = $rows; 40 public function set_file_name( string $file_name ): void { 30 41 $this->file_name = $file_name; 31 42 } 32 43 33 44 /** 45 * @param iterable $rows 46 */ 47 public function set_rows( iterable $rows ): void { 48 $this->rows = $rows; 49 } 50 51 /** 34 52 * Render. 53 * 54 * @throws \Exception 35 55 */ 36 56 public function render() { 37 $this->write( $this->rows ); 57 if ( ! $this->file_name || ! $this->rows ) { 58 throw new \Exception( 'File name or rows are not set.' ); 59 } 60 $this->write(); 38 61 } 39 62 40 41 63 /** 42 * Render CSV to Standard IO.64 * Put Contents 43 65 * 44 * @param iterable $data 66 * @param resource $file_pointer 67 * 68 * @return void 45 69 */ 46 public function write( iterable $data ) { 47 // phpcs:ignore 48 $file_pointer = fopen( $this->file_name, 'w' ); 49 70 protected function put( $file_pointer ) { 50 71 $header_rendered = false; 51 foreach ( $ dataas $row ) {72 foreach ( $this->rows as $row ) { 52 73 if ( ! $header_rendered ) { 53 74 fputcsv( $file_pointer, array_keys( $row ) ); … … 56 77 fputcsv( $file_pointer, $row ); 57 78 } 79 } 80 81 /** 82 * Write CSV 83 * 84 * @throws \Exception 85 */ 86 public function write() { 87 // phpcs:ignore 88 $file_pointer = fopen( $this->file_name, 'w' ); 89 if ( ! $file_pointer ) { 90 throw new \Exception( 'Could not open file.' ); 91 } 92 $this->put( $file_pointer ); 58 93 // phpcs:ignore 59 94 fclose( $file_pointer ); -
simple-csv-exporter/trunk/src/Container_Factory.php
r3197847 r3199315 18 18 19 19 /** 20 * @param string $slug 21 * 20 22 * @return Container 21 23 * @throws Exception 22 24 */ 23 public static function create( ): Container {25 public static function create( string $slug ): Container { 24 26 $builder = new ContainerBuilder(); 25 27 $builder->addDefinitions( 26 28 array( 27 'var.name' => 'post_type_to_export', 28 'slug' => 'simple_csv_exporter', 29 'post_type' => function ( ContainerInterface $c ) { 30 return filter_input( INPUT_POST, $c->get( 'var.name' ), FILTER_SANITIZE_SPECIAL_CHARS ) ?? ''; 31 }, 32 Nonce::class => create()->constructor( get( 'slug' ) ), 29 Nonce::class => create()->constructor( $slug ), 33 30 Data_Builder::class => factory( 34 function ( $post_type) {35 $data_builder = new Data_Builder_For_WP_Posts( $ post_type);31 function ( Request $request ) { 32 $data_builder = new Data_Builder_For_WP_Posts( $request->get_post_type_to_export() ); 36 33 37 34 /** … … 41 38 */ 42 39 do_action( 'simple_csv_exporter_created_data_builder', $data_builder ); 40 43 41 return $data_builder; 44 42 } 45 )->parameter( 'post_type', get( 'post_type' ) ), 46 Admin_UI::class => autowire()->constructor( get( 'slug' ), get( 'var.name' ) ), 47 Exporter::class => autowire()->constructor(), 43 ), 44 CSV_Writer::class => factory( 45 function ( Request $request ) { 46 if ( $request->get_encoding() === Encodings::UTF8_WITH_BOM['name'] ) { 47 $csv_writer = new CSV_Writer_With_BOM(); 48 } else { 49 $csv_writer = new CSV_Writer(); 50 } 51 52 /** 53 * Fires after data generator is created, but before export. 54 * 55 * @param CSV_Writer $csv_writer 56 */ 57 do_action( 'simple_csv_exporter_created_csv_writer', $csv_writer ); 58 59 return $csv_writer; 60 } 61 ), 62 Admin_UI::class => autowire()->constructor( $slug ), 63 Exporter::class => autowire(), 48 64 ) 49 65 ); -
simple-csv-exporter/trunk/src/Exporter.php
r3197847 r3199315 20 20 21 21 /** 22 * @var CSV_Writer 23 */ 24 private CSV_Writer $csv_writer; 25 26 /** 22 27 * Exporter 23 28 * 24 29 * @param Nonce $nonce 25 30 * @param Data_Builder $data_builder 31 * @param CSV_Writer $csv_writer 26 32 */ 27 public function __construct( Nonce $nonce, Data_Builder $data_builder ) {33 public function __construct( Nonce $nonce, Data_Builder $data_builder, CSV_Writer $csv_writer ) { 28 34 $this->nonce = $nonce; 29 35 $this->data_builder = $data_builder; 36 $this->csv_writer = $csv_writer; 30 37 31 38 $this->process_request(); … … 50 57 private function do_export() { 51 58 $this->send_headers( $this->data_builder->get_name() . '.csv' ); 52 $csv = new CSV_Writer( $this->data_builder, 'php://output' ); 53 $csv->render(); 59 $this->csv_writer->set_rows( $this->data_builder ); 60 $this->csv_writer->set_file_name( 'php://output' ); 61 62 try { 63 $this->csv_writer->render(); 64 } catch ( \Exception $e ) { 65 wp_die( esc_html( $e->getMessage() ) ); 66 } 67 54 68 exit(); 55 69 } -
simple-csv-exporter/trunk/src/Simple_CSV_Exporter.php
r2446249 r3199315 10 10 class Simple_CSV_Exporter { 11 11 12 const SLUG = 'simple_csv_exporter'; 13 12 14 /** 13 15 * Admin constructor. … … 16 18 */ 17 19 public function __construct() { 18 $container = Container_Factory::create(); 20 21 $container = Container_Factory::create( self::SLUG ); 19 22 $container->get( Admin_UI::class ); 20 23 21 $slug = $container->get( 'slug' );22 24 add_action( 23 "load-tools_page_{$slug}",25 'load-tools_page_' . self::SLUG, 24 26 function () use ( $container ) { 25 27 $container->get( Exporter::class ); -
simple-csv-exporter/trunk/vendor/autoload.php
r3198551 r3199315 23 23 require_once __DIR__ . '/composer/autoload_real.php'; 24 24 25 return ComposerAutoloaderInit5 39a0472a1ee0fa7de391bf8f828eab8::getLoader();25 return ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df::getLoader(); -
simple-csv-exporter/trunk/vendor/composer/autoload_classmap.php
r3197847 r3199315 68 68 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Admin_UI' => $baseDir . '/src/Admin_UI.php', 69 69 'HAMWORKS\\WP\\Simple_CSV_Exporter\\CSV_Writer' => $baseDir . '/src/CSV_Writer.php', 70 'HAMWORKS\\WP\\Simple_CSV_Exporter\\CSV_Writer_With_BOM' => $baseDir . '/src/CSV_Writer_With_BOM.php', 70 71 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Container_Factory' => $baseDir . '/src/Container_Factory.php', 71 72 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder' => $baseDir . '/src/Data_Builder.php', 72 73 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder_For_WP_Posts' => $baseDir . '/src/Data_Builder_For_WP_Posts.php', 74 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Encodings' => $baseDir . '/src/Encodings.php', 73 75 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Exporter' => $baseDir . '/src/Exporter.php', 74 76 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Nonce' => $baseDir . '/src/Nonce.php', 77 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Request' => $baseDir . '/src/Request.php', 75 78 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Simple_CSV_Exporter' => $baseDir . '/src/Simple_CSV_Exporter.php', 76 79 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Tests\\CSV_Writer_Test' => $baseDir . '/tests/CSV_Writer_Test.php', -
simple-csv-exporter/trunk/vendor/composer/autoload_real.php
r3198551 r3199315 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit5 39a0472a1ee0fa7de391bf8f828eab85 class ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit5 39a0472a1ee0fa7de391bf8f828eab8', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit5 39a0472a1ee0fa7de391bf8f828eab8', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit596e526f0db295e22573d8b67d4e76df::getInitializer($loader)); 33 33 34 34 $loader->register(true); 35 35 36 $filesToLoad = \Composer\Autoload\ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::$files;36 $filesToLoad = \Composer\Autoload\ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$files; 37 37 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { 38 38 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
simple-csv-exporter/trunk/vendor/composer/autoload_static.php
r3198551 r3199315 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab87 class ComposerStaticInit596e526f0db295e22573d8b67d4e76df 8 8 { 9 9 public static $files = array ( … … 129 129 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Admin_UI' => __DIR__ . '/../..' . '/src/Admin_UI.php', 130 130 'HAMWORKS\\WP\\Simple_CSV_Exporter\\CSV_Writer' => __DIR__ . '/../..' . '/src/CSV_Writer.php', 131 'HAMWORKS\\WP\\Simple_CSV_Exporter\\CSV_Writer_With_BOM' => __DIR__ . '/../..' . '/src/CSV_Writer_With_BOM.php', 131 132 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Container_Factory' => __DIR__ . '/../..' . '/src/Container_Factory.php', 132 133 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder' => __DIR__ . '/../..' . '/src/Data_Builder.php', 133 134 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder_For_WP_Posts' => __DIR__ . '/../..' . '/src/Data_Builder_For_WP_Posts.php', 135 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Encodings' => __DIR__ . '/../..' . '/src/Encodings.php', 134 136 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Exporter' => __DIR__ . '/../..' . '/src/Exporter.php', 135 137 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Nonce' => __DIR__ . '/../..' . '/src/Nonce.php', 138 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Request' => __DIR__ . '/../..' . '/src/Request.php', 136 139 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Simple_CSV_Exporter' => __DIR__ . '/../..' . '/src/Simple_CSV_Exporter.php', 137 140 'HAMWORKS\\WP\\Simple_CSV_Exporter\\Tests\\CSV_Writer_Test' => __DIR__ . '/../..' . '/tests/CSV_Writer_Test.php', … … 179 182 { 180 183 return \Closure::bind(function () use ($loader) { 181 $loader->prefixLengthsPsr4 = ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::$prefixLengthsPsr4;182 $loader->prefixDirsPsr4 = ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::$prefixDirsPsr4;183 $loader->classMap = ComposerStaticInit5 39a0472a1ee0fa7de391bf8f828eab8::$classMap;184 $loader->prefixLengthsPsr4 = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$prefixLengthsPsr4; 185 $loader->prefixDirsPsr4 = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$prefixDirsPsr4; 186 $loader->classMap = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$classMap; 184 187 185 188 }, null, ClassLoader::class); -
simple-csv-exporter/trunk/vendor/composer/installed.php
r3199300 r3199315 2 2 'root' => array( 3 3 'name' => 'hamworks/simple-csv-exporter', 4 'pretty_version' => '3.0. 0',5 'version' => '3.0. 0.0',6 'reference' => ' e428ce26b8537c36b4ccbe89111f09f46d3ab183',4 'pretty_version' => '3.0.2', 5 'version' => '3.0.2.0', 6 'reference' => '6f12e47a124930815f2e9b382e904b8b792445d5', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'hamworks/simple-csv-exporter' => array( 14 'pretty_version' => '3.0. 0',15 'version' => '3.0. 0.0',16 'reference' => ' e428ce26b8537c36b4ccbe89111f09f46d3ab183',14 'pretty_version' => '3.0.2', 15 'version' => '3.0.2.0', 16 'reference' => '6f12e47a124930815f2e9b382e904b8b792445d5', 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.