Présentation
La classe CopixEventResponse permet d'apporter / lire une réponse d'un ou des listeners après avoir lancé un évènement.
Exemple (utilisé dans le module quicksearch)
//demande aux modules de lister leurs contenus.
$response = _notify ('ListContent');
//récupère l'ensemble des contenus donnés par les modules (dans url)
foreach ($response->getResponse () as $key=>$responses){
if (isset ($responses['url']) && is_array ($responses['url'])){
$ppo->arLinks = array_merge ($ppo->arLinks, $responses['url']);
}
}
//pour fournir $responses['url'], les listener ont effectué le code suivant :
function processListContent ($pEvent, $pEventResponse){
$pEventResponse->add (array ('url'=>$tableauDeLiens));
}
Méthodes
Ecriture d'une réponse avec add
La méthode add permet d'ajouter un ensemble de données à la réponse. Cette méthode accepte un seul paramètre qui doit être un tableau.
exemple
Chaque appel à la méthode add ajoute un élément dans la réponse.
Lecture d'une réponse
utilisation de inResponse pour savoir si un élément est présent dans la réponse
La méthode inResponse permet de regarder si l'on a trouvé un élément donné dans une des réponses reçues.
exemple
//Notification de suppression
$response = _notify ('DeletedContent', array ('id'=>$id));
//on regarde si tous les modules acceptent que l'on supprime l'élément
if ($response->inResponse ('failed', true)){
//impossible de supprimer, un module à besoin de l'élément
}else{
//supression effective
}
//Voici le code dans le listener pour indiquer failed :
function processDeletedContent ($pEvent, $pResponse){
//traitement
$pResponse->add (array ('failed'=>true));
}
parcours de toutes les réponses avec getResponse
La méthode getResponse retourne dans un tableau toutes les réponses apportées via la méthode add.
exemple
//demande des contenus du site
$response = _notify ('ListContent');
//récupère l'ensemble des contenus donnés par les modules (dans url)
foreach ($response->getResponse () as $key=>$responses){
if (isset ($responses['url']) && is_array ($responses['url'])){
$ppo->arLinks = array_merge ($ppo->arLinks, $responses['url']);
}
}
//pour fournir $responses['url'], les listener ont effectué le code suivant :
function processListContent ($pEvent, $pEventResponse){
$pEventResponse->add (array ('url'=>$tableauDeLiens));
}

