[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / inc / urls.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
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 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15
16 function urls_liste_objets(){
17 $url_objets = pipeline('declarer_url_objets',array('article','breve','rubrique','mot','auteur','site','syndic'));
18 $url_objets = implode('|',array_map('preg_quote',$url_objets));
19 return $url_objets;
20 }
21
22 function nettoyer_url_page($url, $contexte=array())
23 {
24 $url_objets = urls_liste_objets();
25 $raccourci_url_page_html = ',^(?:[^?]*/)?('. $url_objets . ')([0-9]+)(?:\.html)?([?&].*)?$,';
26 $raccourci_url_page_id = ',^(?:[^?]*/)?('. $url_objets .')\.php3?[?]id_\1=([0-9]+)([?&].*)?$,';
27 $raccourci_url_page_spip = ',^(?:[^?]*/)?(?:spip[.]php)?[?]('. $url_objets .')([0-9]+)(&.*)?$,';
28
29 if (preg_match($raccourci_url_page_html, $url, $regs)
30 OR preg_match($raccourci_url_page_id, $url, $regs)
31 OR preg_match($raccourci_url_page_spip, $url, $regs)) {
32 $type = preg_replace(',s$,', '', table_objet($regs[1]));
33 if ($type == 'syndic') $type = 'site';
34 $_id = id_table_objet($regs[1]);
35 $contexte[$_id] = $regs[2];
36 $suite = $regs[3];
37 return array($contexte, $type, null, $type, $suite);
38 }
39 return array();
40 }
41
42 // fonction produisant les URL d'acces en lecture ou en ecriture
43 // des items des tables SQL principales, selon le statut de publication
44
45 // http://doc.spip.org/@generer_url_ecrire_article
46 function generer_url_ecrire_article($id, $args='', $ancre='', $statut='', $connect='') {
47 $a = "id_article=" . intval($id);
48 if (!$statut) {
49 $statut = sql_getfetsel('statut', 'spip_articles', $a,'','','','',$connect);
50 }
51 $h = ($statut == 'publie' OR $connect)
52 ? generer_url_entite_absolue($id, 'article', $args, $ancre, $connect)
53 : (generer_url_ecrire('articles', $a . ($args ? "&$args" : ''))
54 . ($ancre ? "#$ancre" : ''));
55 return $h;
56 }
57
58 // http://doc.spip.org/@generer_url_ecrire_rubrique
59 function generer_url_ecrire_rubrique($id, $args='', $ancre='', $statut='', $connect='') {
60 $a = "id_rubrique=" . intval($id);
61 if (!$statut) {
62 $statut = sql_getfetsel('statut', 'spip_rubriques', $a,'','','','',$connect);
63 }
64 $h = ($statut == 'publie' OR $connect)
65 ? generer_url_entite_absolue($id, 'rubrique', $args, $ancre, $connect)
66 : (generer_url_ecrire('naviguer',$a . ($args ? "&$args" : ''))
67 . ($ancre ? "#$ancre" : ''));
68 return $h;
69 }
70
71 // http://doc.spip.org/@generer_url_ecrire_breve
72 function generer_url_ecrire_breve($id, $args='', $ancre='', $statut='', $connect='') {
73 $a = "id_breve=" . intval($id);
74 if (!$statut) {
75 $statut = sql_getfetsel('statut', 'spip_breves', $a,'','','','',$connect);
76 }
77 $h = ($statut == 'publie' OR $connect)
78 ? generer_url_entite_absolue($id, 'breve', $args, $ancre, $connect)
79 : (generer_url_ecrire('breves_voir',$a . ($args ? "&$args" : ''))
80 . ($ancre ? "#$ancre" : ''));
81 return $h;
82 }
83
84 // http://doc.spip.org/@generer_url_ecrire_mot
85 function generer_url_ecrire_mot($id, $args='', $ancre='', $statut='', $connect='') {
86 $a = "id_mot=" . intval($id);
87 $h = (!$statut OR $connect)
88 ? generer_url_entite_absolue($id, 'mot', $args, $ancre, $connect)
89 : (generer_url_ecrire('mots_edit',$a . ($args ? "&$args" : ''))
90 . ($ancre ? "#$ancre" : ''));
91 return $h;
92 }
93
94 // http://doc.spip.org/@generer_url_ecrire_site
95 function generer_url_ecrire_site($id, $args='', $ancre='', $statut='', $connect='') {
96 $a = "id_syndic=" . intval($id);
97 $h = (!$statut OR $connect)
98 ? generer_url_entite_absolue($id, 'site', $args, $ancre, $connect)
99 : (generer_url_ecrire('sites',$a . ($args ? "&$args" : ''))
100 . ($ancre ? "#$ancre" : ''));
101 return $h;
102 }
103
104 // http://doc.spip.org/@generer_url_ecrire_auteur
105 function generer_url_ecrire_auteur($id, $args='', $ancre='', $statut='', $connect='') {
106 $a = "id_auteur=" . intval($id);
107 $h = (!$statut OR $connect)
108 ? generer_url_entite_absolue($id, 'auteur', $args, $ancre, $connect)
109 : (generer_url_ecrire('auteur_infos',$a . ($args ? "&$args" : ''))
110 . ($ancre ? "#$ancre" : ''));
111 return $h;
112 }
113
114 // http://doc.spip.org/@generer_url_ecrire_forum
115 function generer_url_ecrire_forum($id, $args='', $ancre='', $statut='', $connect='') {
116 $a = "id_forum=" . intval($id);
117 if (!$statut) {
118 $statut = sql_getfetsel('statut', 'spip_forum', $a,'','','','',$connect);
119 }
120 $h = ($statut == 'publie' OR $connect)
121 ? generer_url_entite_absolue($id, 'forum', $args, $ancre, $connect)
122 : (generer_url_ecrire('controle_forum', "debut_id_forum=$id" . ($args ? "&$args" : ''))
123 . ($ancre ? "#$ancre" : ''));
124 return $h;
125 }
126
127 // http://doc.spip.org/@generer_url_ecrire_document
128 function generer_url_ecrire_document($id, $args='', $ancre='', $statut='', $connect='') {
129 include_spip('inc/documents');
130 return generer_url_document_dist($id);
131 }
132
133 // http://doc.spip.org/@generer_url_ecrire_statistiques
134 function generer_url_ecrire_statistiques($id_article) {
135 return generer_url_ecrire('statistiques_visites', "id_article=$id_article");
136 }
137
138 ?>