L3 Info : PHP et Applications Web
 
◃  Ch. 7 CRUD  ▹
 

Class VueLivre

<?php

namespace Crud2023;

require_once 'EntiteLivre.php';

use \Crud2023\EntiteLivre;

/**
 * Classe VueLivre
 * @package Crud2023
 * @author D. Fournier
 * @date 2023
 */
class VueLivre implements InterfaceVue
{

    /**
     * production d'une string contenant un tableau HTML représentant un livre
     * @param AbstractEntite $entite
     * @return string
     */
    public static function getHTML4Entity(AbstractEntite $entite): string
    {
        if ($entite instanceof EntiteLivre) {
            $ch = "<table border='1'>
        <tr><th>liv_num</th><th>liv_titre</th><th>liv_depot_legal</th></tr>\n";
            $ch .= "<tr><td>" . $entite->getLivNum() . "</td>\n";
            $ch .= "<td>" . $entite->getLivTitre() . "</td>\n";
            $ch .= "<td>" . $entite->getLivDepotlegal() . "</td>\n";
            $ch .= "</tr></table>\n";
            return $ch;
        } else
            exit("Le paramètre d'entrée n'est pas une instance de EntiteLivre");
    }

    /**
     * production d'une string contenant un formulaire HTML
     * destiné à saisir une nouveau livre ou à modifier un livre existant
     * @param array $assoc
     * @return string
     */
    public static function getForm4Entity(AbstractEntite $entite=null): string
    {
        if (is_null($entite)) {
            $ch = '<form action="action.php" method="GET">';
            $ch .= "Numero <input type='number' name='liv_num' ><br>";
            $ch .= "Titre <input type='text' name='liv_titre' ><br>";
            $ch .= "Dépôt Légal <input type='date' name='liv_depotlegal' ><br>";
            $ch .= '<input type="submit" name="action" value="sauverEntite"/>';
            return $ch . '</form>';
        }
        if ($entite instanceof EntiteLivre) {
            $ch = '<form action="action.php" method="GET">';
            $ch .= "Numero <input type='hidden' name='liv_num' value='" . $entite->getLivNum() . "' ><br>";
            $ch .= "Titre <input type='text' name='liv_titre' value='" . htmlspecialchars($entite->getLivTitre()) . "' ><br>";
            $ch .= "Dépôt Légal <input type='date' name='liv_depotlegal' value='" . $entite->getLivDepotlegal() . "' ><br>";
            $ch .= '<input type="submit" name="action" value="sauverEntite"/>';
            return $ch . '</form>';
        } else
            exit("Le paramètre d'entrée n'est pas une instance de EntiteLivre");
    }

    /**production d'une string contenant une liste HTML représentant un ensemble de livres
     * et permettant de les modifier ou de les supprimer grace à un lien hypertexte
     * @param array un tableau d'instances d'EntiteLivre
     * @return string
     */
    public static function getHTML4Entities(array $entities): string
    {
        $ch = '<h1>Les Livres</h1>';
        $ch .= "<form action='action.php' method='get'>
<p>Choisir un numéro : <input type='number' name='liv_num' > <button name='action' value='afficherEntite'>Afficher</button></p>
</form>";
        $ch .= '<p><a href="action.php?action=creerEntite">Créer un nouveau livre</a></p>';
        $ch .= '<h3>Les '.count($entities).' livres</h3>';
        $ch .='<ul>';
        foreach ($entities as $livre) {
            if ($livre instanceof EntiteLivre) {
                $ch .= '<li>' . $livre->getLivNum() . ' ';
                $ch .= $livre->getLivTitre() . ' ';
                $ch .= $livre->getLivDepotlegal() . ' ';
                $ch .= '<a href="action.php?action=modifierEntite&liv_num=' . $livre->getLivNum() . '">Modifier</a> ';
                $ch .= '<a href="action.php?action=supprimerEntite&liv_num=' . $livre->getLivNum() . '">Supprimer</a> ';
                $ch .= '</li>';
            }
        }
        return $ch . '</ul>';
    }
}