$id_rubrique, 'id_secteur' => $id_secteur, 'statut' => 'prop', 'date' => date('Y-m-d H:i:s') ); if ($set) { $champs = array_merge($champs, $set); } // Envoyer aux plugins $champs = pipeline('pre_insertion', array( 'args' => array( 'table' => 'spip_syndic', ), 'data' => $champs ) ); $id_syndic = sql_insertq("spip_syndic", $champs); pipeline('post_insertion', array( 'args' => array( 'table' => 'spip_syndic', 'id_objet' => $id_syndic ), 'data' => $champs ) ); return $id_syndic; } /** * Modifier un site * * Appelle toutes les fonctions de modification d'un site * * @uses objet_modifier_champs() * @uses objet_instituer() * * @param int $id_syndic * Identifiant du site à modifier * @param array|null $set * Couples (colonne => valeur) de données à modifier. * En leur absence, on cherche les données dans les champs éditables * qui ont été postés (via collecter_requests()) * @return string * - Chaîne vide si aucune erreur, * - Chaîne contenant un texte d'erreur sinon. */ function site_modifier($id_syndic, $set = null) { $resyndiquer = false; include_spip('inc/rubriques'); include_spip('inc/modifier'); include_spip('inc/filtres'); $c = collecter_requests( // white list objet_info('site', 'champs_editables'), // black list array('statut', 'id_parent', 'date'), // donnees eventuellement fournies $set ); // resyndiquer si un element de syndication modifie if ($t = sql_fetsel('url_syndic,syndication,resume', 'spip_syndic', "id_syndic=" . intval($id_syndic))) { foreach ($t as $k => $v) { if (isset($c[$k]) and $v != $c[$k]) { $resyndiquer = true; } } } // Si le site est publie, invalider les caches et demander sa reindexation $t = sql_getfetsel("statut", "spip_syndic", "id_syndic=" . intval($id_syndic)); $invalideur = $indexation = false; if ($t == 'publie') { $invalideur = "id='site/$id_syndic'"; $indexation = true; } if ($err = objet_modifier_champs('site', $id_syndic, array( 'data' => $set, 'nonvide' => array('nom_site' => _T('info_sans_titre')), 'invalideur' => $invalideur, 'indexation' => $indexation ), $c) ) { return $err; } if ($resyndiquer and sql_getfetsel('syndication', 'spip_syndic', "id_syndic=" . intval($id_syndic)) !== 'non') { $syndiquer_site = charger_fonction('syndiquer_site', 'action'); $syndiquer_site($id_syndic); } // Modification de statut, changement de rubrique ? $c = collecter_requests(array('date', 'statut', 'id_parent'), array(), $set); include_spip('action/editer_objet'); $err = objet_instituer('site', $id_syndic, $c); return $err; }