* @link http://leqg.info */ $var = $_GET; $var['criteres'] = trim($var['criteres'], ';'); $contacts = People::listing($var, 0, false); $fichier = array(); $nomFichier = 'export-' . User::ID() . '-' . uniqid() . '.csv'; $file = fopen('exports/' . $nomFichier, 'w+'); $entete = ['nom', 'nom_usage', 'prenoms', 'sexe', 'date_naissance', 'age', 'adresse declaree', 'adresse electorale', 'bureau', 'ville', 'electeur', 'electeur_europeen', 'electeur_municipales', 'organisme', 'fonction', 'tags']; fputcsv($file, $entete, ';', '"'); foreach ($contacts as $_contact) { $contact = new People($_contact); $address = $contact->postal_address(); $poll = Maps::pollData($contact->get('bureau')); $birthdate = new DateTime($contact->get('date_naissance')); $_fichier = array($contact->get('nom'), $contact->get('nom_usage'), $contact->get('prenoms'), $contact->get('sexe'), $birthdate->format('d/m/Y'), $contact->age(), $address['reel'], $address['officiel'], $poll['number'], $poll['city'], $contact->get('electeur'), $contact->get('electeur_europeen'), $contact->get('electeur_municipales'), $contact->get('organisme'), $contact->get('fonction'), implode(',', $contact->get('tags'))); fputcsv($file, $_fichier, ';', '"'); } // On retraite le nom du fichier $f = 'exports/' . $nomFichier; if ($f) { $email = file_get_contents('tpl/mail/export-reussi.tpl.html'); $objet = '[LeQG] Votre export est prêt à être téléchargé'; $email = strtr($email, array('{URL}' => 'http://' . Configuration::read('url') . $f)); } else { $email = file_get_contents('tpl/mail/export-echec.tpl.html'); $objet = '[LeQG] Votre export a provoqué un erreur'; } $query = Core::query('user-data', 'core'); $query->bindValue(':user', User::ID()); $query->execute();
/** * Number of phonecall to do in a mission * * @param array $args sorting methods * * @return integer * @static */ public static function estimation(array $args) { // On commence par paramétrer les données PDO $link = Configuration::read('db.link'); // On prépare la requête de récupération de tous les numéros // connus par le système $sql = 'SELECT * FROM `coordonnees` WHERE `coordonnee_type` != "email"'; $query = $link->prepare($sql); $query->execute(); $numeros = $query->fetchAll(PDO::FETCH_ASSOC); // On prépare le tableau des résultats du tri $num $num = array(); // On retraite les arguments entrés if (isset($args['age']) && !empty($args['age'])) { $age = array(); $age['usr'] = explode(':', $args['age']); $age['min'] = $age['usr'][0]; $age['max'] = $age['usr'][1]; } else { $age = false; } if (isset($args['bureaux']) && !empty($args['bureaux'])) { $bureaux = explode(',', $args['bureaux']); } else { $bureaux = false; } if (isset($args['thema']) && !empty($args['thema'])) { $thema = $args['thema']; } else { $thema = false; } // On fait la boucle de tous les numéros, // et on charge les informations pour chacun foreach ($numeros as $numero) { // On réinitialise le test $test = true; // On ouvre la fiche correspondante $contact = new People($numero['contact_id']); // On récupère son bureau de vote, son âge et ses tags $ageContact = $contact->age(); $bureau = $contact->get('bureau'); $tags = $contact->get('tags'); // On vérifie si la fiche correspond aux arguments entrés if ($age && $test) { if ($ageContact <= $age['max'] && $ageContact >= $age['min']) { // On le rajoute au test $test = true; $testAge = true; } else { $test = false; $testAge = false; } } // On fait les vérifications concernant le bureau de vote if ($bureaux && $test) { if (in_array($bureau, $bureaux)) { $test = true; $testBureau = true; } else { $test = false; $testBureau = false; } } // On fait les vérifications concernant les thématiques if ($thema && $test) { if (in_array($thema, $tags)) { $test = true; } else { $test = false; } } // Si le test est concluant, on l'ajoute à la liste des numéros // en utilisant comme key l'ID du contact pour éviter les doublons if ($test) { $id = $contact->get('id'); $num[$id] = $numero['coordonnee_id']; } } // On calcule maintenant le nombre de numéros concluant $nombre = count($num); // On retourne cette estimation return $nombre; }