Cas pratique : formulaire d'inscription presse pour la Fiac ====== Le contexte ====== La Foire internationale d'art contemporain ou **Fiac** est une manifestation d'art contemporain qui se déroule chaque année au mois d’octobre à Paris. Pendant plusieurs jours, cette exposition artistique et commerciale devient le lieu de rencontre internationale entre galeristes, collectionneurs, conservateurs, directeurs de musées et personnalités du monde de l'art contemporain international. Cet événement attire de nombreux journalistes. L'ensemble des relations presses sont sous-traitées à une agence spécialisée, cependant afin de simplifier le travail de ces équipes, et il est essentiel d'assurer un suivi automatisé des journalistes. Ils doivent pouvoir s'inscrire sur le site internet puis télécharger un PDF d'une lettre de remerciement avec un badge à découper. ====== Le Brief ====== * Réaliser un site sur-lequel les journalistes peuvent s'inscrire. * Les journalistes peuvent télécharger un PDF personnalisé. ====== Fichiers de départ ====== Il vous est fourni une structure mvc presque vierge contenant un template de page d'accueil et des librairies FPDF qui pourront vous servir. Ces librairies ont été légèrement modifiées pour pouvoir combiner l'utilisation des typographies, de l'import de fichier pdf, de conversion UTF-8 et de génération de codes barre. {{:ressources:php:fiac.zip|}} ====== Livrables et rendu ====== Le rendu est un fichier zip contenant tous les fichiers nécessaires à l'execution de l'application : dump sql, documentation technique et manuel d'utilisation Nous allons découper le travail en plusieurs versions, faites-les dans l'ordre, à chaque version on apporte un certain nombre de fonctionnalités. Il est très fortement conseillé d'utiliser un outil de SCM comme [[go>Git]] pour pouvoir revenir dans votre code à des versions antérieures. ===== version 1 ===== ==== Objectifs ==== La version 1 est rudimentaire : * Les journalistes s'inscrivent sur le site * Les inscriptions son stockées en base de données L'agence de Presse se chargera d'envoyer manuellement les invitations en PDF par e-mail d'après le listing des journalistes accessible par phpMyAdmin. ==== Fonctionnalités ==== * Formulaire d'inscription * Vérifier les champs saisis * tous les champs doivent etre remplis * l'email est bien un e-mail * le login est disponible * le [[td14#recaptcha_utilisation_d_un_objet_simple|captcha]] est bien renseigné * Stocker les données dans la base de données * ajouter l'adresse IP d'inscription * ajouter la date d'inscription ===== version 2 ===== ==== Objectifs ==== La version 2 automatise la gestion des PDF * Une fois enregistrés, les utilisateurs peuvent se connecter à un espace privé * dans cet espace privé ils peuvent télécharger un PDF généré pour eux. ==== Fonctionnalités et périmètre technique ==== === L'Espace privé === Ajoutez un système d'identification par login et mot de passe. Cette identification par session permet d'accéder à un espace privé. Dans cet espace privé, un bouton permet de demander la génération d'un PDF. Quand ce bouton est cliqué, on accède à une page qui propose de télécharger le PDF fraîchement généré. Bien entendu, la génération du PDF n'est autorisée que si l'utilisateur est connecté. Le PDF est un fichier comprenant un numéro aléatoire généré par [[phpfn>uniqid]] et stocké dans la table utilisateur dans le champ //secret_key//. === Le PDF === Pour générer le PDF, nous utiliserons la librairie FPDF ainsi que ses extensions FPDI et FPDF_codabar. Ces librairies sont importées et une fonction vierge letter_generate_pdf() vous attend dans le fichier functions/letter.fn.php === Les champs du PDF === {{ :ressources:php:fiac_pdf_example.png?200|}} Le fichier data/pdf_output/example.pdf est un exemple de personnalisation, j'ai entouré en rouge les éléments qui sont générés dynamiquement. Les éléments suivants sont intégrés au PDF final : * Date * Prénom Nom * Code barre (année + id de l'utilisateur) Pour écrire dans un fichier PDF, référez-vous [[http://www.fpdf.org/en/tutorial/|aux tutoriels de FPDF]]. === Import d'un PDF souche === Le PDF est généré d'après un fichier "souche" contenant une mise en page et des espaces vierges qui seront remplis par PHP. Le fichier "souche" est dans data/pdf_templates/press_letter.pdf Comme spécifié dans [[http://www.setasign.de/products/pdf-php-solutions/fpdi/|la doc de FPDI]], l'import d'un fichier souche se fait avec les méthodes setSourceFile et importPage. require('fpdf.php'); require('fpdi.php'); $pdf = new FPDI(); $pagecount = $pdf->setSourceFile('TestDoc.pdf'); $tplidx = $pdf->importPage(1, '/MediaBox'); $pdf->addPage(); $pdf->useTemplate($tplidx, 10, 10, 90); $pdf->Output('newpdf.pdf', 'D'); === Code barre === L'utilisation de l'objet FPDF Codabar est surprennament simple, vous pouvez vous référer à la documentation sommaire dans le fichier lib/fpdf_codabar/info.htm require('fpdf.php'); require('pdf_codabar.php'); $pdf=new PDF_Codabar(); $pdf->AddPage(); $pdf->Codabar(75,40,'123456789'); $pdf->Output(); ===== version 3 ===== La version 3 du script permet de proposer une validation manuelle des journalistes par l'agence de RP histoire que des petits malins ne fassent pas de demande de badge presse juste pour ne pas avoir à payer l'entrée. Il y a donc un autre back-office spécialement conçu pour l'agence de RP (il peut être plus rudimentaire avec un mot de passe en dur ou utiliser des levels de la table users). Cet administrateur peut valider ou non les demandes d'accréditation presse. Les users, ont donc à leur création dans leur espace privé, à la place du bouton "générer un badge" un texte "demande d'accréditation en cours de validation". Si l'administrateur valide que l'utilisateur est bien un journaliste, l'utilisateur peut alors accéder générer puis télécharger son accès presse.