source: spip-zone/_plugins_/acs/inc/acs_onload_ecrire.php @ 45452

Last change on this file since 45452 was 45452, checked in by webmaster@…, 10 years ago

Passage en version 0.8.0

Nouveau parametre de composant preview_type + divers. Cf. log.

File size: 3.2 KB
Line 
1<?php
2#              ACS
3#          (Plugin Spip)
4#     http://acs.geomaticien.org
5#
6# Copyright Daniel FAIVRE, 2007-2011
7# Copyleft: licence GPL - Cf. LICENCES.txt
8
9/**
10 * acs_onload_ecrire est appellé au chargement de l'espace ecrire.
11 * les fonctions définies ici sont disponibles dans tout l'espace ecrire
12 */
13
14// Contrôle l'accès aux pages de configuration, dont celles déclarées dans $GLOBALS['ACS_ACCES'] (acs_options)
15// et celles déclarées dans $GLOBALS['meta']['ACS_CADENASSE'] (inc/acs_adm)
16if (_request('exec'))
17  acs_acces(_request('exec'));
18
19  /**
20   * Contrôle l'accès à la page $page
21   * Les pages à contrôler sont déclarées dans $GLOBALS['ACS_ACCES'] (acs_options)
22   * et dans $GLOBALS['meta']['ACS_CADENASSE'] (inc/acs_adm)
23   *
24   * @param string $page
25   */
26function acs_acces($page) {
27  // les fichiers exec de configuration de spip sont administrés par les mêmes admins qu'ACS
28  $enfer = array('acs',
29        'acs_editer_admins',
30        'acs_selectionner_admin',
31        'acs_rechercher_admin',
32    'acs_page_get_infos',
33        'acs_page_source',
34    'composant_get_infos',
35    'composant_get_trad',
36    'configuration',
37    'config_lang',
38    'admin_tech',
39    'admin_vider',
40    'admin_plugin');
41 
42  // Les pages administrés par les mêmes admins qu'ACS
43  if (isset($GLOBALS['ACS_ACCES']) && is_array($GLOBALS['ACS_ACCES']) && count($GLOBALS['ACS_ACCES']))
44    $enfer = array_merge($GLOBALS['ACS_ACCES'], $enfer);
45  $GLOBALS['ACS_ENFER'] = $enfer; // On garde cette définition pour affichage
46
47  if (isset($GLOBALS['meta']['ACS_ADMINS'])) { // Pas d'action avant initialisation d'ACS !
48    // Les pages à accès contrôlé par ACS, avec choix des admins
49    if (isset($GLOBALS['meta']['ACS_CADENASSE']) && $GLOBALS['meta']['ACS_CADENASSE']) {
50      $acsCadenasse = unserialize($GLOBALS['meta']['ACS_CADENASSE']);
51      if (is_array($acsCadenasse) && isset($acsCadenasse[$page])) {
52        if (!in_array($GLOBALS['auteur_session']['id_auteur'], array_keys($acsCadenasse[$page])))
53          acs_exit();
54      }
55    }
56    if (in_array($page, $enfer) && (!acs_autorise()))
57      acs_exit();
58  }
59}
60
61// (ressemble vaguement à exec_configuration_dist() de spip 1.9.2 - http://doc.spip.org/@exec_configuration_dist)
62function acs_exit() {
63  global $spip_version_code;
64
65  if (!isset($GLOBALS['auteur_session']['statut'])) {
66    include_spip('inc/headers');
67    redirige_par_entete(generer_url_public('login'));
68  }
69
70  include_spip('inc/acs_presentation');
71  include_spip('inc/config');
72
73  $GLOBALS['couleur_foncee'] = '#ffaf00';
74  $GLOBALS['couleur_claire'] = '#ff0000';
75  if($spip_version_code >= 1.93)
76    echo '<html><body>'; // commencer_page_dist() buggé avec version 1.9.3svn du 11/04/2008
77  else
78    echo acs_commencer_page(_T('avis_non_acces_page'), "administration", "interdit");
79
80  echo '<br /><div style="width: 50%">';
81  echo '<h2 class="alert">'._T('avis_non_acces_page').'</h2>';
82  if (in_array(_request('exec'), $GLOBALS['ACS_ENFER']))
83    echo avertissement_config();
84  echo '</div>';
85  echo fin_gauche(), fin_page();
86  exit;
87}
88
89
90
91// Lit un tableau sérialisé dans une variable meta
92// Read serialized array in meta variable
93function meta2array($meta) {
94  $r = unserialize($GLOBALS['meta'][$meta]);
95  if (is_array($r))
96    return $r;
97  return $GLOBALS['meta'][$meta];
98}
99
100?>
Note: See TracBrowser for help on using the repository browser.