1 | <?php |
---|
2 | |
---|
3 | if (!defined('_ECRIRE_INC_VERSION')) |
---|
4 | return; |
---|
5 | |
---|
6 | /*Fournit un tableau avec id_objet=>donnees_objet*/ |
---|
7 | |
---|
8 | function tableau_recherche_objet($objet, $exclus, $lang = '') { |
---|
9 | include_spip('inc/pipelines_ecrire'); |
---|
10 | //Les tables non conforme, faudrait inclure une pipeline |
---|
11 | $exceptions = charger_fonction('exceptions', 'inc'); |
---|
12 | $exception_objet = $exceptions();; |
---|
13 | |
---|
14 | $champ_date = ''; |
---|
15 | if (!$champ_titre = $exception_objet['titre'][$objet]) { |
---|
16 | $champ_titre = 'titre'; |
---|
17 | } |
---|
18 | |
---|
19 | |
---|
20 | $ancien_objet = $objet; |
---|
21 | $e = trouver_objet_exec($objet); |
---|
22 | $objet = $e['type']; |
---|
23 | $id_table_objet = $e['id_table_objet']; |
---|
24 | if (!$objet) { |
---|
25 | $objet = $ancien_objet; |
---|
26 | $id_table_objet = 'id_' . $objet; |
---|
27 | } |
---|
28 | $table = table_objet_sql($objet); |
---|
29 | |
---|
30 | $tables = lister_tables_objets_sql(); |
---|
31 | |
---|
32 | $traduction_nom_objet = _T($tables[$table]['texte_objet']); |
---|
33 | |
---|
34 | $where = array($champ_titre . ' LIKE ' . sql_quote('%' . _request('term') . '%')); |
---|
35 | if ($objet == 'document') { |
---|
36 | $where = array($champ_titre . ' LIKE ' . sql_quote('%' . _request('term') . '%') . ' OR fichier LIKE' . sql_quote('%' . _request('term') . '%')); |
---|
37 | $champ_titre = 'titre,fichier'; |
---|
38 | } |
---|
39 | |
---|
40 | if (isset($tables[$table]['statut'][0]['publie'])) |
---|
41 | $statut = $tables[$table]['statut'][0]['publie']; |
---|
42 | $exceptions_statut = array( |
---|
43 | 'rubrique', |
---|
44 | 'document' |
---|
45 | ); |
---|
46 | if ($statut AND !in_array($objet, $exceptions_statut)) |
---|
47 | $where[] = 'statut=' . sql_quote($statut); |
---|
48 | if ($objet == 'auteur') |
---|
49 | $where[] = 'statut !=' . sql_quote('5poubelle'); |
---|
50 | if (isset($tables[$table]['field']['lang']) AND $lang) |
---|
51 | $where[] = 'lang IN ("' . implode('","', $lang) . '")'; |
---|
52 | |
---|
53 | if ($objet == 'evenement') { |
---|
54 | $champ_date = 'date_debut,date_fin,horaire,'; |
---|
55 | } |
---|
56 | $d = info_objet($objet, '', $champ_date . $champ_titre . ',' . $id_table_objet, $where); |
---|
57 | |
---|
58 | $data = array(); |
---|
59 | if (is_array($d)) { |
---|
60 | foreach ($d as $r) { |
---|
61 | $date = ''; |
---|
62 | if ($objet == 'evenement') { |
---|
63 | $date = '(' . agenda_affdate_debut_fin($r['date_debut'], $r['date_fin'], $r['horaire']) . ')'; |
---|
64 | } |
---|
65 | if (!$r['titre']) { |
---|
66 | $r['titre'] = titre_objet_sel($objet, $r); |
---|
67 | } |
---|
68 | if (!isset($exclus[$r[$id_table_objet] . '-' . $objet])) { |
---|
69 | $data[] = array( |
---|
70 | 'label' => $r[titre] . ' (' . $traduction_nom_objet . ')' . $date, |
---|
71 | 'value' => $r[$id_table_objet] . '-' . $objet |
---|
72 | ); |
---|
73 | } |
---|
74 | |
---|
75 | } |
---|
76 | } |
---|
77 | return $data; |
---|
78 | } |
---|
79 | |
---|