Skip to content

Collecting polled users emails

Marlow Justine requested to merge JMarlow/framadate:Justine/Issue1 into develop

Travail de développement pour résoudre l'issue 38 : "Collecter les adresses emails des sondés" : https://framagit.org/framasoft/framadate/issues/38

Je trouverai interessant d'avoir la possibilité pour l'administrateur d'un sondage de collecter les adresses mail des sondés (visibles uniquement sur le formulaire admin). Un peu comme le nom/pseudo, mais cachés au sondés, donc. Afin de faciliter la vie de l'administrateur en cloture de sondage : parfois, on envoie un sondage à 200 personnes. Et on ne souhaite recontacter que les 20 qui ont répondu "OK". C'était à la base une demande de Mozilla.

  • Version 1

    • Itération 1 : Travail sur la collecte des adresses mails des sondés

      • Modification de la BDD
        • Ajout d'un fichier de migration dans le répertoire framadate/app/classes/Framadate/Migration pour ajouter le nouvel attribut mail à la table vote(poll_id, name, choices, uniqId) dans la base de données
        • Ajout d'un appel à ce fichier de migration dans /framadate/admin/migration.php
      • Modification de la classe VoteRepository
        • MAJ de la méthode insert($poll_id, $name, $choices, $token)
        • MAJ de la méthode update($poll_id, $vote_id, $name, $choices)
      • Modification de la classe PollService
        • MAJ de la méthode updateVote($poll_id, $vote_id, $name, $choices, $slot_hash)
        • MAJ de la méthode addVote($poll_id, $name, $choices, $slot_hash)
        • MAJ de la méthode splitVote($votes)
      • Modification des fichiers studs.php et adminstuds.php
        • MAJ des appels à updateVote et addVote
      • Modification des templates vote_table_date.tpl et vote_table_classic.tpl
        • Création du nouveau champ
    • Itération 2 : Développement d'une option permettant à l'admin d'obtenir facilement les adresses mails des sondés par option et par choix (oui, si besoin et non)

      • Modification des templates vote_table_date.tpl et vote_table_classic.tpl

        • Ajout d'un bouton enveloppe associé à chaque colonne
      • Modification du fichier adminstuds.tpl

        • Ajout d'un traitement lorsqu'on clique sur le bouton enveloppe d'une colonne : récupération des adresses mails renseignées dans des tableaux de chaînes de caractères
        • Transmission de ces tableaux à $smarty et appel du nouveau fichier display_mails.tpl
      • Ajout d'un template display_mails.tpl

        • Affichage des adresses mails transmises
    • Problématique possible posée par la résolution de l'issue
      L'adresse email est gérée de manière analogue au nom, notamment au niveau des modifications d'un vote. Ainsi, si l'on considère un sondage où Tou·te·s les sondé·e·s peuvent modifier tous les votes, chaque utilisateur possédant le lien au sondage peut accéder aux adresses mails de tous les sondés, on peut donc imaginer la possibilité de collecter les adresses mails à des fins malveillantes.

    • Améliorations possibles

      • Protection des adresses mails (cf problématique)
      • Implémentation de la possibilité d'exporter les adresses mails en fichier CSV
      • Ajouter une option admin pour ne pas collecter les mails
      • Ajouter une option admin pour rendre la saisie d'une adresse obligatoire
  • Version 2 : Passage de la collecte des mails sous une fonctionnalité admin

    • Modification de la BDD
      • Ajout d'un fichier de migration pour ajouter le nouvel attribut collect_users_mail dans la table poll(id, admin_id, title, description, admin_name, admin_mail, end_date, format, editable, receiveNewVotes, receiveNewComments, hidden, password_hash, results_publicly_visible, ValueMax)
      • Ajout d'un appel à ce fichier de migration dans /framadate/admin/migration.php
    • Modifications des classes Form et PollRepository pour manipuler le nouvel attribut
      • Ajout d'un attribut collect_users_mail à la classe Form
      • MAJ de la méthode insertPoll de la classe PollRepository
    • Passage de la collecte de mail en fonctionnalité admin
      • Sur la création d'un sondage : ajout d'un paramètre optionnel (modification des fichiers create_poll.php et create_poll.tpl)
      • Sur l'administration d'un sondage : ajout du paramètre dans les infos (modification du fichier poll_info.tpl)
      • Sur le vote : affichage ou non du champ mail et des boutons enveloppe (modification des fichiers vote_table_date.tpl et vote_table_classic.tpl
    • Passage des champs mail en required (saisie obligatoire si la collecte de mail est activée)
    • Ajout d'avertissements lorsque la collecte de mail est active et que les votes sont modifiables par tous (réponse à la problématique en V1)
      • Lors de la création du sondage (modification des fichiers create_poll.php, create_poll.tpl et create_poll.js)

      • Lors de l'ajout d'un nouveau vote (modification des fichiers vote_table_date.tpl et vote_table_classic.tpl)

Contact : justine.marlow@etu.utc.fr

Closes #38

Edited by Marlow Justine

Merge request reports