!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux acloudg.aryanict.com 4.18.0-513.9.1.lve.el8.x86_64 #1 SMP Mon Dec 4 15:01:22 UTC
2023 x86_64
 

uid=1095(katebhospital) gid=1098(katebhospital) groups=1098(katebhospital) 

Safe-mode: OFF (not secure)

/var/softaculous/sitepad/editor/site-data/plugins/kkart-pro/packages/kkart-admin/src/   drwxr-xr-x
Free 293.2 GB of 429.69 GB (68.24%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ReportCSVExporter.php (7.79 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Handles reports CSV export batches.
 */

namespace Automattic\Kkart\Admin;

if ( ! 
defined'ABSPATH' ) ) {
    exit;
}

use \
Automattic\Kkart\Admin\API\Reports\ExportableInterface;

/**
 * Include dependencies.
 */
if ( ! class_exists'KKART_CSV_Batch_Exporter'false ) ) {
    include_once 
KKART_ABSPATH 'includes/export/abstract-kkart-csv-batch-exporter.php';
}

/**
 * ReportCSVExporter Class.
 */
class ReportCSVExporter extends \KKART_CSV_Batch_Exporter {
    
/**
     * Type of report being exported.
     *
     * @var string
     */
    
protected $report_type;

    
/**
     * Parameters for the report query.
     *
     * @var array
     */
    
protected $report_args;

    
/**
     * REST controller for the report.
     *
     * @var KKART_REST_Reports_Controller
     */
    
protected $controller;

    
/**
     * Constructor.
     *
     * @param string $type Report type. E.g. 'customers'.
     * @param array  $args Report parameters.
     */
    
public function __construct$type false$args = array() ) {
        
parent::__construct();

        if ( ! empty( 
$type ) ) {
            
$this->set_report_type$type );
            
$this->set_column_names$this->get_report_columns() );
        }

        if ( ! empty( 
$args ) ) {
            
$this->set_report_args$args );
        }
    }

    
/**
     * Setter for report type.
     *
     * @param string $type The report type. E.g. customers.
     */
    
public function set_report_type$type ) {
        
$this->report_type $type;
        
$this->export_type "admin_{$type}_report";
        
$this->filename    "kkart-{$type}-report-export";
        
$this->controller  $this->map_report_controller();
    }

    
/**
     * Setter for report args.
     *
     * @param array $args The report args.
     */
    
public function set_report_args$args ) {
        
// Use our own internal limit and include all extended info.
        
$report_args array_merge(
            
$args,
            array(
                
'per_page'      => $this->get_limit(),
                
'extended_info' => true,
            )
        );

        
// Should this happen externally?
        
if ( isset( $report_args['page'] ) ) {
            
$this->set_page$report_args['page'] );
        }

        
$this->report_args $report_args;
    }

    
/**
     * Get a REST controller instance for the report type.
     *
     * @return bool|KKART_REST_Reports_Controller Report controller instance or boolean false on error.
     */
    
protected function map_report_controller() {
        
// @todo - Add filter to this list.
        
$controller_map = array(
            
'products'   => 'Automattic\Kkart\Admin\API\Reports\Products\Controller',
            
'variations' => 'Automattic\Kkart\Admin\API\Reports\Variations\Controller',
            
'orders'     => 'Automattic\Kkart\Admin\API\Reports\Orders\Controller',
            
'categories' => 'Automattic\Kkart\Admin\API\Reports\Categories\Controller',
            
'taxes'      => 'Automattic\Kkart\Admin\API\Reports\Taxes\Controller',
            
'coupons'    => 'Automattic\Kkart\Admin\API\Reports\Coupons\Controller',
            
'stock'      => 'Automattic\Kkart\Admin\API\Reports\Stock\Controller',
            
'downloads'  => 'Automattic\Kkart\Admin\API\Reports\Downloads\Controller',
            
'customers'  => 'Automattic\Kkart\Admin\API\Reports\Customers\Controller',
            
'revenue'    => 'Automattic\Kkart\Admin\API\Reports\Revenue\Stats\Controller',
        );

        if ( isset( 
$controller_map$this->report_type ] ) ) {
            
// Load the controllers if accessing outside the REST API.
            
return new $controller_map$this->report_type ]();
        }

        
// Should this do something else?
        
return false;
    }

    
/**
     * Get the report columns from the controller.
     *
     * @return array Array of report column names.
     */
    
