#PHP [(#INCLURE{fond=fabrique/entetes/php,env, description=Utilisations de pipelines par #ENV{paquet/nom}, package=Pipelines})] /* * Un fichier de pipelines permet de regrouper * les fonctions de branchement de votre plugin * sur des pipelines existants. */ [ (#REM) AFFICHE ENFANTS ] /** * Ajouter les objets sur les vues des parents directs * * @pipeline affiche_enfants * @param array $flux Données du pipeline * @return array Données du pipeline **/ function [(#PREFIXE)]_affiche_enfants($flux) { if ($e = trouver_objet_exec($flux['args']['exec']) and $e['edition'] == false) { $id_objet = $flux['args']['id_objet']; if ($e['type'] == 'rubrique') { $flux['data'] .= recuperer_fond( 'prive/objets/liste/#OBJET', array( 'titre' => _T('#TYPE:titre_[(#OBJET)]_rubrique'), 'id_rubrique' => $id_objet ) ); if (autoriser('creer[(#TYPE|fabrique_type_autorisation)]dans', 'rubrique', $id_objet)) { include_spip('inc/presentation'); $flux['data'] .= icone_verticale( _T('#TYPE:icone_creer_#TYPE'), generer_url_ecrire('[(#TYPE)]_edit', "id_rubrique=$id_objet"), '#TYPE-24.png', 'new', 'right' ) . "
"; } }
[(#REM) ] if ($e['type'] == '[(#VALEUR{parent/type})]') { $flux['data'] .= recuperer_fond( 'prive/objets/liste/#OBJET', array( 'titre' => _T('#TYPE:titre_[(#OBJET)]'), '[(#VALEUR{parent/id_objet})]' => $id_objet ) ); if (autoriser('creer[(#TYPE|fabrique_type_autorisation)]dans', '[(#VALEUR{parent/objet})]', $id_objet)) { include_spip('inc/presentation'); $flux['data'] .= icone_verticale( _T('#TYPE:icone_creer_#TYPE'), generer_url_ecrire('[(#TYPE)]_edit', "[(#VALEUR{parent/id_objet})]=$id_objet"), '#TYPE-24.png', 'new', 'right' ) . "
"; } } [(#REM) ] } return $flux; } [ (#REM) AFFICHE MILIEU ] /** * 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 [(#PREFIXE)]_affiche_milieu($flux) { $texte = ''; $e = trouver_objet_exec($flux['args']['exec']); // auteurs sur les [(#OBJETS|objets_option_presente{auteurs_liens, objet}|implode{', '})] if (!$e['edition'] and in_array($e['type'], array('[(#OBJETS|objets_option_presente{auteurs_liens, type}|implode{"', '"})]'))) { $texte .= recuperer_fond('prive/objets/editer/liens', array( 'table_source' => 'auteurs', 'objet' => $e['type'], 'id_objet' => $flux['args'][$e['id_table_objet']] )); } // #LOBJET sur les [(#VUE_LIENS|fabrique_array_map{table_objet, #OBJETS}|implode{', '})] if (!$e['edition'] and in_array($e['type'], array('[(#VUE_LIENS|fabrique_array_map{objet_type, #OBJETS}|implode{"', '"})]'))) { $texte .= recuperer_fond('prive/objets/editer/liens', array( 'table_source' => '#LOBJET', 'objet' => $e['type'], 'id_objet' => $flux['args'][$e['id_table_objet']] )); } if ($texte) { if ($p = strpos($flux['data'], '')) { $flux['data'] = substr_replace($flux['data'], $texte, $p, 0); } else { $flux['data'] .= $texte; } } return $flux; } [ (#REM) AFFICHE AUTEURS INTERVENTIONS ] /** * Ajout de liste sur la vue d'un auteur * * @pipeline affiche_auteurs_interventions * @param array $flux Données du pipeline * @return array Données du pipeline */ function [(#PREFIXE)]_affiche_auteurs_interventions($flux) { if ($id_auteur = intval($flux['args']['id_auteur'])) { $flux['data'] .= recuperer_fond('prive/objets/liste/#OBJET', array( 'id_auteur' => $id_auteur, 'titre' => _T('#TYPE:info_[(#OBJET)]_auteur') ), array('ajax' => true)); } return $flux; } [ (#REM) AFFICHER CONTENU OBJET ] /** * Ajout de formulaires de liens * * @pipeline affiche_contenu_objet * @param array $flux Données du pipeline * @return array Données du pipeline */ function [(#PREFIXE)]_afficher_contenu_objet($flux) { $type = $flux['args']['type']; $id = $flux['args']['id_objet']; return $flux; } [ (#REM) BOITE INFOS ] [(#REM) ]/** * Afficher le nombre d'éléments dans les parents * * @pipeline boite_infos * @param array $flux Données du pipeline * @return array Données du pipeline **/ function [(#PREFIXE)]_boite_infos($flux) {[(#REM) ] if (isset($flux['args']['type']) and isset($flux['args']['id']) and $id = intval($flux['args']['id'])) { $texte = ''; [(#REM) ] if ($flux['args']['type'] == '#VALEUR{parent/type}' and $nb = sql_countsel('#VALEUR{table}', array(["(#STATUT|?{statut='publie'})", ]'#VALEUR{parent/id_objet}=' . $id))) { $texte .= '
' . singulier_ou_pluriel($nb, '#TYPE:info_1_#TYPE', '#TYPE:info_nb_#LOBJET') . "
\n"; } [(#REM) ] if ($texte and $p = strpos($flux['data'], '')) { $flux['data'] = substr_replace($flux['data'], $texte, $p, 0); } } return $flux; }
[ (#REM) OBJET COMPTE ENFANT ] [(#REM) ]/** * Compter les enfants d'un objet * * @pipeline objets_compte_enfants * @param array $flux Données du pipeline * @return array Données du pipeline **/ function [(#PREFIXE)]_objet_compte_enfants($flux) { [(#REM) ] if ($flux['args']['objet'] == '#VALEUR{parent/type}' and $[(#VALEUR{parent/id_objet})] = intval($flux['args']['id_objet'])) { [ // juste les publiés ? if (array_key_exists('statut', $flux\['args'\]) and ($flux\['args'\]\['statut'\] == 'publie')) { $flux\['data'\]\['#OBJET'\] = sql_countsel('#TABLE', '#VALEUR{parent/id_objet} = ' . intval($#VALEUR{parent/id_objet}) . " AND (statut = 'publie')"); } else { $flux\['data'\]\['#OBJET'\] = sql_countsel('#TABLE', '#VALEUR{parent/id_objet} = ' . intval($#VALEUR{parent/id_objet}) . " AND (statut <> 'poubelle')"); }(#STATUT|oui)][(#REM) ][ $flux\['data'\]\['#OBJET'\] = sql_countsel('#TABLE', '#VALEUR{parent/id_objet} = ' . intval($#VALEUR{parent/id_objet}));(#STATUT|non)] } return $flux; } [ (#REM) OPTIMISER BASE DISPARUS ] /** * Optimiser la base de données * * Supprime les liens orphelins de l'objet vers quelqu'un et de quelqu'un vers l'objet.[(#REM) ][(#REM) ] * Supprime les objets à la poubelle.[(#REM) ] * * @pipeline optimiser_base_disparus * @param array $flux Données du pipeline * @return array Données du pipeline */ function [(#PREFIXE)]_optimiser_base_disparus($flux) { include_spip('action/editer_liens'); $flux['data'] += objet_optimiser_liens(array('#TYPE'=>'*'), '*'); [(#REM) ][(#REM) ] sql_delete('#TABLE', "statut='poubelle' AND maj < " . $flux['args']['date']); return $flux; }[ (#REM) TRIG PROPAGER LES SECTEURS ] /** * Synchroniser la valeur de id secteur * * @pipeline trig_propager_les_secteurs * @param string $flux Données du pipeline * @return string Données du pipeline **/ function [(#PREFIXE)]_trig_propager_les_secteurs($flux) { // synchroniser #TABLE $r = sql_select( 'A.#ID_OBJET AS id, R.id_secteur AS secteur', '#TABLE AS A, spip_rubriques AS R', 'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur' ); while ($row = sql_fetch($r)) { sql_update('#TABLE', array('id_secteur' => $row['secteur']), '#ID_OBJET=' . $row['id']); } return $flux; }