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

$pEventResponse->add (array ('parametre'=>'valeur'));
	$pEventResponse->add (array ('parametre'=>'valeur', 'parametre2'=>'valeur2'));

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));
}