Travail à réaliser ========== L'objectif de cet exercice est d'introduire l'absraction du code par l'utilisation de fonctions. Il permet également d'aller un peu plus loin en SQL via PDO. Vous pourrez vous amuser avec les requêtes munies de paramètres à traiter. Pagination ---------- La page d'index affichent les projets avec une pagination. Actuellement, les projets sont affichés 5 par 5. Pour passer d'une page à l'autre, il suffit d'ajouter un paramètre dans la requête en passant par la `query_string` : `?page=n`, `n` le numéro de la page à afficher. Réalisez l'affichage de la pagination sous la forme suivante : ``` Première page | Précédent | 1 | 2 | 3 | ... | Suivant | Dernière page ``` Il faudra mettre en avant la page courrante dans le listing. Les liens `Précédent` et `Suivant` doivent être masqués si nous sommes à la première ou la dernière page. Commentaires ------------ Nous devons pouvoir déposer des commentaires sur chaque projet. Ces commentaires seront bien évidement affichés sur ces pages. Un commentaire est composé de : * le nom ou pseudo de l'auteur * le site web de l'auteur * l'email de l'auteur * sa date de publication * son contenu La date est générée automatiquement. Tous les champs sont obligatoires à l'exception du site web. Il faudra afficher l'avatar de l'auteur en utilisant le service [gravatar](https://fr.gravatar.com/site/implement/images/php/). *Ne pas réutiliser ce code source mais ne vous génez pas pour vous en inspirer.* Flux ---- Réalisez un flux RSS présentant les 10 derniers projets mis en ligne. Vous devrez concevoir et réaliser des fonctions php. Réécriture d'URL ---------------- Documentez-vous et réalisez une réécriture des URL (`url rewriting`) afin de les rendre plus sexy. Je souhaites accéder aux projets via : http://localhost/projet/`{id}`/`{slug}` Le slug est une chaine de caractère contenant le nom du projet sans les caractères spéciaux. Vous devez donc créer une fonction pour le générer. Exemple : le slug de `Je suis une licorne, c'est classe quand même, non ?` est `je-suis-une-licorne-c-est-classe-quand-meme-non`. Si j'avais un projet avec ce titre et si son *id* était 42, alors l'adresse du projet serait : http://localhost/projet/42/je-suis-une-licorne-c-est-classe-quand-meme-non Administration -------------- Pour le moment, la rédaction des articles est réalisée via phpmyadmin. Par ailleurs, il n'y a aucun modération des commentaires. Vous devez donc développer un backoffice (BO) pour administrer les contenus du portfolio. L'accès au BO est reservé aux administrateurs. Prévoyez ainsi une authentification avec la méthode que vous préférez parmis : * Base de données + formulaire __(recommandé)__ - @see [sessions] [sessions] * Identifiants en durs dans le code + formulaire (il manque pas grand chose pour utiliser une bdd ;)) - @see [sessions] [sessions] * Basic ou Digest HTTP authentication (pour les flemmards !) Les commentaires doivent pouvoir être mis hors-ligne voire supprimés. Les articles doivent pouvoir être ajoutés, modifiés et supprimés depuis l'interface. Petit plus ---------- Les étudiants qui me proposeront une correction via des `pull-request` auront 1 point supplémentaire sur la note finale. Les intéressés devront créer un compte sur [Gitlab](https://gitnet.fr). Je les ajouterai au dépôt et vous me transmettrez votre travail dans une branche portant votre nom : `nom-prenom`. #### Installation du projet ``` $ git clone git@gitnet.fr:deblan/lpwd-php-portfolio.git $ git branch nom-prenom # à modifier $ git checkout nom-prenom $ ... modifications ... $ git commit add $ git commit -m "Explications des modifications" $ git push -u origin nom-prenom ``` [sessions]: http://php.net/manual/fr/function.session-start.php