Completed
Push — master ( 11f960...65d759 )
by cam
07:32
created

presentation_mini.php ➔ echo_log()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
nc 1
nop 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
/***************************************************************************\
4
 *  SPIP, Systeme de publication pour l'internet                           *
5
 *                                                                         *
6
 *  Copyright (c) 2001-2017                                                *
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
 * Fonctions d'affichage pour l'espace privé (hors squelettes)
15
 *
16
 * @package SPIP\Core\Affichage
17
 **/
18
if (!defined('_ECRIRE_INC_VERSION')) {
19
	return;
20
}
21
22
/**
23
 * Retourne le code HTML d'un début de cadre pour le centre de page (haut de page)
24
 *
25
 * @return string Code HTML
26
 */
27
function debut_grand_cadre() { return "\n<div class = 'table_page'>\n"; }
28
29
/**
30
 * Retourne le code HTML d'une fin de cadre pour le centre de page (haut de page)
31
 *
32
 * @return string Code HTML
33
 */
34
function fin_grand_cadre() { return "\n</div>"; }
35
36
// Debut de la colonne de gauche
37
// div navigation fermee par creer_colonne_droite qui ouvre
38
// div extra lui-meme ferme par debut_droite qui ouvre
39
// div contenu lui-meme ferme par fin_gauche() ainsi que
40
// div conteneur
41
42
/**
43
 * Retourne le code HTML du début de la colonne gauche
44
 *
45
 * @return string Code HTML
46
 */
47
function debut_gauche() {
48
	return "<div id = 'conteneur' class = ''>\n<div id = 'navigation' class = 'lat' role = 'contentinfo'>\n";
49
}
50
51
/**
52
 * Retourne le code HTML de la fin de la colonne
53
 *
54
 * @return string Code HTML
55
 */
56
function fin_gauche() { return "</div></div><br class = 'nettoyeur' />"; }
57
58
/**
59
 * Retourne le code HTML du changement de colonne (passer de la gauche à la droite)
60
 *
61
 * @return string Code HTML
62
 */
63
function creer_colonne_droite() {
64
	static $deja_colonne_droite;
65
	if ($GLOBALS['spip_ecran'] != 'large' or $deja_colonne_droite) {
66
		return '';
67
	}
68
	$deja_colonne_droite = true;
69
70
	return "\n</div><div id='extra' class='lat' role='complementary'>";
71
}
72
73
/**
74
 * Retourne le code HTML de la colonne droite et du centre de page
75
 *
76
 * @return string Code HTML
77
 */
78
function debut_droite() {
79
	return liste_objets_bloques(_request('exec'))
80
	. creer_colonne_droite()
81
	. "</div>"
82
	. "\n<div id='contenu'>";
83
}
84
85
/**
86
 * Retourne la liste des objets édités récemment (si les drapeaux d'édition sont actifs)
87
 *
88
 * Si notre page est une page d'édition d'un objet, on déclare au passage l'auteur
89
 * comme éditant l'objet
90
 *
91
 * @uses signale_edition()
92
 * @uses liste_drapeau_edition()
93
 *
94
 * @param string $exec
95
 *     Nom de la page exec en cours
96
 * @param array $contexte
97
 *     Contexte de la page
98
 * @param array|null $auteur
99
 *     Session de l'auteur. Sera prise sur l'auteur connecté si non indiquée.
100
 * @return string
101
 *     Code HTML
102
 **/
103
function liste_objets_bloques($exec, $contexte = array(), $auteur = null) {
104
	$res = '';
105
	if ($GLOBALS['meta']["articles_modif"] != "non") {
106
		include_spip('inc/drapeau_edition');
107
		if (is_null($auteur)) {
108
			$auteur = $GLOBALS['visiteur_session'];
109
		}
110
		if ($en_cours = trouver_objet_exec($exec)
111
			and $en_cours['edition']
112
			and $type = $en_cours['type']
113
			and ((isset($contexte[$en_cours['id_table_objet']]) and $id = $contexte[$en_cours['id_table_objet']])
114
				or $id = _request($en_cours['id_table_objet']))
115
		) {
116
			// marquer le fait que l'objet est ouvert en edition par toto
117
			// a telle date ; une alerte sera donnee aux autres redacteurs
118
			signale_edition($id, $auteur, $type);
119
		}
120
121
		$objets_ouverts = liste_drapeau_edition($auteur['id_auteur']);
122
		if (count($objets_ouverts)) {
123
			$res .= recuperer_fond('prive/objets/liste/objets-en-edition', array(), array('ajax' => true));
124
		}
125
	}
126
127
	return $res;
128
}
129
130
131
/**
132
 * Retourne le code HTML de fin de page de l'interface privée.
133
 *
134
 * Elle génère au passage un appel pour déclencher les tâches cron
135
 *
136
 * @see f_queue() Pour l'appel au cron
137
 *
138
 * @return string Code HTML
139
 **/
