Valider 91e0a57c rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Report de r20021 : retour sur r20020 : il faut tout de meme verifier...

Report de r20021 : retour sur r20020 : il faut tout de meme verifier l'existence d'un champ statut avant de prendre en compte un statut passe en modification. C'était le sens du code initial mais implementation etait erronée.

+ ajout d'un argument  dans objet_inserer qui permet d'initialiser certains champs a la creation (exemple d'une cle unique : on ne veut pas passer par une valeur vide car en cas d'insertions concourantes on risque l'echec, ce qui n'est pas le cas si on fournit directement la valeur lors de l'insertion).
parent b7c81d49
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+29 −23
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -129,13 +129,14 @@ function objet_modifier($objet, $id, $set=null) {
 * Insere en base un objet generique
 * 
 * @param string $objet
 * @param id $id_parent
 * @param int $id_parent
 * @param array|null $set
 * @global array $GLOBALS['visiteur_session']
 * @global array $GLOBALS['meta']
 * @global string $GLOBALS['spip_lang']
 * @return bool|int
 */
function objet_inserer($objet, $id_parent=null) {
function objet_inserer($objet, $id_parent=null, $set=null) {
	if (include_spip('action/editer_'.$objet)
	  AND function_exists($inserer = $objet."_inserer"))
		return $inserer($id_parent);
@@ -188,6 +189,9 @@ function objet_inserer($objet, $id_parent=null) {
	if ((isset($desc['date']) AND $d=$desc['date']) OR isset($desc['field'][$d='date']))
		$champs[$d] = date('Y-m-d H:i:s');

	if ($set)
		$champs = array_merge($champs, $set);

	// Envoyer aux plugins
	$champs = pipeline('pre_insertion',
		array(
@@ -200,6 +204,7 @@ function objet_inserer($objet, $id_parent=null) {

	$id = sql_insertq($table_sql, $champs);

	if ($id){
		pipeline('post_insertion',
			array(
				'args' => array(
@@ -222,6 +227,7 @@ function objet_inserer($objet, $id_parent=null) {
				auteur_associer($id_auteur, array($objet=>$id));
		  }
		}
	}

	return $id;
}
@@ -274,7 +280,7 @@ function objet_instituer($objet, $id, $c, $calcul_rub=true) {
	$champs = array();

	$d = ($date AND isset($c[$champ_date]))?$c[$champ_date]:null;
	$s = (isset($c['statut']))?$c['statut']:$statut;
	$s = (isset($desc['field']['statut']) AND isset($c['statut']))?$c['statut']:$statut;

	// cf autorisations dans inc/instituer_objet
	if ($s != $statut OR ($d AND $d != $date)) {