protected function get_report_columns() {
        
// Default to the report's defined export columns.
        
if ( $this->controller instanceof ExportableInterface ) {
            return 
$this->controller->get_export_columns();
        }

        
// Fallback to generating columns from the report schema.
        
$report_columns = array();
        
$report_schema  $this->controller->get_item_schema();

        if ( isset( 
$report_schema['properties'] ) ) {
            foreach ( 
$report_schema['properties'] as $column_name => $column_info ) {
                
// Expand extended info columns into export.
                
if ( 'extended_info' === $column_name ) {
                    
// Remove columns with questionable CSV values, like markup.
                    
$extended_info  array_diffarray_keys$column_info ), array( 'image' ) );
                    
$report_columns array_merge$report_columns$extended_info );
                } else {
                    
$report_columns[] = $column_name;
                }
            }
        }

        return 
$report_columns;
    }

    
/**
     * Get total % complete.
     *
     * Forces an int from parent::get_percent_complete(), which can return a float.
     *
     * @return int Percent complete.
     */
    
public function get_percent_complete() {
        return 
intvalparent::get_percent_complete() );
    }

    
/**
     * Get total number of rows in export.
     *
     * @return int Number of rows to export.
     */
    
public function get_total_rows() {
        return 
$this->total_rows;
    }

    
/**
     * Prepare data for export.
     */
    
public function prepare_data_to_export() {
        
$request  = new \WP_REST_Request'GET'"/kkart-analytics/reports/{$this->report_type});
        
$params   $this->controller->get_collection_params();
        
$defaults = array();

        foreach ( 
$params as $arg => $options ) {
            if ( isset( 
$options['default'] ) ) {
                
$defaults$arg ] = $options['default'];
            }
        }

        
$request->set_default_params$defaults );
        
$request->set_query_params$this->report_args );

        
// Does the controller have an export-specific item retrieval method?
        // @todo - Potentially revisit. This is only for /revenue/stats/.
        
if ( is_callable( array( $this->controller'get_export_items' ) ) ) {
            
$response $this->controller->get_export_items$request );
        } else {
            
$response $this->controller->get_items$request );
        }

        
// Use WP_REST_Server::response_to_data() to embed links in data.
        
add_filter'kkart_rest_check_permissions''__return_true' );
        
$rest_server rest_get_server();
        
$report_data $rest_server->response_to_data$responsetrue );
        
remove_filter'kkart_rest_check_permissions''__return_true' );

        
$report_meta      $response->get_headers();
        
$this->total_rows $report_meta['X-WP-Total'];
        
$this->row_data   array_map( array( $this'generate_row_data' ), $report_data );
    }

    
/**
     * Generate row data from a raw report item.
     *
     * @param object $item Report item data.
     * @return array CSV row data.
     */
    
protected function get_raw_row_data$item ) {
        
$columns $this->get_column_names();
        
$row     = array();

        
// Expand extended info.
        
if ( isset( $item['extended_info'] ) ) {
            
// Pull extended info property from report item object.
            
$extended_info = (array) $item['extended_info'];
            unset( 
$item['extended_info'] );

            
// Merge extended info columns into report item object.
            
$item array_merge$item$extended_info );
        }

        foreach ( 
$columns as $column_id => $column_name ) {
            
$value = isset( $item$column_name ] ) ? $item$column_name ] : null;

            if ( 
has_filter"kkart_export_{$this->export_type}_column_{$column_name}) ) {
                
// Filter for 3rd parties.
                
$value apply_filters"kkart_export_{$this->export_type}_column_{$column_name}"''$item );

            } elseif ( 
is_callable( array( $this"get_column_value_{$column_name}) ) ) {
                
// Handle special columns which don't map 1:1 to item data.
                
$value $this->{"get_column_value_{$column_name}"}( $item$this->export_type );

            } elseif ( ! 
is_scalar$value ) ) {
                
// Ensure that the value is somewhat readable in CSV.
                
$value wp_json_encode$value );
            }

            
$row$column_id ] = $value;
        }

        return 
$row;
    }

    
/**
     * Get the export row for a given report item.
     *
     * @param object $item Report item data.
     * @return array CSV row data.
     */
    
protected function generate_row_data$item ) {
        
// Default to the report's export method.
        
if ( $this->controller instanceof ExportableInterface ) {
            
$row $this->controller->prepare_item_for_export$item );
        } else {
            
// Fallback to raw report data.
            
$row $this->get_raw_row_data$item );
        }

        return 
apply_filters"kkart_export_{$this->export_type}_row_data"$row$item );
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0049 ]--