<?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>';
}
}