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. |