function articles_set($id_article, $set=null) { $err = ''; // unifier $texte en cas de texte trop long trop_longs_articles(); $c = array(); foreach (array( 'surtitre', 'titre', 'soustitre', 'descriptif', 'nom_site', 'url_site', 'chapo', 'texte', 'ps' ) as $champ) $c[$champ] = _request($champ,$set); if (_request('changer_virtuel',$set) == 'oui') { $r = _request('virtuel',$set); $c['chapo'] = (strlen($r) ? '='.$r : ''); } include_spip('inc/modifier'); revision_article($id_article, $c); // Modification de statut, changement de rubrique ? $c = array(); foreach (array( 'date', 'statut', 'id_parent' ) as $champ) $c[$champ] = _request($champ,$set); $err .= instituer_article($id_article, $c); // Un lien de trad a prendre en compte $err .= article_referent($id_article, array('lier_trad' => _request('lier_trad',$set))); return $err; }
/** * Modifier un article * * Appelle toutes les fonctions de modification d'un article * * @param int $id_article * Identifiant de l'article à 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 _request()) * @return string|null * Chaîne vide si aucune erreur, * Null si aucun champ à modifier, * Chaîne contenant un texte d'erreur sinon. */ function article_modifier($id_article, $set = null) { // unifier $texte en cas de texte trop long trop_longs_articles(); include_spip('inc/modifier'); include_spip('inc/filtres'); $c = collecter_requests(objet_info('article', 'champs_editables'), array('date', 'statut', 'id_parent'), $set); // Si l'article est publie, invalider les caches et demander sa reindexation $t = sql_getfetsel("statut", "spip_articles", "id_article=" . intval($id_article)); $invalideur = $indexation = false; if ($t == 'publie') { $invalideur = "id='article/{$id_article}'"; $indexation = true; } if ($err = objet_modifier_champs('article', $id_article, array('nonvide' => array('titre' => _T('info_nouvel_article') . " " . _T('info_numero_abbreviation') . $id_article), 'invalideur' => $invalideur, 'indexation' => $indexation, 'date_modif' => 'date_modif'), $c)) { return $err; } // Modification de statut, changement de rubrique ? $c = collecter_requests(array('date', 'statut', 'id_parent'), array(), $set); $err = article_instituer($id_article, $c); return $err; }