Carnet Wiki

Ajouter des Objets Editoriaux dans le calendrier personnel - l’exemple des Pense-bêtes.

Version 6 — Mars 2020 Maïeul

Cet article est une visée pédagogique.
Il est proposé ici d’ajouter les pense-bêtes reçus par un auteur (après installation du plugin Pense-bêtes ) dans le calendrier personnel de l’auteur.

Le but L’article est cet article est de faire une visée pédagogique  : comprendre le fonctionnement du pipeline à utiliser pour ajouter un nouvel objet éditorial dans le calendrier.

L’Agenda interne de SPIP est la superposition de deux agendas, l’agenda public de la vie du site et l’agenda personnel de l’auteur [1]. Chaque calendrier présente des objets éditoriaux placés dans le calendrier par sa date : la date de publication d’un article par exemple est le repère pris pour placer l’article dans le calendrier public. C’est le plugin Organiseur inclus dans la distribution de SPIP qui s’occupe de cette fonction.

L’objet du présent article est de vous apprendre comment incorporer dans l’agenda personnel des nouveaux objets éditoriaux [2].

Pour l’exercice pédagogique, on va partir du principe que vous avez installé le plugin Pense-bêtes et que vous souhaitez le modifier pour que les pense-bêtes adressés à l’auteur apparaissent dans le calendrier de l’auteur par date. Vous pourrez adapter les démarches ici décrites à d’autres objets éditoriaux dans les plugins que vous programmerez.

Déclaration de l’utilisation du pipeline < code>quete_calendrier_prive</code >

quete_calendrier_prive}}}

Les plugins peuvent afficher leurs événements dans le calendrier privé par le pipeline ’quete_calendrier_prive’. Ce pipeline est créé par le plugin Organiseur.

Pour pouvoir utiliser ce pipeline d’Organiseur, on déclare dans notre propre plugin que l’on va se brancher dessus en ajoutant une ligne dans les déclaration du < code>paquet paquet .xml</code > xml :

<pipeline nom="quete_calendrier_prive" inclure="pensebetes_pipelines.php" />

Cette déclaration faite, il faut créer la fonction qui utilisera effectivement le pipeline. Pour ce faire, on modifier le fichier < code>pensebetes_pipelines pensebetes_pipelines .php</code > php :

function pensebetes_quete_calendrier_prive($flux) {


return $flux;
}

Pour l’instant, les tuyaux de programmation sont installés (on a dérivé le pipeline), mais le flux de données qui les traversent ne sont pas modifiés. En d’autres ternes, l’information circule mais n’est pas modifiée.

Vous voulez regardez ce qui se passe ? Vous pouvez le faire par un log. Un log est un journal de bord horodaté, à l’usage du programmeur, qui ordonne les différents événements qui se sont produits. Vous pouvez aller le consulter dans les répertoire tmp/log, ou installer un charmant plugin,
Simples Logs, qui vous permettra de faire cela depuis l’interface privée.

function pensebetes_quete_calendrier_prive($flux) {
$start = $flux['args']['start'];
$end = $flux['args']['end'];
$quoi = print_r($flux['data'],true);


spip_log("start=$start end=$end quoi=$quoi", 'calendrier'._LOG_INFO_IMPORTANTE);
	return $flux;
}

Ajout d’informations formatées dans le flux

Maintenant que vous savez comment est formaté le flux de donnée, vous pouvez regarder comment le plug Organisateur le met en forme [3]et tester si vous pouvez introduire de nouvelles informations.

Pour ce faire, nous allons modifier les données qui transitent dans le pipeline que nous avons dérivé. Nous avons ajouter un évènement pour aujourd’hui.

function pensebetes_quete_calendrier_prive($flux) {
	
	$texte=generer_url_ecrire('article','id_article=1');// fonction dans urls.php
	$texte=str_replace ('&','&',$texte); // on injecte du json pas du HTML
	$flux['data'][]=array ('id' => ,
	'title' => "Mon premier article",
	'allDay' => 1,
	'start' => date('Y-m-d'),
	'end' => date('Y-m-d'),
	'url' => liens_absolus($texte, ''), //fonction de filtres_mini.php
	'className' => 'calendrier-event calendrier-couleur01',
	'description' =>'Ma description qui déchire !');


return $flux;
}

Vous verrez apparaitre à la date au jour d’aujourd’hui un évènement vous rappelant le premier article qui a été écrit sous SPIP.

Ajout de l’information que vous souhaitez dans le flux

L’objectif est maintenant de faire apparaitre les pense-bêtes qu’a reçu l’auteur dans son calendrier personnel.

function pensebetes_quete_calendrier_prive($flux) {
	
	$id_auteur =$GLOBALS['visiteur_session']['id_auteur'] ;


if ($mes_pensebetes = sql_allfetsel('id_pensebete, titre, texte, date', 'spip_pensebetes', 'id_receveur=' . intval($id_auteur). ' AND date > "'.$flux['args']['start'].'" AND date < "'.$flux['args']['end'].'"')) {
	foreach ($mes_pensebetes as $un) {
		$texte=generer_url_ecrire('pensebete','id_pensebete='.$un['id_pensebete']);// fonction dans urls.php
		$texte=str_replace ('&','&',$texte); // on injecte du json pas du HTML
		$flux['data'][]=array ('id' => ,
			'title' => $un['titre'],
			'allDay' => 1,
			'start' => substr ($un['date'],0,10),
			'end' => substr ($un['date'],0,10),
			'url' => liens_absolus($texte, ''), //fonction de filtres_mini.php
			'className' => 'calendrier-event calendrier-couleur01',
			'description' =>$un['texte']);
	}
}
	return $flux;
}