Files
AtomicOld/simpla/ajax/export_users.php

89 lines
2.3 KiB
PHP
Raw Permalink Normal View History

2026-02-14 19:34:54 +03:00
<?php
chdir('../..');
require_once('api/Simpla.php');
class ExportAjax extends Simpla
{
private $columns_names = array(
'name'=> '<27><><EFBFBD>',
'email'=> 'Email',
'group_name'=> '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
'discount'=> '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
'enabled'=> '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
'created'=> '<27><><EFBFBD><EFBFBD>',
'last_ip'=> '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IP'
);
private $column_delimiter = ';';
private $users_count = 5;
private $export_files_dir = 'simpla/files/export_users/';
private $filename = 'users.csv';
public function fetch()
{
if(!$this->managers->access('users'))
return false;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1251
setlocale(LC_ALL, 'ru_RU.1251');
$this->db->query('SET NAMES cp1251');
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
$page = $this->request->get('page');
if(empty($page) || $page==1)
{
$page = 1;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(is_writable($this->export_files_dir.$this->filename))
unlink($this->export_files_dir.$this->filename);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
$f = fopen($this->export_files_dir.$this->filename, 'ab');
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if($page == 1)
{
fputcsv($f, $this->columns_names, $this->column_delimiter);
}
$filter = array();
$filter['page'] = $page;
$filter['limit'] = $this->users_count;
if($this->request->get('group_id'))
$filter['group_id'] = intval($this->request->get('group_id'));
$filter['sort'] = $this->request->get('sort');
$filter['keyword'] = $this->request->get('keyword');
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
$users = array();
foreach($this->users->get_users($filter) as $u)
{
$str = array();
foreach($this->columns_names as $n=>$c)
$str[] = $u->$n;
fputcsv($f, $str, $this->column_delimiter);
}
$total_users = $this->users->count_users();
if($this->users_count*$page < $total_users)
return array('end'=>false, 'page'=>$page, 'totalpages'=>$total_users/$this->users_count);
else
return array('end'=>true, 'page'=>$page, 'totalpages'=>$total_users/$this->users_count);
fclose($f);
}
}
$export_ajax = new ExportAjax();
$json = json_encode($export_ajax->fetch());
header("Content-type: application/json; charset=utf-8");
header("Cache-Control: must-revalidate");
header("Pragma: no-cache");
header("Expires: -1");
print $json;