forked from spip-contrib-extensions/pensebetes
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
5.4 KiB
PHP
158 lines
5.4 KiB
PHP
<?php
|
|
/**
|
|
* Utilisations de pipelines par Pensebete
|
|
*
|
|
* @plugin Pensebetes
|
|
* @copyright 2019
|
|
* @author Vincent CALLIES
|
|
* @licence GNU/GPL
|
|
* @package SPIP\Pensebetes\Pipelines
|
|
*/
|
|
|
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
|
return;
|
|
}
|
|
|
|
|
|
/**
|
|
* Ajout de la feuille de style de Pensebetes,
|
|
* dans l'espace public si demandé
|
|
* Appelé aussi depuis le privé avec $prive à true.
|
|
*
|
|
* @pipeline insert_head_css
|
|
* @param array $flux Données du pipeline
|
|
* @return array Données du pipeline
|
|
*/
|
|
|
|
function pensebetes_insert_head_css($flux, $prive = false) {
|
|
// toujours autoriser pour le prive.
|
|
if ($prive or lire_config('pensebetes/espacepublic')) {
|
|
$css = direction_css(produire_fond_statique('css/style_plugin_pensebetes.css'), lang_dir());
|
|
$flux .= '<link rel="stylesheet" href="'.$css.'" type="text/css" />';
|
|
}
|
|
return $flux;
|
|
}
|
|
|
|
/**
|
|
* Ajout de la CSS du Pensebetes au head privé
|
|
*
|
|
* @pipeline insert_header_prive_css
|
|
* @param string $flux Contenu du head
|
|
* @return string Contenu du head complété
|
|
*/
|
|
function pensebetes_insert_head_prive_css($flux) {
|
|
return pensebetes_insert_head_css($flux, true);
|
|
}
|
|
|
|
|
|
/**
|
|
* Ajout de contenu à gauche de la page,
|
|
*
|
|
* @pipeline affiche_gauche
|
|
* @param array $flux Données du pipeline
|
|
* @return array Données du pipeline
|
|
*/
|
|
function pensebetes_affiche_gauche($flux){
|
|
|
|
# affichage de la boite d'information latérale
|
|
|
|
if (in_array($flux['args']['exec'], array('auteur','accueil'))
|
|
and
|
|
in_array($flux['args']['exec'],lire_config('pensebetes/mes_boites', array()))
|
|
and
|
|
in_array($GLOBALS['visiteur_session']['statut'],lire_config('pensebetes/mes_statuts', array()))
|
|
){
|
|
|
|
$id_auteur = $flux['args']['id_auteur'] ? $flux['args']['id_auteur'] : $GLOBALS['visiteur_session']['id_auteur'];
|
|
include_spip('inc/presentation');
|
|
$titre = "<a href='".generer_url_ecrire('murs')."'>"._T('pensebete:titre_activite_mur')."</a></h3>";
|
|
$flux['data'] .= debut_cadre_relief('mur-24.svg',true,'',$titre);
|
|
$flux['data'] .= recuperer_fond('prive/squelettes/inclure/pensebetes_donnes', array('id_donneur' => $id_auteur));
|
|
$flux['data'] .= recuperer_fond('prive/squelettes/inclure/pensebetes_recus',array('id_receveur' => $id_auteur));
|
|
$flux['data'] .= fin_cadre_relief(true);
|
|
|
|
}
|
|
return $flux;
|
|
}
|
|
|
|
|
|
/**
|
|
* Ajout de contenu sur certaines pages,
|
|
* notamment des formulaires de liaisons entre objets
|
|
*
|
|
* @pipeline affiche_milieu
|
|
* @param array $flux Données du pipeline
|
|
* @return array Données du pipeline
|
|
*/
|
|
function pensebetes_affiche_milieu($flux) {
|
|
$texte = "";
|
|
$e = trouver_objet_exec($flux['args']['exec']);
|
|
|
|
// Poser des pense-bêtes sur les objets éditoriaux éditables sélectionnés dans la configuration
|
|
if (in_array($e['table_objet_sql'], lire_config('pensebetes/mes_objets')) AND !$e['edition'] AND in_array($GLOBALS['visiteur_session']['statut'],lire_config('pensebetes/mes_statuts', array()))){
|
|
$texte = recuperer_fond('prive/objets/editer/liens', array(
|
|
'table_source' => 'pensebetes',
|
|
'objet' => $e['type'],
|
|
'id_objet' => $flux['args'][$e['id_table_objet']],
|
|
'id_donneur' => $GLOBALS['visiteur_session']['id_auteur'],
|
|
'editable' => autoriser('associerpensebetes', $e['type'],$e['id_objet'])?'oui':'non'
|
|
));
|
|
}
|
|
|
|
// Poser des pense-bêtes dans les lieux sélectionnés dans la configuration (exec)
|
|
if (in_array($flux['args']['exec'], lire_config('pensebetes/mes_lieux')) AND in_array($GLOBALS['visiteur_session']['statut'],lire_config('pensebetes/mes_statuts', array()))){
|
|
$ajout = recuperer_fond('prive/squelettes/inclure/pensebetes_affiche_recus',
|
|
array(
|
|
'id_receveur' => $GLOBALS['visiteur_session']['id_auteur']
|
|
)
|
|
);
|
|
$flux['data'] = $ajout.$flux['data'];
|
|
}
|
|
|
|
// injection des données
|
|
if ($texte) {
|
|
if ($p = strpos($flux['data'], '<!--affiche_milieu-->')) {
|
|
$flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
|
|
} else {
|
|
$flux['data'] .= $texte;
|
|
}
|
|
}
|
|
|
|
return $flux;
|
|
}
|
|
|
|
/**
|
|
* Insérer des évènements dans le calendrier privé
|
|
*
|
|
* On y insère les Pense-bêtes de l'auteur. Les données sont formatées en json
|
|
* et utilisées par la librairie javascript Fullcalendar
|
|
* au travers du Plugin-dist Organiseur.
|
|
*
|
|
* @pipeline quete_calendrier_prive
|
|
* @param array $flux Données du pipeline
|
|
* @return array Données du pipeline
|
|
**/
|
|
|
|
function pensebetes_quete_calendrier_prive($flux) {
|
|
|
|
if (in_array($GLOBALS['visiteur_session']['statut'], lire_config('pensebetes/mes_statuts', array()))){
|
|
$id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
|
|
if ($mes_pensebetes = sql_allfetsel('pb.id_pensebete, pb.titre, pb.texte, pb.date', 'spip_pensebetes_receveurs as rec INNER JOIN spip_pensebetes as pb ON rec.id_pensebete=pb.id_pensebete', 'rec.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' => 0,
|
|
'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;
|
|
}
|