X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fuserset.inc.php;h=724c37655a705939cae31f331658bec528f122ca;hb=bc0276a2d79d88a56656514fe24bd427c0ef3b88;hp=bcbe20e36e3854ab86ebfbccc7185c78951fcae5;hpb=47712f77e9718652c516c85cde99a58d142f67c9;p=platal.git diff --git a/include/userset.inc.php b/include/userset.inc.php index bcbe20e..724c376 100644 --- a/include/userset.inc.php +++ b/include/userset.inc.php @@ -1,6 +1,6 @@ getIds(); + $this->full_count = $set->count(); + $this->entriesPerPage = 24; $this->defaultkey = 'name'; if (@$params['with_score']) { @@ -359,6 +364,7 @@ class TrombiView extends MixedView global $globals; $page->assign('mainsiteurl', 'https://' . $globals->core->secure_domain . '/'); } + $page->assign('full_count', $this->full_count); return parent::apply($page); } } @@ -421,6 +427,36 @@ class AddressesView implements PlView $this->set =& $set; } + /* Convert a single address field into 3 lines. + */ + public static function split_address($address) + { + $lines = preg_split("/(\r|\n)+/", $address, -1, PREG_SPLIT_NO_EMPTY); + $nb_lines = count($lines); + switch ($nb_lines) { + case 0: + // No data => nothing + return array("", "", ""); + case 1: + // Single line => Assume it's city+zipcode + $line = $lines[0]; + return array("", "", $line); + case 2: + // Two lines => Assume it's street \n city + $line1 = $lines[0]; + $line3 = $lines[1]; + return array($line1, "", $line3); + case 3: + return $lines; + default: + // More than 3 lines => Keep 2 last intact, merge other lines. + $line3 = array_pop($lines); + $line2 = array_pop($lines); + $line1 = implode(" ", $lines); + return array($line1, $line2, $line3); + } + } + public function apply(PlPage $page) { $pids = $this->set->getIds(new PlLimit()); @@ -428,15 +464,29 @@ class AddressesView implements PlView pl_cached_content_headers('text/x-csv', 'iso-8859-1', 1, 'adresses.csv'); $csv = fopen('php://output', 'w'); - fputcsv($csv, array('adresses'), ';'); + fputcsv($csv, + array('PROMOTION', 'CIVILITE', 'NOM', 'PRENOM', 'SOCIETE', 'ADRESSE', 'ADRESSE1', 'ADRESSE2', 'ADRESSE3', 'CP', 'EMAIL'), + ';'); + if (!empty($pids)) { - $res = XDB::query('SELECT pd.public_name, pa.postalText - FROM profile_addresses AS pa - INNER JOIN profile_display AS pd ON (pd.pid = pa.pid) - WHERE pa.type = \'home\' AND pa.pub IN (\'public\', \'ax\') AND FIND_IN_SET(\'mail\', pa.flags) AND pa.pid IN {?} - GROUP BY pa.pid', $pids); - foreach ($res->fetchAllAssoc() as $item) { - fputcsv($csv, array_map('utf8_decode', $item), ';'); + $res = XDB::query("SELECT pd.promo, p.title, + IF (pn.firstname_ordinary = '', UPPER(pn.firstname_main), UPPER(pn.firstname_ordinary)) AS firstname, + IF (pn.lastname_ordinary = '', UPPER(pn.lastname_main), UPPER(pn.lastname_ordinary)) AS lastname, + UPPER(pje.name), pa.postalText, pa.postal_code_fr AS postal_code, p.email_directory + FROM profile_addresses AS pa + INNER JOIN profiles AS p ON (pa.pid = p.pid) + INNER JOIN profile_display AS pd ON (pd.pid = pa.pid) + INNER JOIN profile_public_names AS pn ON (pn.pid = pa.pid) + LEFT JOIN profile_job AS pj ON (pj.pid = pa.pid + AND pj.id = IF(pa.type = 'job', pa.id, NULL)) + LEFT JOIN profile_job_enum AS pje ON (pj.jobid = pje.id) + WHERE pa.pid IN {?} AND FIND_IN_SET('ax_mail', pa.flags)", $pids); + foreach ($res->fetchAllRow() as $item) { + list($promo, $title, $lastname, $firstname, $company, $full_address, $zipcode, $email) = array_map('utf8_decode', $item); + $lines = self::split_address($full_address); + fputcsv($csv, + array($promo, $title, $lastname, $firstname, $company, $full_address, $lines[0], $lines[1], $lines[2], $zipcode, $email), + ';'); } } fclose($csv);