diff --git a/ecrire/action/editer_liens.php b/ecrire/action/editer_liens.php index 9e1eee771cef5fc39a1f1b744ad46104845eb1e6..4b44ab76c4ed46d8da301593685f8ed35d24fbaf 100644 --- a/ecrire/action/editer_liens.php +++ b/ecrire/action/editer_liens.php @@ -221,8 +221,11 @@ function lien_insert($objet_source,$primary,$table_lien,$id,$objets) { array('id_objet='.intval($id_objet), 'objet='.sql_quote($objet), $primary.'='.intval($id)))) { $e = sql_insertq($table_lien, array('id_objet' => $id_objet, 'objet'=>$objet, $primary=>$id)); - if ($e!==false) + if ($e!==false) { $ins++; + lien_propage_date_modif($objet,$id_objet); + lien_propage_date_modif($objet_source,$id); + } else $echec = true; } @@ -282,9 +285,14 @@ function lien_delete($objet_source,$primary,$table_lien,$id,$objets){ if (!is_array($id_objets)) $id_objets = array($id_objets); foreach($id_objets as $id_objet) { $where = lien_where($primary, $id, $objet, $id_objet); + // lire les liens existants pour propager la date de modif + $liens = sql_allfetsel("$primary,id_objet",$table_lien,$where); $e = sql_delete($table_lien, $where); - if ($e!==false) + if ($e!==false){ $dels+=$e; + lien_propage_date_modif($objet,array_map('end',$liens)); + lien_propage_date_modif($objet_source,array_map('reset',$liens)); + } else $echec = true; $retire[] = array('source'=>array($objet_source=>$id),'lien'=>array($objet=>$id_objet),'type'=>$objet,'id'=>$id_objet); @@ -370,4 +378,21 @@ function lien_find($objet_source,$primary,$table_lien,$id,$objets){ return $trouve; } -?> +/** + * Propager la date_modif sur les objets dont un lien a ete modifie + * + * @param string $objet + * @param array/int $ids + */ +function lien_propage_date_modif($objet,$ids){ + $trouver_table = charger_fonction('trouver_table','base'); + + $table = table_objet_sql($objet); + if ($desc = $trouver_table($table) + AND isset($desc['field']['date_modif'])){ + $primary = id_table_objet($objet); + $where = (is_array($ids)?sql_in($primary, array_map('intval',$ids)):"$primary=".intval($ids)); + sql_updateq($table, array('date_modif'=>date('Y-m-d H:i:s')), $where); + } +} +?> \ No newline at end of file