[SPIP] v3.2.1-->v3.2.2
[lhc/web/www.git] / www / ecrire / inc / completer_traduction.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
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
13 /**
14 * Post-traitement des formulaires d'édition d'objets, lors d'une création d’une nouvelle traduction
15 *
16 * @package SPIP\Core\Objets
17 **/
18
19 if (!defined('_ECRIRE_INC_VERSION')) {
20 return;
21 }
22
23 /**
24 * Compléter une nouvelle traduction avec des éléments utiles.
25 *
26 * @param string $objet Objet
27 * @param int $id_objet Identifiant du nouvel objet
28 * @param int $id_trad Identifiant de l’objet qu'on a traduit
29 * @return string Erreur éventuelle
30 */
31 function inc_completer_traduction_dist($objet, $id_objet, $id_trad) {
32 // dupliquer tous les liens sauf les auteurs : le nouvel auteur est celui qui traduit
33 // cf API editer_liens
34 include_spip('action/editer_liens');
35 objet_dupliquer_liens($objet, $id_trad, $id_objet, null, array('auteur'));
36 $_id_table = id_table_objet($objet);
37
38 // recuperer le logo
39 $chercher_logo = charger_fonction('chercher_logo','inc');
40 include_spip('action/editer_logo');
41 foreach (array('on', 'off') as $etat) {
42 $logo = $chercher_logo($id_trad, $_id_table, $etat);
43 if ($logo AND $file = reset($logo)) {
44 logo_modifier($objet, $id_objet, $etat, $file);
45 }
46 }
47
48 // dupliquer certains champs
49 $trouver_table = charger_fonction('trouver_table','base');
50 $desc = $trouver_table(table_objet_sql($objet));
51 $champs = $set = array();
52
53 // un éventuel champ 'virtuel' (redirections)
54 if (!empty($desc['field']['virtuel'])) {
55 $champs[] = 'virtuel';
56 }
57
58 if ($champs) {
59 $set = sql_fetsel($champs, $desc['table'], $_id_table . '=' . intval($id_trad));
60 }
61
62 /*
63 * Le pipeline 'pre_edition' sera appelé avec l'action 'completer_traduction'.
64 * Des plugins pourront ainsi compléter les champs d'un objet traduit lors d'une nouvelle traduction.
65 */
66 $err = objet_modifier_champs(
67 $objet,
68 $id_objet,
69 array(
70 'data' => $set,
71 'action' => 'completer_traduction',
72 ),
73 $set
74 );
75
76 return $err;
77 }