LLMS_Abstract_Exportable_Admin_Table::generate_export_file( array $args = array(), string $filename = null, string $type = 'csv' )
Generate an export file for the current table.
Parameters Parameters
- $args
-
(array) (Optional) Arguments to pass get_results().
Default value: array()
- $filename
-
(string) (Optional) Filename of the existing file, if omitted creates a new file, if passed, will continue adding to existing file.
Default value: null
- $type
-
(string) (Optional) Export file type for forward compatibility. Currently only accepts 'csv'.
Default value: 'csv'
Return Return
(WP_Error|array)
Source Source
File: includes/abstracts/llms.abstract.exportable.admin.table.php
* @since 3.37.15 "Sanitize" submitted filename. * * @param array $args Arguments to pass get_results(). * @param string $filename Filename of the existing file, if omitted creates a new file, if passed, will continue adding to existing file. * @param string $type Export file type for forward compatibility. Currently only accepts 'csv'. * @return WP_Error|array */ public function generate_export_file( $args = array(), $filename = null, $type = 'csv' ) { // We only support CSVs and don't allow fakers. if ( ! empty( $filename ) && pathinfo( $filename, PATHINFO_EXTENSION ) !== $type ) { return false; } // Always force page 1 regardless of what is requested. Pagination is handled below. $args['page'] = 1; /** * Customize the number of records per page when generating an export file. * * @since 3.28.0 * * @param int $per_page Number of records per page. */ $args['per_page'] = apply_filters( 'llms_table_generate_export_file_per_page_boost', 250 ); $filename = $filename ? $filename : $this->get_export_file_name() . '.' . $type; $file_path = LLMS_TMP_DIR . $filename; $option_name = 'llms_gen_export_' . basename( $filename, '.' . $type ); $args = get_option( $option_name, $args ); $handle = @fopen( $file_path, 'a+' ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- Yea but we handle the error alright I think. if ( ! $handle ) { return new WP_Error( 'file_error', __( 'Unable to generate export file, could not open file for writing.', 'lifterlms' ) ); } /** * Customize the delimiter used when generating CSV export files. * * @since 3.28.0 * * @param int $delim Delimiter. * @param LLMS_Abstract_Exportable_Admin_Table $table Instance of the table. * @param array $args Array of arguments. */ $delim = apply_filters( 'llms_table_generate_export_file_delimiter', ',', $this, $args ); foreach ( $this->get_export( $args ) as $row ) { fputcsv( $handle, $row, $delim ); } if ( ! $this->is_last_page() ) { $args['page'] = $this->get_current_page() + 1; update_option( $option_name, $args ); $progress = round( ( $this->get_current_page() / $this->get_max_pages() ) * 100, 2 ); } else { delete_option( $option_name ); $progress = 100; }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
3.37.15 | "Sanitize" submitted filename. |
3.28.1 | Unknown. |
3.28.0 | Introduced. |