source: spip-zone/_plugins_/liens_contenus/trunk/lienscontenus_fonctions.php @ 115982

Last change on this file since 115982 was 115982, checked in by nicod@…, 6 months ago

Corriger l'appel (et éviter un warning sur sql_count)

File size: 3.7 KB
Line 
1<?php
2// Les filtres pour les squeletes
3function lienscontenus_generer_url($type_objet, $id_objet)
4{
5  // TODO : Ajouter les autres
6        $liste_urls = array(
7    'rubrique' => array('rubrique', 'id_rubrique'),
8    'article' => array('article', 'id_article'),
9    'breve' => array('breves_voir', 'id_breve'),
10    'syndic' => array('sites', 'id_syndic'),
11    'mot' => array('mots_edit', 'id_mot'),
12    'auteur' => array('auteur_infos', 'id_auteur'),
13    'form' => array('forms_edit', 'id_form')
14        );
15        if (isset($liste_urls[$type_objet])) {
16                return $GLOBALS['meta']['adresse_site'].'/ecrire/?exec='.$liste_urls[$type_objet][0].'&amp;'.$liste_urls[$type_objet][1].'='.$id_objet;
17        } else {
18                $f = 'lienscontenus_generer_url_'.$type_objet;
19                if (function_exists($f)) {
20                        return $f($id_objet);
21                } else {
22                        // On ne devrait pas se retrouver la
23                        spip_log('Plugin liens_contenus : il manque une fonction de generation d\'url pour le type '.$type_objet, 'liens_contenus');
24                        return '#';
25                }
26        }
27}
28
29function lienscontenus_generer_url_document($id_objet)
30{
31        include_spip('base/abstract_sql');
32        $res = sql_select("id_objet, objet", "spip_documents_liens", "id_document="._q($id_objet));
33        if (sql_count($res) == 1) {
34                $row = sql_fetch($res);
35                return lienscontenus_generer_url($row['objet'], intval($row['id_objet']));
36        }
37}
38
39function lienscontenus_generer_url_modele($id_objet)
40{
41        return find_in_path('modeles/'.$id_objet.'.html');
42}
43
44function lienscontenus_generer_url_modele_non_reconnu($id_objet)
45{
46        return '#';
47}
48
49function lienscontenus_presentation_lien($type_objet, $id_objet)
50{
51  include_spip('base/abstract_sql');
52 
53  $listeStatuts = array('prepa', 'prop', 'publie', 'refuse', 'poubelle');
54  $infos = array('type_objet' => $type_objet, 'id_objet' => $id_objet);
55  $existe = false;
56
57  if ($type_objet == 'modele') {
58    if (find_in_path('modeles/'.$id_objet.'.html')) {
59      $existe = true;
60      $infos['statut'] = 'publie';
61    }
62  } else {
63    $requetes = array(
64      'syndic' => array('champs' => 'nom_site AS titre, statut', 'table' => 'spip_syndic', 'id' => 'id_syndic'),
65      'forum' => array('champs' => 'titre, statut', 'table' => 'spip_forum', 'id' => 'id_forum'),
66      'mot' => array('champs' => 'titre', 'table' => 'spip_mots', 'id' => 'id_mot'),
67      'auteur' => array('champs' => 'nom AS titre', 'table' => 'spip_auteurs', 'id' => 'id_auteur'),
68      'article' => array('champs' => 'titre, statut', 'table' => 'spip_articles', 'id' => 'id_article'),
69      'rubrique' => array('champs' => 'titre, statut', 'table' => 'spip_rubriques', 'id' => 'id_rubrique'),
70      'document' => array('champs' => 'titre, statut', 'table' => 'spip_documents', 'id' => 'id_document'),
71      'breve' => array('champs' => 'titre, statut', 'table' => 'spip_breves', 'id' => 'id_breve')
72      );
73     
74    if (!isset($requetes[$type_objet])) {
75      spip_log('Affichage du type '.$type_objet.' non géré', 'lienscontenus');
76      return 'non gere : '.$type_objet;
77    }
78 
79    if ($row = sql_fetsel($requetes[$type_objet]['champs'], $requetes[$type_objet]['table'], $requetes[$type_objet]['id'].'='._q($id_objet))) {
80      $existe = true;
81      $infos = array_merge($infos, $row);
82      if (!isset($infos['statut'])) {
83        $infos['statut'] = 'publie';
84      }
85      switch ($type_objet) {
86        case 'auteur':
87          if ($infos['statut'] == '5poubelle') {
88            $infos['statut'] == 'poubelle';
89          } else {
90            $infos['statut'] == 'publie';
91          }
92          break;
93      }
94    }
95  }
96
97  if ($existe) {
98    return '<a href="'.lienscontenus_generer_url($type_objet, $id_objet).'" class="ok '.$infos['statut'].'">'._T('lienscontenus:type_'.$type_objet, $infos).'</a>';
99  } else {
100    return '<span class="ko">'._T('lienscontenus:type_'.$type_objet.'_inexistant', $infos).'</span>';
101  }
102     
103}
104
Note: See TracBrowser for help on using the repository browser.