-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcita_pipelines.php
127 lines (110 loc) · 3.21 KB
/
cita_pipelines.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
/**
* Utilisations de pipelines par Cita
*
* @plugin Cita
* @copyright 2020
* @author Rainer Müller
* @licence GNU/GPL v3
* @package SPIP\Cita\Pipelines
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* 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 cita_affiche_enfants($flux) {
if ($e = trouver_objet_exec($flux['args']['exec']) and $e['edition'] == false) {
$id_objet = $flux['args']['id_objet'];
if ($e['type'] == 'auteur') {
$flux['data'] .= recuperer_fond(
'prive/objets/liste/citas',
array(
'titre' => _T('cita:titre_citas'),
'id_auteur' => $id_objet
)
);
if (autoriser('creercitadans', 'auteurs', $id_objet)) {
include_spip('inc/presentation');
$flux['data'] .= icone_verticale(
_T('cita:icone_creer_cita'),
generer_url_ecrire('cita_edit', "id_auteur=$id_objet"),
'cita-24.png',
'new',
'right'
) . "<br class='nettoyeur' />";
}
}
}
return $flux;
}
/**
* 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 cita_boite_infos($flux) {
if (isset($flux['args']['type']) and isset($flux['args']['id']) and $id = intval($flux['args']['id'])) {
$texte = '';
if ($flux['args']['type'] == 'auteur' and $nb = sql_countsel('spip_citas', array("statut='publie'", 'id_auteur=' . $id))) {
$texte .= '<div>' . singulier_ou_pluriel($nb, 'cita:info_1_cita', 'cita:info_nb_citas') . "</div>\n";
}
if ($texte and $p = strpos($flux['data'], '<!--nb_elements-->')) {
$flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
}
}
return $flux;
}
/**
* Compter les enfants d'un objet
*
* @pipeline objets_compte_enfants
* @param array $flux Données du pipeline
* @return array Données du pipeline
**/
function cita_objet_compte_enfants($flux) {
if ($flux['args']['objet'] == 'auteur' and $id_auteur = intval($flux['args']['id_objet'])) {
// juste les publiés ?
if (array_key_exists('statut', $flux['args']) and ($flux['args']['statut'] == 'publie')) {
$flux['data']['citas'] = sql_countsel('spip_citas', 'id_auteur= ' . intval($id_auteur) . " AND (statut = 'publie')");
} else {
$flux['data']['citas'] = sql_countsel('spip_citas', 'id_auteur= ' . intval($id_auteur) . " AND (statut <> 'poubelle')");
}
}
return $flux;
}
/**
* Optimiser la base de données
*
* Supprime les objets à la poubelle.
*
* @pipeline optimiser_base_disparus
* @param array $flux Données du pipeline
* @return array Données du pipeline
*/
function cita_optimiser_base_disparus($flux) {
sql_delete('spip_citas', "statut='poubelle' AND maj < " . $flux['args']['date']);
return $flux;
}
/**
* Redirection si authentifié pour eviter un problème de cache.
*
* @pipeline formulaire_traiter
* @param array $flux
* @return array
*/
function cita_i3_traiter_formulaire($flux){
spip_log($flux, 'teste');
if (isset($flux['args']['args'][2])) {
$redirect = urldecode($flux['args']['args'][2]);
$flux['data']['redirect'] = $redirect;
}
return $flux;
}