source: spip-zone/_core_/branches/spip-3.2/plugins/sites/action/editer_site.php @ 109751

Last change on this file since 109751 was 109751, checked in by spip.franck@…, 2 years ago

Bonne année aussi aux plugins-dist :-D

File size: 6.8 KB
RevLine 
[41105]1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
[109751]6 *  Copyright (c) 2001-2018                                                *
[41105]7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
[70318]13/**
14 * Gestion de l'action editer__site et de l'API d'édition d'un site
[93624]15 *
[70318]16 * @package SPIP\Sites\Edition
17 */
[41105]18
[93624]19if (!defined("_ECRIRE_INC_VERSION")) {
20        return;
21}
[70318]22
[93624]23
[70318]24/**
25 * Action d'édition d'un site dans la base de données dont
26 * l'identifiant est donné en paramètre de cette fonction ou
27 * en argument de l'action sécurisée
28 *
29 * Si aucun identifiant n'est donné, on crée alors un nouvel article,
30 * à condition que la rubrique parente (id_rubrique) puisse être obtenue
31 * (avec _request(id_parent))
[93624]32 *
[70318]33 * @uses site_inserer()
34 * @uses site_modifier()
[93624]35 *
[70318]36 * @param null|int $arg
37 *     Identifiant du site. En absence utilise l'argument
38 *     de l'action sécurisée.
39 * @return array
40 *     Liste (identifiant du site, Texte d'erreur éventuel)
41 */
[93092]42function action_editer_site_dist($arg = null) {
[41105]43
[93624]44        if (is_null($arg)) {
[41105]45                $securiser_action = charger_fonction('securiser_action', 'inc');
46                $arg = $securiser_action();
47        }
48
[93624]49        if (!$id_syndic = intval($arg)) {
[46791]50                $id_syndic = site_inserer(_request('id_parent'));
[44462]51                if ($logo = _request('logo')
[93653]52                        and $format_logo = _request('format_logo')
[93624]53                ) {
[46616]54                        include_spip('inc/distant');
55                        $logo = _DIR_RACINE . copie_locale($logo);
[93624]56                        @rename($logo, _DIR_IMG . 'siteon' . $id_syndic . '.' . $format_logo);
[44462]57                }
[41105]58        }
59
[93624]60        if (!$id_syndic) {
61                return array(0, '');
62        }
[46610]63
[46791]64        $err = site_modifier($id_syndic);
[46616]65
[93624]66        return array($id_syndic, $err);
[46610]67}
68
[41105]69
[46791]70/**
[70318]71 * Insérer un nouveau site en base
[46791]72 *
[70318]73 * @pipeline_appel pre_insertion
74 * @pipeline_appel post_insertion
[93624]75 *
[70318]76 * @param int $id_rubrique
77 *     Identifiant de rubrique parente
[85600]78 * @param array|null $set
[70318]79 * @return int
80 *     Identifiant du site créé
[46791]81 */
[93092]82function site_inserer($id_rubrique, $set = null) {
[41105]83
84        include_spip('inc/rubriques');
85
86        // Si id_rubrique vaut 0 ou n'est pas definie, creer le site
87        // dans la premiere rubrique racine
88        if (!$id_rubrique = intval($id_rubrique)) {
[93624]89                $id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "id_parent=0", '', '0+titre,titre', "1");
[41105]90        }
91
92        // Le secteur a la creation : c'est le secteur de la rubrique
[93624]93        $id_secteur = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));
[46791]94        // eviter un null si la rubrique n'existe pas (rubrique -1 par exemple)
[93624]95        if (!$id_secteur) {
[46791]96                $id_secteur = 0;
[93624]97        }
[41105]98
99        $champs = array(
100                'id_rubrique' => $id_rubrique,
101                'id_secteur' => $id_secteur,
102                'statut' => 'prop',
[93624]103                'date' => date('Y-m-d H:i:s')
104        );
[85600]105
[93624]106        if ($set) {
[85600]107                $champs = array_merge($champs, $set);
[93624]108        }
[85600]109
[41105]110        // Envoyer aux plugins
111        $champs = pipeline('pre_insertion',
112                array(
113                        'args' => array(
114                                'table' => 'spip_syndic',
115                        ),
116                        'data' => $champs
117                )
118        );
119
120        $id_syndic = sql_insertq("spip_syndic", $champs);
121        pipeline('post_insertion',
122                array(
123                        'args' => array(
124                                'table' => 'spip_syndic',
125                                'id_objet' => $id_syndic
126                        ),
127                        'data' => $champs
128                )
129        );
130
131        return $id_syndic;
132}
133
[46616]134/**
135 * Modifier un site
136 *
[70318]137 * Appelle toutes les fonctions de modification d'un site
[46616]138 *
[70318]139 * @uses objet_modifier_champs()
140 * @uses objet_instituer()
[93624]141 *
[46616]142 * @param int $id_syndic
[70318]143 *     Identifiant du site à modifier
[93545]144 * @param array|null $set
[70318]145 *     Couples (colonne => valeur) de données à modifier.
146 *     En leur absence, on cherche les données dans les champs éditables
147 *     qui ont été postés (via collecter_requests())
[46747]148 * @return string
[70318]149 *     - Chaîne vide si aucune erreur,
150 *     - Chaîne contenant un texte d'erreur sinon.
[46616]151 */
[93545]152function site_modifier($id_syndic, $set = null) {
[46616]153        $resyndiquer = false;
[41105]154
155        include_spip('inc/rubriques');
[45060]156        include_spip('inc/modifier');
157        $c = collecter_requests(
[93624]158        // white list
[45060]159                array(
[93624]160                        'nom_site',
161                        'url_site',
162                        'descriptif',
163                        'url_syndic',
164                        'syndication',
165                        'moderation',
166                        'miroir',
167                        'oubli',
168                        'resume'
[45060]169                ),
170                // black list
171                array('statut', 'id_parent', 'date'),
172                // donnees eventuellement fournies
173                $set
174        );
[41105]175
[46616]176        // resyndiquer si un element de syndication modifie
[93624]177        if ($t = sql_fetsel('url_syndic,syndication,resume', 'spip_syndic', "id_syndic=" . intval($id_syndic))) {
178                foreach ($t as $k => $v) {
[93653]179                        if (isset($c[$k]) and $v != $c[$k]) {
[46616]180                                $resyndiquer = true;
[93624]181                        }
182                }
[46616]183        }
184
[41105]185        // Si le site est publie, invalider les caches et demander sa reindexation
[93624]186        $t = sql_getfetsel("statut", "spip_syndic", "id_syndic=" . intval($id_syndic));
[70318]187        $invalideur = $indexation = false;
[41105]188        if ($t == 'publie') {
[41226]189                $invalideur = "id='site/$id_syndic'";
[41105]190                $indexation = true;
191        }
192
[53576]193        if ($err = objet_modifier_champs('site', $id_syndic,
[41105]194                array(
[93545]195                        'data' => $set,
[41105]196                        'nonvide' => array('nom_site' => _T('info_sans_titre')),
197                        'invalideur' => $invalideur,
198                        'indexation' => $indexation
199                ),
[93624]200                $c)
201        ) {
[53576]202                return $err;
[93624]203        }
[41105]204
205
[93653]206        if ($resyndiquer and sql_getfetsel('syndication', 'spip_syndic', "id_syndic=" . intval($id_syndic)) !== 'non') {
[93624]207                $syndiquer_site = charger_fonction('syndiquer_site', 'action');
[46616]208                $syndiquer_site($id_syndic);
[45060]209        }
[41105]210
211
[46616]212        // Modification de statut, changement de rubrique ?
[93624]213        $c = collecter_requests(array('date', 'statut', 'id_parent'), array(), $set);
[50662]214        include_spip('action/editer_objet');
[93624]215        $err = objet_instituer('site', $id_syndic, $c);
[41105]216
[46616]217        return $err;
218}
[41105]219
220
[70318]221// Fonctions Dépréciées
222// --------------------
223
224/**
225 * Insérer un site
226 *
227 * @deprecated Utiliser site_inserer()
228 * @uses site_inserer()
229 *
230 * @param int $id_rubrique
231 * @return int
[93624]232 **/
[46791]233function insert_syndic($id_rubrique) {
234        return site_inserer($id_rubrique);
235}
[70318]236
237/**
238 * Modifier un site
239 *
240 * @deprecated Utiliser site_modifier()
241 * @uses site_modifier()
242 *
243 * @param int $id_syndic
244 * @param array|bool $set
245 * @return string
[93624]246 **/
[93092]247function syndic_set($id_syndic, $set = false) {
[93624]248        return site_modifier($id_syndic, $set);
[46791]249}
[70318]250
251/**
252 * Créer une révision d'un site
253 *
254 * @deprecated Utiliser site_modifier()
255 * @uses site_modifier()
256 *
257 * @param int $id_syndic
258 * @param array|bool $set
259 * @return string
[93624]260 **/
261function revisions_sites($id_syndic, $set = false) {
262        return site_modifier($id_syndic, $set);
[46791]263}
[70318]264
265/**
266 * Instituer un site
267 *
268 * @deprecated Utiliser objet_instituer()
269 * @uses objet_instituer()
270 *
271 * @param int $id_syndic
272 * @param array $c
273 * @param bool $calcul_rub
274 * @return string
[93624]275 **/
276function instituer_syndic($id_syndic, $c, $calcul_rub = true) {
[50662]277        include_spip('action/editer_objet');
[93624]278
279        return objet_instituer('site', $id_syndic, $c, $calcul_rub);
[46791]280}
Note: See TracBrowser for help on using the repository browser.