HEX
Server: Apache/2.4.6 (CentOS) mpm-itk/2.4.7-04 mod_fcgid/2.3.9 PHP/5.4.16
System: Linux dvm.vladweb.ru 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: region-gk.ru (1016)
PHP: 7.3.33
Disabled: NONE
Upload Files
File: /home/temp/yarusvl.ru/adminx/ajax/export_orders.php
<?php

class ExportAjax extends Mgc {

    /*����(�������) ��� ����� ��������*/
    private $columns_names = array(
        'id'=>           'Order ID',
        'date'=>         'Order date',
        'name'=>         'User name',
        'phone'=>        'User phone',
        'email'=>        'User email',
        'address'=>      'User address',
        'comment'=>      'User comment',
        'total_price'=>  'Total price',
        'currency'=>     'Currency'
        
    );
    
    private $column_delimiter = ';';
    private $orders_count = 100;
    private $export_files_dir = 'uploads/export/';
    private $filename = 'export_orders.csv';
    
    public function fetch() {
        if(!$this->managers->access('export')) {
            return false;
        }
        session_write_close();
        unset($_SESSION['lang_id']);
        unset($_SESSION['admin_lang_id']);

        // ������ ������ ������ 1251
        setlocale(LC_ALL, 'ru_RU.1251');
        $this->db->query('SET NAMES cp1251');
        
        // ��������, ������� ������������
        $page = $this->request->get('page');
        if(empty($page) || $page==1) {
            $page = 1;
            // ���� ������ ������� - ������ ������ ���� ��������
            if(is_writable($this->export_files_dir.$this->filename)) {
                unlink($this->export_files_dir.$this->filename);
            }
        }
        
        // ��������� ���� �������� �� ����������
        $f = fopen($this->export_files_dir.$this->filename, 'ab');

        $filter = array();

        $filter['page'] = $page;
        $filter['limit'] = $this->orders_count;
        
        // ������
        $status_id = $this->request->get('status', 'integer');
        if (!empty($status_id)) {
            $filter['status'] = $status_id;
        }
        
        // �����
        $label_id = $this->request->get('label', 'integer');
        if(!empty($label_id)) {
            $filter['label'] = $label_id;
        }

        // ����
        $from_date = $this->request->get('from_date');
        $to_date = $this->request->get('to_date');
        
        if (!empty($from_date)) {
            $filter['from_date'] = $from_date;
        }
        if (!empty($to_date)) {
            $filter['to_date'] = $to_date;
        }
        
        // ���� ������ ������� - ������� � ������ ������ �������� �������
        if($page == 1) {
            fputcsv($f, $this->columns_names, $this->column_delimiter);
        }
        
        // �������� ������
        $main_currency =  $this->money->get_currency();
        
        // ��� ������
        $orders = $this->orders->get_orders($filter);
        if (!empty($orders)) {
            foreach($orders as $o) {
                $str = array();
                $o->currency = $main_currency->code;
                foreach($this->columns_names as $n=>$c) {
                    $str[] = $o->$n;
                }
                fputcsv($f, $str, $this->column_delimiter);
            }
        }
        $total_orders = $this->orders->count_orders($filter);
        
        if($this->orders_count*$page < $total_orders) {
            return array('end'=>false, 'page'=>$page, 'totalpages'=>$total_orders/$this->orders_count);
        } else {
            return array('end'=>true, 'page'=>$page, 'totalpages'=>$total_orders/$this->orders_count);
        }
        
        fclose($f);
    }
    
}

$export_ajax = new ExportAjax();
$data = $export_ajax->fetch();
if($data) {
    header("Content-type: application/json; charset=utf-8");
    header("Cache-Control: must-revalidate");
    header("Pragma: no-cache");
    header("Expires: -1");
    $json = json_encode($data);
    print $json;
}