From 637e6ffffc8e110dfc228b11dfebdd770d952b3e Mon Sep 17 00:00:00 2001 From: andryeyev Date: Thu, 24 Dec 2015 17:40:23 +0200 Subject: [PATCH] + выгрузка пользователей в zip файл --- libs/catalogs.class.php | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 94 insertions(+), 26 deletions(-) diff --git a/libs/catalogs.class.php b/libs/catalogs.class.php index 1dd5e84..1aff3ad 100644 --- a/libs/catalogs.class.php +++ b/libs/catalogs.class.php @@ -1596,7 +1596,7 @@ ORDER BY catalogs_users.mktime DESC"; $array_string = explode (" ", trim ($params['search_str'])); foreach ($array_string as $row) { - $search[] = "(catalogs_products.name LIKE '%" . $row . "%' OR catalogs_products.text LIKE '%" . $row . " %' OR catalogs_rubrics.name LIKE '%" . $row . "%' OR catalogs_brends.name LIKE '%" . $row . "%' OR catalogs_modifications.code='" . $row . "')"; + $search[] = "(catalogs_products.name LIKE '%" . $row . "%' OR catalogs_products.text LIKE '%" . $row . "%' OR catalogs_rubrics.name LIKE '%" . $row . "%' OR catalogs_brends.name LIKE '%" . $row . "%' OR catalogs_modifications.code='" . $row . "%')"; } $search_string = array (); // $search_string[] = "catalogs_products.name like '%".mysql_real_escape_string($params['search_str'])."%'"; @@ -4452,43 +4452,111 @@ ORDER BY catalogs_users.mktime DESC"; 'is_update' => 0 ), DB_AUTOQUERY_UPDATE); } - + + /** + * Ýêñïîðò ñ ðàçáèâêîé íà ÷àñòè + */ function exportUsersCSV () + { + set_time_limit(3000); + ini_set('memory_limit', '256M'); + + $param = array ( + 'parts' => 1, + 'count' => 0, + 'start' => 0, + 'end' => 0, + 'limit' => 0, + 'folder' => $_SERVER['DOCUMENT_ROOT'].'/tmp', + 'files' => array(), + 'zip_name' => 'users.zip', + ); + + + $total = $this->db->getOne (' + SELECT count(id) as total + FROM zlo_users + '); + + $param['limit'] = round ($total / $param['parts']); + + for ($i = 0; $i < $param['parts']; $i++) + { + $param['files'][] = $param['folder'].'/user-'.$i.'.csv'; + $param['count'] = $i; + $param['start'] = $i * $param['limit']; + + $this->exportUsersFiles ($param); + } + + // ==== ZIP ==== + + $zip = new ZipArchive(); + + if ($zip->open($param['zip_name'], ZIPARCHIVE::CREATE) === TRUE) + { + foreach ($param['files'] as $i => $file) + { + $content = file_get_contents($file); + $zip->addFromString(pathinfo ($file, PATHINFO_FILENAME).'.csv', $content); + + unlink ($file); + } + + $zip->close(); + + if (file_exists ($param['zip_name'])) + { + // îòäà¸ì ôàéë íà ñêà÷èâàíèå + header('Content-type: application/zip'); + header('Content-Disposition: attachment; filename="'.$param['zip_name'].'"'); + readfile($param['zip_name']); + + // óäàëÿåì zip ôàéë åñëè îí ñóùåñòâóåò + unlink ($param['zip_name']); + } + } + } + + function exportUsersFiles ($param) { - $tmpfname = "tmp/users.csv"; + $tmpfname = $param['files'][$param['count']]; + $handle = fopen ($tmpfname, "w"); - $sql = "SELECT u.id,u.username,u.tel,u.city,u.email,g.name,u.registered,summary,u.birthday,c.card + $sql = ' + SELECT + u.id, + u.username, + u.tel, + u.city, + u.email, + g.name, + u.registered, + summary, + u.birthday, + c.card FROM zlo_users AS u - LEFT JOIN card c ON c.user_id = u.id - LEFT JOIN zlo_users_group AS g ON u.group = g.id - LEFT JOIN (SELECT user_id AS order_user_id, sum( `total` ) AS `summary` FROM catalogs_orders group by user_id ) o - ON u.id = o.order_user_id - "; + LEFT JOIN card c ON c.user_id = u.id + LEFT JOIN zlo_users_group AS g ON u.group = g.id + LEFT JOIN ( + SELECT user_id AS order_user_id, sum( `total` ) AS `summary` + FROM catalogs_orders + GROUP BY user_id + ) o ON u.id = o.order_user_id + LIMIT '.$param['start'].', '.$param['limit'].' + '; + $res = $this->db->getAll ($sql); + foreach ($res as $key => $row) { File_FGetCSV::fputcsv ($handle, $row, ';'); } - fclose ($handle); - $params = array ( - 'file' => $tmpfname, - 'contenttype' => 'application/xls', - 'contentdisposition' => array ( - HTTP_DOWNLOAD_ATTACHMENT, - 'users.csv' - ), - 'cache' => false - ); - $error = HTTP_Download::staticSend ($params, false); // îòäà¸ì ôàéë - if ($error === true) - { - // åñëè ôàéë çàãðóæåí óñïåøíî, îáíîâëÿåì äàòó ïîñëåäíåé çàêà÷êè - } - unlink ($tmpfname); + fclose ($handle); } - + function exportUsersBirdthCSV () { $tmpfname = "tmp/usersBirdth.csv"; -- libgit2 0.21.4