Commit 637e6ffffc8e110dfc228b11dfebdd770d952b3e

Authored by andryeyev
1 parent d3da0fec

+ выгрузка пользователей в zip файл

Showing 1 changed file with 94 additions and 26 deletions   Show diff stats
libs/catalogs.class.php
... ... @@ -1596,7 +1596,7 @@ ORDER BY catalogs_users.mktime DESC";
1596 1596 $array_string = explode (" ", trim ($params['search_str']));
1597 1597 foreach ($array_string as $row)
1598 1598 {
1599   - $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 . "')";
  1599 + $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 . "%')";
1600 1600 }
1601 1601 $search_string = array ();
1602 1602 // $search_string[] = "catalogs_products.name like '%".mysql_real_escape_string($params['search_str'])."%'";
... ... @@ -4452,43 +4452,111 @@ ORDER BY catalogs_users.mktime DESC";
4452 4452 'is_update' => 0
4453 4453 ), DB_AUTOQUERY_UPDATE);
4454 4454 }
4455   -
  4455 +
  4456 + /**
  4457 + * Ýêñïîðò ñ ðàçáèâêîé íà ÷àñòè
  4458 + */
4456 4459 function exportUsersCSV ()
  4460 + {
  4461 + set_time_limit(3000);
  4462 + ini_set('memory_limit', '256M');
  4463 +
  4464 + $param = array (
  4465 + 'parts' => 1,
  4466 + 'count' => 0,
  4467 + 'start' => 0,
  4468 + 'end' => 0,
  4469 + 'limit' => 0,
  4470 + 'folder' => $_SERVER['DOCUMENT_ROOT'].'/tmp',
  4471 + 'files' => array(),
  4472 + 'zip_name' => 'users.zip',
  4473 + );
  4474 +
  4475 +
  4476 + $total = $this->db->getOne ('
  4477 + SELECT count(id) as total
  4478 + FROM zlo_users
  4479 + ');
  4480 +
  4481 + $param['limit'] = round ($total / $param['parts']);
  4482 +
  4483 + for ($i = 0; $i < $param['parts']; $i++)
  4484 + {
  4485 + $param['files'][] = $param['folder'].'/user-'.$i.'.csv';
  4486 + $param['count'] = $i;
  4487 + $param['start'] = $i * $param['limit'];
  4488 +
  4489 + $this->exportUsersFiles ($param);
  4490 + }
  4491 +
  4492 + // ==== ZIP ====
  4493 +
  4494 + $zip = new ZipArchive();
  4495 +
  4496 + if ($zip->open($param['zip_name'], ZIPARCHIVE::CREATE) === TRUE)
  4497 + {
  4498 + foreach ($param['files'] as $i => $file)
  4499 + {
  4500 + $content = file_get_contents($file);
  4501 + $zip->addFromString(pathinfo ($file, PATHINFO_FILENAME).'.csv', $content);
  4502 +
  4503 + unlink ($file);
  4504 + }
  4505 +
  4506 + $zip->close();
  4507 +
  4508 + if (file_exists ($param['zip_name']))
  4509 + {
  4510 + // îòäà¸ì ôàéë íà ñêà÷èâàíèå
  4511 + header('Content-type: application/zip');
  4512 + header('Content-Disposition: attachment; filename="'.$param['zip_name'].'"');
  4513 + readfile($param['zip_name']);
  4514 +
  4515 + // óäàëÿåì zip ôàéë åñëè îí ñóùåñòâóåò
  4516 + unlink ($param['zip_name']);
  4517 + }
  4518 + }
  4519 + }
  4520 +
  4521 + function exportUsersFiles ($param)
4457 4522 {
4458   - $tmpfname = "tmp/users.csv";
  4523 + $tmpfname = $param['files'][$param['count']];
  4524 +
4459 4525 $handle = fopen ($tmpfname, "w");
4460 4526  
4461   - $sql = "SELECT u.id,u.username,u.tel,u.city,u.email,g.name,u.registered,summary,u.birthday,c.card
  4527 + $sql = '
  4528 + SELECT
  4529 + u.id,
  4530 + u.username,
  4531 + u.tel,
  4532 + u.city,
  4533 + u.email,
  4534 + g.name,
  4535 + u.registered,
  4536 + summary,
  4537 + u.birthday,
  4538 + c.card
4462 4539 FROM zlo_users AS u
4463   - LEFT JOIN card c ON c.user_id = u.id
4464   - LEFT JOIN zlo_users_group AS g ON u.group = g.id
4465   - LEFT JOIN (SELECT user_id AS order_user_id, sum( `total` ) AS `summary` FROM catalogs_orders group by user_id ) o
4466   - ON u.id = o.order_user_id
4467   - ";
  4540 + LEFT JOIN card c ON c.user_id = u.id
  4541 + LEFT JOIN zlo_users_group AS g ON u.group = g.id
  4542 + LEFT JOIN (
  4543 + SELECT user_id AS order_user_id, sum( `total` ) AS `summary`
  4544 + FROM catalogs_orders
  4545 + GROUP BY user_id
  4546 + ) o ON u.id = o.order_user_id
  4547 + LIMIT '.$param['start'].', '.$param['limit'].'
  4548 + ';
  4549 +
4468 4550 $res = $this->db->getAll ($sql);
  4551 +
4469 4552 foreach ($res as $key => $row)
4470 4553 {
4471 4554 File_FGetCSV::fputcsv ($handle, $row, ';');
4472 4555 }
4473   - fclose ($handle);
4474   - $params = array (
4475   - 'file' => $tmpfname,
4476   - 'contenttype' => 'application/xls',
4477   - 'contentdisposition' => array (
4478   - HTTP_DOWNLOAD_ATTACHMENT,
4479   - 'users.csv'
4480   - ),
4481   - 'cache' => false
4482   - );
4483   - $error = HTTP_Download::staticSend ($params, false); // îòäà¸ì ôàéë
4484   - if ($error === true)
4485   - {
4486   - // åñëè ôàéë çàãðóæåí óñïåøíî, îáíîâëÿåì äàòó ïîñëåäíåé çàêà÷êè
4487   - }
4488 4556  
4489   - unlink ($tmpfname);
  4557 + fclose ($handle);
4490 4558 }
4491   -
  4559 +
4492 4560 function exportUsersBirdthCSV ()
4493 4561 {
4494 4562 $tmpfname = "tmp/usersBirdth.csv";
... ...