'Имя', 'email'=> 'Email', 'group_name'=> 'Группа', 'discount'=> 'Скидка', 'enabled'=> 'Активен', 'created'=> 'Дата', 'last_ip'=> 'Последний 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; // Эксель кушает только 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'); // Если начали сначала - добавим в первую строку названия колонок 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'); // Выбираем пользователей $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;