La méthode findAll() va lire le fichier tickets.csv. Chaque ligne lue correspond à un ticket. On récupère les champs de chaque ticket en utilisant la fonction explode() déjà utilisée dans les précédents TPs.
/**
* retourne la
collection (un tableau simple) de tous les tickets
* (le tableau
retourné peut être vide.)
*/
function findAll() {
$result =
array();
$fd =
fopen($this->filePath, 'r'); // ouverture du fichier en lecture
if (!$fd)
return $result;
while
($line = fgets($fd)) {
list($ticketID, $applicationID, $login, $priority, $type,
$creationDate, $oneLiner, $detailedDescription, $attachmentName) =
explode(';', $line);
$newTicket =
new Ticket($applicationID, $login, $priority, $type, $creationDate,
$oneLiner, $detailedDescription, $attachmentName, $ticketID);
$result[] = $newTicket; //
ajoute le nouveau ticket au tableau
}
fclose($fd); // fermeture du fichier
return
$result;
}
La méthode findById($ticketId) n'est pas explicité ici.
Ajouter les méthodes suivantes dans AppService.class.php :
/**
* retourne la
collection (un tableau simple) de tous les tickets
* (le tableau
retourné peut être vide.)
*/
static function getAllTickets() {
$ticketDAO = new TicketDAO();
return
$ticketDAO->findAll();
}
/**
* retourne l'instance de
Ticket d'ID $ticketId
*/
static function findTicketById($ticketId) {
$ticketDAO = new TicketDAO();
return
$ticketDAO->findById($ticketId);
}
Sélectionner le répertoire tp4
File->New->PHP File
Saisir showAllTickets.php pour nom de fichier. Cliquer sur le bouton "Finish".
Rechercher <!DOCTYPE html PUBLIC dans le fichier editTicketAction.php. Copier la zone de ce fichier comprise entre cet endroit et la fin du fichier. L'insérer dans le fichier showAllTickets.php
Au début de ce fichier inclure (éventuellement un contrôle d'accès et) les 2 classes utilisées ainsi que la définition du tableau $priorityColorMap :
<?php
include_once 'Ticket.class.php';
include_once 'AppService.class.php';
$priorityColorMap = array(
5 => 'red', // 'Très urgente'
//...
?>
Rechercher la ligne contenant un appel à AppService::printTicketAsTableRow. Remplacer cette ligne par les suivantes :
<?php
$allTickets =
AppService::getAllTickets();
foreach ( $allTickets as
$ticket ) {
$tableRecordClass = 'tab_bg_' .
$priorityColorMap[$ticket->getPriority()];
AppService::printTicketAsTableRow($ticket, $tableRecordClass);
}
?>