} else { $address['street'] = null; } if (!is_null($adresse['building'])) { $building = Maps::buildingSearch($adresse['building'], $address['street']); if (count($building)) { $address['building'] = $building[0]['id']; } else { $building = Maps::buildingNew($adresse['building'], $address['street']); $address['building'] = $building; } } else { $address['building'] = null; } // On lance la création de l'adresse Maps::addressNew($person->get('id'), $address['ville'], $address['zip'], $address['street'], $address['building'], 'reel'); $person->contact_details_add($contact['MAIL']); $person->tag_add('Sénateur PS'); $person->tag_add($contact['REGION']); $query = $link->prepare('DELETE FROM `TABLE 30` WHERE `id` = :id'); $query->bindValue(':id', $contact['id'], PDO::PARAM_INT); $query->execute(); } $query = $link->query('SELECT COUNT(*) FROM `TABLE 30`'); $nb = $query->fetch(PDO::FETCH_NUM); if ($nb[0]) { ?> <script> var url = 'transfert.php'; document.location.href = url; </script>
<li class="evenement <?php echo $e->get('type'); ?> <?php if ($e->link()) { ?> clic<?php } ?> "> <small><span><?php echo Event::displayType($e->get('type')); ?> </span></small> <strong><a href="<?php echo Core::goPage('contact', array('contact' => $c->get('id'), 'evenement' => $e->get('id'))); ?> "><?php echo !empty($e->get('objet')) ? $e->get('objet') : 'Événement sans titre'; ?> </a></strong> <ul class="infosAnnexes"> <li class="contact"><a href="<?php echo Core::goPage('contact', array('contact' => $c->get('id'))); ?> "><?php echo $c->display_name(); ?> </a></li> <li class="date"><?php echo date('d/m/Y', strtotime($e->get('date')));
* On récupère les fiches à contacter d'une mission de rappels * * PHP version 5 * * @category Ajax * @package LeQG * @author Damien Senger <*****@*****.**> * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License 3.0 * @link http://leqg.info */ // On fait le lien à la BDD $link = Configuration::read('db.link'); // On récupère les informations sur la mission if (isset($_GET['mission'])) { // On récupère la liste des rappels fait ou à effectuer $query = 'SELECT `contact_id` FROM `rappels` WHERE `argumentaire_id` = :mission'; $query = $link->prepare($query); $query->bindParam(':mission', $_GET['mission']); $query->execute(); $contacts = $query->fetchAll(PDO::FETCH_ASSOC); // On récupère les informations sur les fiches $fiches = array(); foreach ($contacts as $contact) { $fiche = new People($contact['contact_id']); $fiches[$fiche->get('contact_id')] = $fiche->data(); } // On retourne toutes les informations sur les fiches trouvées echo json_encode($fiches); }
"><button>Revenir au module Contacts</button></a> </section> <?php } else { ?> <section class="contenu"> <ul class="listeContacts"> <?php foreach ($resultats as $resultat) { $contact = new People($resultat[0]); ?> <!-- --><a class="nostyle" href="<?php Core::goPage('contact', array('contact' => $contact->get('id'))); ?> "><!-- --><li class="demi contact <?php if ($contact->get('sexe') == 'H') { echo 'homme'; } elseif ($contact->get('contact_sexe') == 'F') { echo 'femme'; } else { echo 'isexe'; } ?> "> <strong><?php echo $contact->get('nom_complet'); ?>
?> </nav> <div class="colonne demi gauche"> <section class="contenu demi"> <h4>Électeurs souhaitant être recontactés</h4> <ul class="listeContacts"> <?php if ($data->newContactsNumber()) { // On fait la liste des contacts concernés $contacts = $data->contactsList(4); foreach ($contacts as $contact) { // On ouvre la fiche du contact concerné $fiche = new People($contact[0]); if ($fiche->get('sexe') == 'H') { $sexe = 'homme'; } elseif ($fiche->get('sexe') == 'F') { $sexe = 'femme'; } else { $sexe = 'isexe'; } if (!empty($fiche->display_name())) { $nomAffichage = $fiche->display_name(); } elseif (!empty($fiche->get('organisme'))) { $nomAffichage = $fiche->get('organisme'); } else { $nomAffichage = 'Fiche sans nom'; } ?> <a href="<?php
<table class="reporting"> <thead> <tr> <th>Électeur</th> <th style="width: 300px">Email</th> <th style="width: 200px">Téléphone</th> </tr> </thead> <tbody> <?php foreach ($coordonnees as $electeur) { $contact = new People($electeur); ?> <tr class="ligne-electeur-<?php echo $contact->get('id'); ?> "> <td><?php echo $contact->display_name(); ?> </td> <td><input type="text" name="email-<?php echo $electeur; ?> " placeholder="email" style="border: none; width: 100%; text-align: center;"></td> <td><input type="text" name="phone-<?php echo $electeur; ?> " placeholder="numéro" style="border: none; width: 100%; text-align: center;"></td> </tr>
"><button>Revenir au module Contacts</button></a> </section> <?php } else { ?> <section class="contenu"> <ul class="listeContacts"> <?php foreach ($results as $element) { $contact = new People($element[0]); ?> <!-- --><a class="nostyle" href="<?php Core::goPage('contact', array('contact' => $contact->get('id'))); ?> "><!-- --><li class="demi contact <?php if ($contact->get('sexe') == 'H') { echo 'homme'; } elseif ($contact->get('sexe') == 'F') { echo 'femme'; } else { echo 'isexe'; } ?> "> <strong><?php echo $contact->display_name(); ?>
* @author Damien Senger <*****@*****.**> * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License 3.0 * @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');
<?php foreach ($destinataires as $destinataire) { $contact = new People($destinataire['contact']); ?> <tbody> <tr> <td><?php if ($data->get('status') == 'open') { echo $destinataire[0]; } else { echo $destinataire['email']; } ?> </td> <td><a href="<?php echo Core::goPage('contact', array('contact' => $contact->get('id'))); ?> "><?php echo $contact->display_name(); ?> </a></td> <td><?php echo Campaign::displayStatus($destinataire['status']); ?> </td> </tr> </tbody> <?php } ?> </table>
$campaign->update('titre', $campagne['titre']); $campaign->update('message', $campagne['message']); $var = $_GET; $var['criteres'] = trim($var['criteres'], ';'); $contacts = People::listing($var, 0, false); $fichier = array(); $nomFichier = 'publi-' . md5($campaign->get('id')) . '.csv'; $file = fopen('exports/' . $nomFichier, 'w+'); $entete = array('nom', 'nom_usage', 'prenoms', 'numero', 'rue', 'cp', 'ville', 'pays', 'origine'); fputcsv($file, $entete, ';', '"'); foreach ($contacts as $contact) { $person = new People($contact); $address = $person->postal_array(); if (isset($address['reel'])) { $address = $address['reel']; $origine = 'declaree'; } else { $address = $address['officiel']; $origine = 'liste-electorale'; } $_fichier = array($person->get('nom'), $person->get('nom_usage'), $person->get('prenoms'), $address['building'], $address['street'], $address['zipcode'], $address['city'], $address['country'], $origine); if (fputcsv($file, $_fichier, ';', '"')) { $event = Event::create($person->get('id')); $event = new Event($event); $event->update('historique_type', 'publi'); $event->update('historique_objet', $campaign->get('titre')); $event->update('historique_notes', $campaign->get('message')); $event->update('historique_date', date('Y-m-d')); $event->update('campagne_id', $campaign->get('id')); } }
/** * 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; }
<tr> <th>Électeur</th> <th class="petit">Absent</th> <th class="petit">Ouvert</th> <th class="petit">Procuration</th> <th class="petit">À contacter</th> <th class="petit">NPAI</th> </tr> </thead> <tbody> <?php foreach ($electeurs as $electeur) { $contact = new People($electeur); ?> <tr class="ligne-electeur-<?php echo md5($contact->get('id')); ?> "> <td><?php echo $contact->display_name(); ?> </td> <td class="petit"><div class="radio bouton-reporting"><input data-contact="<?php echo $contact->get('id'); ?> " data-val="1" type="radio" id="electeur-<?php echo $contact->get('id'); ?> -a" name="electeur-<?php echo $contact->get('id'); ?>
<?php // On protège le module User::protection(5); // Chargement de l'objet contact $data = new People($_GET['contact']); $address = $data->postal_address(); // Chargement de l'entête Core::loadHeader(); ?> <h2 class="titre" id="nomContact" data-fiche="<?php echo $data->get('id'); ?> "><?php if (!empty($data->display_name())) { echo $data->display_name(); } else { echo 'Cliquez pour ajouter un nom'; } ?> </h2> <div class="colonne demi gauche"> <section id="fiche-details" class="contenu demi"> <ul class="icones-etatcivil"> <li class="sexe <?php echo strtolower($data->display_sex()); ?> ?>"><?php echo $data->display_sex(true);
$type = "email"; // On récupère l'adresse email $query = 'SELECT `coordonnee_email` FROM `coordonnees` WHERE `coordonnee_id` = :id'; $query = $link->prepare($query); $query->bindParam(':id', $_POST['adresse']); $query->execute(); $adresse = $query->fetch(PDO::FETCH_ASSOC); $adresse = $adresse['coordonnee_email']; // On ouvre la fiche du contact concerné $contact = new People($_POST['contact']); // On charge le système de mail $mail = Configuration::read('mail'); // On prépare le message $message = array('html' => nl2br($_POST['message']), 'subject' => $_POST['objet'], 'from_email' => Configuration::read('mail.sender.mail'), 'from_name' => Configuration::read('mail.sender.name'), 'to' => array(array('email' => $adresse, 'name' => $contact->get('nom_complet'), 'type' => 'to')), 'headers' => array('Reply-To' => Configuration::read('mail.replyto')), 'track_opens' => true, 'auto_text' => true, 'subaccount' => Configuration::read('client')); // mode asynchrone d'envoi du mail $async = true; // on lance l'envoi du mail $result = $mail->messages->send($message, $async); // On met à jour le tracking avec les informations retournées $campaign = 0; $query = Core::query('campaign-tracking'); $query->bindValue(':campaign', $campaign, PDO::PARAM_INT); $query->bindValue(':id', $result[0]['_id']); $query->bindValue(':email', $result[0]['email']); $query->bindValue(':status', $result[0]['status']); $query->execute(); $event = Event::create($contact->get('id')); $event = new Event($event); $event->update('historique_type', 'courriel');
$query = $link->prepare('UPDATE `rappels` SET `user_id` = :user, `rappel_statut` = 1 WHERE `argumentaire_id` = :argumentaire AND `contact_id` = :contact'); $query->bindParam(':user', $userId, PDO::PARAM_INT); $query->bindParam(':argumentaire', $rappel['argumentaire_id'], PDO::PARAM_INT); $query->bindParam(':contact', $rappel['contact_id'], PDO::PARAM_INT); $query->execute(); // On ouvre l'argumentaire $query = $link->prepare('SELECT * FROM `argumentaires` WHERE `argumentaire_id` = :argumentaire'); $query->bindParam(':argumentaire', $rappel['argumentaire_id'], PDO::PARAM_INT); $query->execute(); $argumentaire = $query->fetch(PDO::FETCH_ASSOC); // On ouvre la fiche du contact $contact = new People($rappel['contact_id']); // On cherche le nom à afficher if (!empty($contact->display_name())) { $nomAffichage = $contact->display_name(); } elseif (!empty($contact->get('organisme'))) { $nomAffichage = $contact->get('organisme'); } else { $nomAffichage = 'Fiche sans nom'; } } // On charge le template Core::loadHeader(); ?> <h2 class="titre" data-argumentaire="<?php echo $argumentaire['argumentaire_id']; ?> " data-contact="<?php echo $contact->get('id'); ?> ">Appel militant</h2>