140
function fin_page() {
141
	include_spip('inc/pipelines');
142
	// avec &var_profile=1 on a le tableau de mesures SQL
143
	$debug = ((_request('exec') !== 'valider_xml')
144
		and ((_request('var_mode') == 'debug')
145
			or (isset($GLOBALS['tableau_des_temps']) and $GLOBALS['tableau_des_temps'])
146
			and isset($_COOKIE['spip_admin'])));
147
	$t = '</div><div id="pied"><div class="largeur">'
148
		. recuperer_fond('prive/squelettes/inclure/pied')
149
		. "</div>"
150
		. "</div></div>" // cf. div#page et div.largeur ouvertes dans conmmencer_page()
151
		. ($debug ? erreur_squelette() : '')
152
		. "</body></html>\n";
153
154
	return f_queue($t);
155
}
156
157
/**
158
 * Retourne des tests javascript à exécuter
159
 *
160
 * - Teste que javascript est actif : si non, un hit sur exec=test_ajax est généré
161
 * - Rejoue la session si demandé (par verifier_session() si l'ip a changé)
162
 *
163
 * @see exec_test_ajax_dist()
164
 * @see verifier_session()
165
 *
166
 * @return string Code HTML
167
 **/
168
function html_tests_js() {
169
	if (_SPIP_AJAX and !defined('_TESTER_NOSCRIPT')) {
170
		// pour le pied de page (deja defini si on est validation XML)
171
		define('_TESTER_NOSCRIPT',
172
			"<noscript>\n<div style='display:none;'><img src='"
173
			. generer_url_ecrire('test_ajax', 'js=-1')
174
			. "' width='1' height='1' alt='' /></div></noscript>\n");
175
	}
176
177
	$rejouer = '';
178
	if (defined('_SESSION_REJOUER')) {
179
		$rejouer = (_SESSION_REJOUER === true) ? rejouer_session() : _SESSION_REJOUER;
180
	}
181
182
	return $rejouer . (defined('_TESTER_NOSCRIPT') ? _TESTER_NOSCRIPT : '');
183
}
184
185
/**
186
 * Retourne la liste des mises à jour de SPIP possibles
187
 *
188
 * @return string Texte présentant la liste des mises à jour existantes
189
 **/
190
function info_maj_spip() {
191
192
	$maj = isset($GLOBALS['meta']['info_maj_spip']) ? $GLOBALS['meta']['info_maj_spip'] : null;
193
	if (!$maj) {
194
		return "";
195
	}
196
197
	$maj = explode('|', $maj);
198
	// c'est une ancienne notif, on a fait la maj depuis !
199
	if ($GLOBALS['spip_version_branche'] !== reset($maj)) {
200
		return "";
201
	}
202
203
	if (!autoriser('webmestre')) {
204
		return "";
205
	}
206
207
	array_shift($maj);
208
	$maj = implode('|', $maj);
209
210
	return "$maj<br />";
211
}
212
213
/**
214
 * Retourne les informations de copyright (version de SPIP, de l'écran de sécurité)
215
 * pour le pied de page de l'espace privé
216
 *
217
 * @return string Code HTML
218
 **/
219
function info_copyright() {
220
221
	$version = $GLOBALS['spip_version_affichee'];
222
223
	//
224
	// Mention, le cas echeant, de la revision SVN courante
225
	//
226
	if ($svn_revision = version_svn_courante(_DIR_RACINE)) {
227
		$version .= ' ' . (($svn_revision < 0) ? 'SVN ' : '')
228
			. "[<a href='http://core.spip.net/projects/spip/repository/revisions/"
229
			. abs($svn_revision) . "' target=\"_blank\" rel=\"noopener noreferrer\">"
230
			. abs($svn_revision) . "</a>]";
231
	}
232
233
	// et la version de l'ecran de securite
234
	$secu = defined('_ECRAN_SECURITE')
235
		? "<br />" . _T('ecran_securite', array('version' => _ECRAN_SECURITE))
236
		: '';
237
238
	return _T('info_copyright',
239
		array(
240
			'spip' => "<b>SPIP $version</b> ",
241
			'lien_gpl' =>
242
				"<a href='" . generer_url_ecrire("aide",
243
					"aide=licence&var_lang=" . $GLOBALS['spip_lang']) . "' class=\"aide popin\">" . _T('info_copyright_gpl') . "</a>"
244
		))
245
	. $secu;
246
247
}
248
249
/**
250
 * Retourne un formulaire de recherche pour l'espace privé
251
 *
252
 * Préférez l'usage en squelettes via la balise `#FORMULAIRE_RECHERCHE_ECRIRE`.
253
 *
254
 * @see formulaires_recherche_ecrire_charger_dist()
255
 *
256
 * @param string $page Nom de la page exec
257
 * @param string $complement Code HTML supplémentaire
258
 * @return string             Code HTML
259
 **/
260
function formulaire_recherche($page, $complement = "") {
261
	$recherche = _request('recherche');
262
	$recherche_aff = entites_html($recherche);
263
	if (!strlen($recherche)) {
264
		$recherche_aff = _T('info_rechercher');
265
		$onfocus = " onfocus=\"this.value='';\"";
266
	} else {
267
		$onfocus = '';
268
	}
269
270
	$form = '<input type="text" size="10" value="' . $recherche_aff . '" name="recherche" class="recherche" accesskey="r"' . $onfocus . ' />';
271
	$form .= "<input type='image' src='" . chemin_image('rechercher-20.png') . "' name='submit' class='submit' alt='" . _T('info_rechercher') . "' />";
272
273
	return "<div class='spip_recherche'>" . generer_form_ecrire($page, $form . $complement, " method='get'") . "</div>";
274
}
275