Plugin Directory

Changeset 3199315


Ignore:
Timestamp:
11/29/2024 09:21:43 AM (16 months ago)
Author:
hamworks
Message:

Update to version 3.0.2 from GitHub

Location:
simple-csv-exporter
Files:
6 added
24 edited
1 copied

Legend:

Unmodified
Added
Removed
  • simple-csv-exporter/tags/3.0.2/readme.txt

    r3199300 r3199315  
    66Tested up to:      6.7 
    77Requires PHP:      7.4 
    8 Stable tag:        3.0.0
     8Stable tag:        3.0.2
    99License:           GPLv2 or later 
    1010License URI:       https://www.gnu.org/licenses/gpl-2.0.html 
     
    7474== Changelog ==
    7575
     76= 3.0.0 =
     77* Add support UTF-8 with BOM.
     78* Refactor code.
     79
    7680= 2.2.0 =
    7781* 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  
    1111 * Domain Path:     /languages
    1212 * Requires PHP:    8.0
    13  * Version: 3.0.0
     13 * Version: 3.0.2
    1414 */
    1515
  • simple-csv-exporter/tags/3.0.2/src/Admin_UI.php

    r3197984 r3199315  
    2121
    2222    /**
    23      * @var string
     23     * @var Request
    2424     */
    25     private string $post_type_var_name;
     25    private Request $request;
     26
     27    /**
     28     * @var Encodings
     29     */
     30    private Encodings $encodings;
    2631
    2732    /**
     
    2934     *
    3035     * @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
    3237     * @param Nonce $nonce
    3338     */
    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 ) {
    3540        add_action(
    3641            'admin_menu',
     
    3944            }
    4045        );
    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;
    4450    }
    4551
     
    8894                <form method="post">
    8995                    <?php $this->nonce->render(); ?>
    90                     <table>
     96                    <table class="form-table">
    9197                        <tr>
    9298                            <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 ); ?>">
    94100                                    <?php esc_html_e( 'Export', 'simple-csv-exporter' ); ?>
    95101                                </label>
     
    97103                            <td>
    98104                                <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 ); ?>"
    101107                                >
    102108                                    <?php
     
    110116                            </td>
    111117                        </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>
    112136                    </table>
    113137                    <?php submit_button( esc_html__( 'Export', 'simple-csv-exporter' ) ); ?>
  • simple-csv-exporter/tags/3.0.2/src/CSV_Writer.php

    r3197847 r3199315  
    1313     * @var string
    1414     */
    15     private string $file_name;
     15    protected string $file_name;
    1616
    1717    /**
    1818     * @var iterable
    1919     */
    20     private iterable $rows;
     20    protected iterable $rows;
    2121
    2222    /**
    2323     * CSV_Builder constructor.
    2424     *
    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    /**
    2638     * @param string $file_name
    2739     */
    28     public function __construct( iterable $rows, string $file_name ) {
    29         $this->rows      = $rows;
     40    public function set_file_name( string $file_name ): void {
    3041        $this->file_name = $file_name;
    3142    }
    3243
    3344    /**
     45     * @param iterable $rows
     46     */
     47    public function set_rows( iterable $rows ): void {
     48        $this->rows = $rows;
     49    }
     50
     51    /**
    3452     * Render.
     53     *
     54     * @throws \Exception
    3555     */
    3656    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();
    3861    }
    3962
    40 
    4163    /**
    42      * Render CSV to Standard IO.
     64     * Put Contents
    4365     *
    44      * @param iterable $data
     66     * @param resource $file_pointer
     67     *
     68     * @return void
    4569     */
    46     public function write( iterable $data ) {
    47         // phpcs:ignore
    48         $file_pointer = fopen( $this->file_name, 'w' );
    49 
     70    protected function put( $file_pointer ) {
    5071        $header_rendered = false;
    51         foreach ( $data as $row ) {
     72        foreach ( $this->rows as $row ) {
    5273            if ( ! $header_rendered ) {
    5374                fputcsv( $file_pointer, array_keys( $row ) );
     
    5677            fputcsv( $file_pointer, $row );
    5778        }
     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 );
    5893        // phpcs:ignore
    5994        fclose( $file_pointer );
  • simple-csv-exporter/tags/3.0.2/src/Container_Factory.php

    r3197847 r3199315  
    1818
    1919    /**
     20     * @param string $slug
     21     *
    2022     * @return Container
    2123     * @throws Exception
    2224     */
    23     public static function create(): Container {
     25    public static function create( string $slug ): Container {
    2426        $builder = new ContainerBuilder();
    2527        $builder->addDefinitions(
    2628            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 ),
    3330                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() );
    3633
    3734                        /**
     
    4138                         */
    4239                        do_action( 'simple_csv_exporter_created_data_builder', $data_builder );
     40
    4341                        return $data_builder;
    4442                    }
    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(),
    4864            )
    4965        );
  • simple-csv-exporter/tags/3.0.2/src/Exporter.php

    r3197847 r3199315  
    2020
    2121    /**
     22     * @var CSV_Writer
     23     */
     24    private CSV_Writer $csv_writer;
     25
     26    /**
    2227     * Exporter
    2328     *
    2429     * @param Nonce $nonce
    2530     * @param Data_Builder $data_builder
     31     * @param CSV_Writer $csv_writer
    2632     */
    27     public function __construct( Nonce $nonce, Data_Builder $data_builder ) {
     33    public function __construct( Nonce $nonce, Data_Builder $data_builder, CSV_Writer $csv_writer ) {
    2834        $this->nonce        = $nonce;
    2935        $this->data_builder = $data_builder;
     36        $this->csv_writer   = $csv_writer;
    3037
    3138        $this->process_request();
     
    5057    private function do_export() {
    5158        $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
    5468        exit();
    5569    }
  • simple-csv-exporter/tags/3.0.2/src/Simple_CSV_Exporter.php

    r2446249 r3199315  
    1010class Simple_CSV_Exporter {
    1111
     12    const SLUG = 'simple_csv_exporter';
     13
    1214    /**
    1315     * Admin constructor.
     
    1618     */
    1719    public function __construct() {
    18         $container = Container_Factory::create();
     20
     21        $container = Container_Factory::create( self::SLUG );
    1922        $container->get( Admin_UI::class );
    2023
    21         $slug = $container->get( 'slug' );
    2224        add_action(
    23             "load-tools_page_{$slug}",
     25            'load-tools_page_' . self::SLUG,
    2426            function () use ( $container ) {
    2527                $container->get( Exporter::class );
  • simple-csv-exporter/tags/3.0.2/vendor/autoload.php

    r3198551 r3199315  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit539a0472a1ee0fa7de391bf8f828eab8::getLoader();
     25return ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df::getLoader();
  • simple-csv-exporter/tags/3.0.2/vendor/composer/autoload_classmap.php

    r3197847 r3199315  
    6868    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Admin_UI' => $baseDir . '/src/Admin_UI.php',
    6969    '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',
    7071    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Container_Factory' => $baseDir . '/src/Container_Factory.php',
    7172    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder' => $baseDir . '/src/Data_Builder.php',
    7273    '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',
    7375    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Exporter' => $baseDir . '/src/Exporter.php',
    7476    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Nonce' => $baseDir . '/src/Nonce.php',
     77    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Request' => $baseDir . '/src/Request.php',
    7578    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Simple_CSV_Exporter' => $baseDir . '/src/Simple_CSV_Exporter.php',
    7679    '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  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit539a0472a1ee0fa7de391bf8f828eab8
     5class ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit539a0472a1ee0fa7de391bf8f828eab8', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit539a0472a1ee0fa7de391bf8f828eab8', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit596e526f0db295e22573d8b67d4e76df::getInitializer($loader));
    3333
    3434        $loader->register(true);
    3535
    36         $filesToLoad = \Composer\Autoload\ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::$files;
     36        $filesToLoad = \Composer\Autoload\ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$files;
    3737        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    3838            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • simple-csv-exporter/tags/3.0.2/vendor/composer/autoload_static.php

    r3198551 r3199315  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8
     7class ComposerStaticInit596e526f0db295e22573d8b67d4e76df
    88{
    99    public static $files = array (
     
    129129        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Admin_UI' => __DIR__ . '/../..' . '/src/Admin_UI.php',
    130130        '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',
    131132        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Container_Factory' => __DIR__ . '/../..' . '/src/Container_Factory.php',
    132133        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder' => __DIR__ . '/../..' . '/src/Data_Builder.php',
    133134        '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',
    134136        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Exporter' => __DIR__ . '/../..' . '/src/Exporter.php',
    135137        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Nonce' => __DIR__ . '/../..' . '/src/Nonce.php',
     138        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Request' => __DIR__ . '/../..' . '/src/Request.php',
    136139        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Simple_CSV_Exporter' => __DIR__ . '/../..' . '/src/Simple_CSV_Exporter.php',
    137140        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Tests\\CSV_Writer_Test' => __DIR__ . '/../..' . '/tests/CSV_Writer_Test.php',
     
    179182    {
    180183        return \Closure::bind(function () use ($loader) {
    181             $loader->prefixLengthsPsr4 = ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::$prefixLengthsPsr4;
    182             $loader->prefixDirsPsr4 = ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::$prefixDirsPsr4;
    183             $loader->classMap = ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::$classMap;
     184            $loader->prefixLengthsPsr4 = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$prefixLengthsPsr4;
     185            $loader->prefixDirsPsr4 = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$prefixDirsPsr4;
     186            $loader->classMap = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$classMap;
    184187
    185188        }, null, ClassLoader::class);
  • simple-csv-exporter/tags/3.0.2/vendor/composer/installed.php

    r3199300 r3199315  
    22    'root' => array(
    33        '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',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1212    'versions' => array(
    1313        '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',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • simple-csv-exporter/trunk/readme.txt

    r3199300 r3199315  
    66Tested up to:      6.7 
    77Requires PHP:      7.4 
    8 Stable tag:        3.0.0
     8Stable tag:        3.0.2
    99License:           GPLv2 or later 
    1010License URI:       https://www.gnu.org/licenses/gpl-2.0.html 
     
    7474== Changelog ==
    7575
     76= 3.0.0 =
     77* Add support UTF-8 with BOM.
     78* Refactor code.
     79
    7680= 2.2.0 =
    7781* Add `simple_csv_exporter_data_builder_for_wp_posts_get_the_terms_field` filter.
  • simple-csv-exporter/trunk/simple-csv-exporter.php

    r3199300 r3199315  
    1111 * Domain Path:     /languages
    1212 * Requires PHP:    8.0
    13  * Version: 3.0.0
     13 * Version: 3.0.2
    1414 */
    1515
  • simple-csv-exporter/trunk/src/Admin_UI.php

    r3197984 r3199315  
    2121
    2222    /**
    23      * @var string
     23     * @var Request
    2424     */
    25     private string $post_type_var_name;
     25    private Request $request;
     26
     27    /**
     28     * @var Encodings
     29     */
     30    private Encodings $encodings;
    2631
    2732    /**
     
    2934     *
    3035     * @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
    3237     * @param Nonce $nonce
    3338     */
    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 ) {
    3540        add_action(
    3641            'admin_menu',
     
    3944            }
    4045        );
    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;
    4450    }
    4551
     
    8894                <form method="post">
    8995                    <?php $this->nonce->render(); ?>
    90                     <table>
     96                    <table class="form-table">
    9197                        <tr>
    9298                            <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 ); ?>">
    94100                                    <?php esc_html_e( 'Export', 'simple-csv-exporter' ); ?>
    95101                                </label>
     
    97103                            <td>
    98104                                <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 ); ?>"
    101107                                >
    102108                                    <?php
     
    110116                            </td>
    111117                        </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>
    112136                    </table>
    113137                    <?php submit_button( esc_html__( 'Export', 'simple-csv-exporter' ) ); ?>
  • simple-csv-exporter/trunk/src/CSV_Writer.php

    r3197847 r3199315  
    1313     * @var string
    1414     */
    15     private string $file_name;
     15    protected string $file_name;
    1616
    1717    /**
    1818     * @var iterable
    1919     */
    20     private iterable $rows;
     20    protected iterable $rows;
    2121
    2222    /**
    2323     * CSV_Builder constructor.
    2424     *
    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    /**
    2638     * @param string $file_name
    2739     */
    28     public function __construct( iterable $rows, string $file_name ) {
    29         $this->rows      = $rows;
     40    public function set_file_name( string $file_name ): void {
    3041        $this->file_name = $file_name;
    3142    }
    3243
    3344    /**
     45     * @param iterable $rows
     46     */
     47    public function set_rows( iterable $rows ): void {
     48        $this->rows = $rows;
     49    }
     50
     51    /**
    3452     * Render.
     53     *
     54     * @throws \Exception
    3555     */
    3656    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();
    3861    }
    3962
    40 
    4163    /**
    42      * Render CSV to Standard IO.
     64     * Put Contents
    4365     *
    44      * @param iterable $data
     66     * @param resource $file_pointer
     67     *
     68     * @return void
    4569     */
    46     public function write( iterable $data ) {
    47         // phpcs:ignore
    48         $file_pointer = fopen( $this->file_name, 'w' );
    49 
     70    protected function put( $file_pointer ) {
    5071        $header_rendered = false;
    51         foreach ( $data as $row ) {
     72        foreach ( $this->rows as $row ) {
    5273            if ( ! $header_rendered ) {
    5374                fputcsv( $file_pointer, array_keys( $row ) );
     
    5677            fputcsv( $file_pointer, $row );
    5778        }
     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 );
    5893        // phpcs:ignore
    5994        fclose( $file_pointer );
  • simple-csv-exporter/trunk/src/Container_Factory.php

    r3197847 r3199315  
    1818
    1919    /**
     20     * @param string $slug
     21     *
    2022     * @return Container
    2123     * @throws Exception
    2224     */
    23     public static function create(): Container {
     25    public static function create( string $slug ): Container {
    2426        $builder = new ContainerBuilder();
    2527        $builder->addDefinitions(
    2628            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 ),
    3330                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() );
    3633
    3734                        /**
     
    4138                         */
    4239                        do_action( 'simple_csv_exporter_created_data_builder', $data_builder );
     40
    4341                        return $data_builder;
    4442                    }
    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(),
    4864            )
    4965        );
  • simple-csv-exporter/trunk/src/Exporter.php

    r3197847 r3199315  
    2020
    2121    /**
     22     * @var CSV_Writer
     23     */
     24    private CSV_Writer $csv_writer;
     25
     26    /**
    2227     * Exporter
    2328     *
    2429     * @param Nonce $nonce
    2530     * @param Data_Builder $data_builder
     31     * @param CSV_Writer $csv_writer
    2632     */
    27     public function __construct( Nonce $nonce, Data_Builder $data_builder ) {
     33    public function __construct( Nonce $nonce, Data_Builder $data_builder, CSV_Writer $csv_writer ) {
    2834        $this->nonce        = $nonce;
    2935        $this->data_builder = $data_builder;
     36        $this->csv_writer   = $csv_writer;
    3037
    3138        $this->process_request();
     
    5057    private function do_export() {
    5158        $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
    5468        exit();
    5569    }
  • simple-csv-exporter/trunk/src/Simple_CSV_Exporter.php

    r2446249 r3199315  
    1010class Simple_CSV_Exporter {
    1111
     12    const SLUG = 'simple_csv_exporter';
     13
    1214    /**
    1315     * Admin constructor.
     
    1618     */
    1719    public function __construct() {
    18         $container = Container_Factory::create();
     20
     21        $container = Container_Factory::create( self::SLUG );
    1922        $container->get( Admin_UI::class );
    2023
    21         $slug = $container->get( 'slug' );
    2224        add_action(
    23             "load-tools_page_{$slug}",
     25            'load-tools_page_' . self::SLUG,
    2426            function () use ( $container ) {
    2527                $container->get( Exporter::class );
  • simple-csv-exporter/trunk/vendor/autoload.php

    r3198551 r3199315  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit539a0472a1ee0fa7de391bf8f828eab8::getLoader();
     25return ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df::getLoader();
  • simple-csv-exporter/trunk/vendor/composer/autoload_classmap.php

    r3197847 r3199315  
    6868    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Admin_UI' => $baseDir . '/src/Admin_UI.php',
    6969    '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',
    7071    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Container_Factory' => $baseDir . '/src/Container_Factory.php',
    7172    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder' => $baseDir . '/src/Data_Builder.php',
    7273    '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',
    7375    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Exporter' => $baseDir . '/src/Exporter.php',
    7476    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Nonce' => $baseDir . '/src/Nonce.php',
     77    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Request' => $baseDir . '/src/Request.php',
    7578    'HAMWORKS\\WP\\Simple_CSV_Exporter\\Simple_CSV_Exporter' => $baseDir . '/src/Simple_CSV_Exporter.php',
    7679    '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  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit539a0472a1ee0fa7de391bf8f828eab8
     5class ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit539a0472a1ee0fa7de391bf8f828eab8', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit539a0472a1ee0fa7de391bf8f828eab8', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit596e526f0db295e22573d8b67d4e76df', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit596e526f0db295e22573d8b67d4e76df::getInitializer($loader));
    3333
    3434        $loader->register(true);
    3535
    36         $filesToLoad = \Composer\Autoload\ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::$files;
     36        $filesToLoad = \Composer\Autoload\ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$files;
    3737        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    3838            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • simple-csv-exporter/trunk/vendor/composer/autoload_static.php

    r3198551 r3199315  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8
     7class ComposerStaticInit596e526f0db295e22573d8b67d4e76df
    88{
    99    public static $files = array (
     
    129129        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Admin_UI' => __DIR__ . '/../..' . '/src/Admin_UI.php',
    130130        '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',
    131132        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Container_Factory' => __DIR__ . '/../..' . '/src/Container_Factory.php',
    132133        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Data_Builder' => __DIR__ . '/../..' . '/src/Data_Builder.php',
    133134        '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',
    134136        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Exporter' => __DIR__ . '/../..' . '/src/Exporter.php',
    135137        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Nonce' => __DIR__ . '/../..' . '/src/Nonce.php',
     138        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Request' => __DIR__ . '/../..' . '/src/Request.php',
    136139        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Simple_CSV_Exporter' => __DIR__ . '/../..' . '/src/Simple_CSV_Exporter.php',
    137140        'HAMWORKS\\WP\\Simple_CSV_Exporter\\Tests\\CSV_Writer_Test' => __DIR__ . '/../..' . '/tests/CSV_Writer_Test.php',
     
    179182    {
    180183        return \Closure::bind(function () use ($loader) {
    181             $loader->prefixLengthsPsr4 = ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::$prefixLengthsPsr4;
    182             $loader->prefixDirsPsr4 = ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::$prefixDirsPsr4;
    183             $loader->classMap = ComposerStaticInit539a0472a1ee0fa7de391bf8f828eab8::$classMap;
     184            $loader->prefixLengthsPsr4 = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$prefixLengthsPsr4;
     185            $loader->prefixDirsPsr4 = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$prefixDirsPsr4;
     186            $loader->classMap = ComposerStaticInit596e526f0db295e22573d8b67d4e76df::$classMap;
    184187
    185188        }, null, ClassLoader::class);
  • simple-csv-exporter/trunk/vendor/composer/installed.php

    r3199300 r3199315  
    22    'root' => array(
    33        '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',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1212    'versions' => array(
    1313        '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',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
Note: See TracChangeset for help on using the changeset viewer.