source: spip-zone/_plugins_/acs/inc/acs_onload.php @ 46538

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

ACS version 0.8.1

  • chargement des balises, scripts, et styles publics dans l'espace privé pour permettre aux modèles SPIP d'utiliser des composants d'un modèle ACS dans l'espace privé;
  • les controles sont desormais des objets;

Modele Cat pour ACS vesion 0.8.1 :

  • nouveaux composants Carte, Diapo, et Keynav
  • integration automatique du lecteur audio dans les bulles d'info du composant Carte, et adaptation du composant Diapo aux nouveaux formats videos pris en compte (mp4, h264, ..);
  • suppression du modèle doc au profit de celui de la dist;
  • lecteur video HTML5 avec fallback Flash automatique.

Documentation : integration des fichiers pour generer une documenttion Doxygen

File size: 6.8 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 * @file acs_onload.php
11 * appellé depuis acs_options.php dans TOUS les cas
12 * acs_options est le premier fichier du plugin chargé, avant même autoriser.php de la dist
13 */
14
15// Dossier des paramètres et images utilisateur
16// User images and parameters
17// compatible mutualisation (_DIR_SITE defini)
18if (_DIR_SITE != '_DIR_SITE') {
19        $dir_site = _DIR_SITE;
20        $dir_site_absolu = _DIR_RACINE ? substr(_DIR_SITE, 3) : _DIR_SITE;
21}
22else {
23        $dir_site = _DIR_RACINE;
24        $dir_site_absolu = '';
25}
26
27// Racine des dossiers du site :
28define('_ACS_DIR_SITE_ROOT', $dir_site);
29
30// Dossier du cache ACS (par defaut: tmp/cache/acs)
31define('_ACS_TMP_DIR', _ACS_DIR_SITE_ROOT._NOM_TEMPORAIRES_INACCESSIBLES.'cache/acs/');
32
33// Modèle ACS par defaut - Default ACS model
34$GLOBALS['meta']['acsModel'] = isset($GLOBALS['meta']['acsModel']) ? $GLOBALS['meta']['acsModel'] : 'cat';
35
36// Dossier des images du modèle ACS actif - Active ACS model images directory
37$GLOBALS['ACS_CHEMIN'] = $dir_site_absolu._NOM_PERMANENTS_ACCESSIBLES.'_acs/'.$GLOBALS['meta']['acsModel'];
38
39define('_DIR_ACS', _DIR_PLUGINS.acs_get_from_active_plugin('ACS', 'dir').'/'); // Chemin valable espace public aussi, pas comme _DIR_PLUGIN_ACS, qui est à proscrire
40
41// Définition du dossier global des squelettes actifs d'ACS (avec override)
42// Global active ACS skeletons directory definition (with override)
43$dossiers_squelettes_avant_override = explode(':', $GLOBALS['dossier_squelettes']);
44if (isset($GLOBALS['meta']['acsSqueletteOverACS']) && $GLOBALS['meta']['acsSqueletteOverACS']) {
45  $tas = explode(':', $GLOBALS['meta']['acsSqueletteOverACS']);
46  foreach($tas as $dir) {
47    @include(_ACS_DIR_SITE_ROOT.$dir.'/mes_options.php');
48    @include(_ACS_DIR_SITE_ROOT.$dir.'/mes_fonctions.php');
49    if (in_array($dir_site_absolu.$dir, $dossiers_squelettes_avant_override))
50      continue;
51    if (isset($GLOBALS['dossier_squelettes']) && $GLOBALS['dossier_squelettes'])
52      $GLOBALS['dossier_squelettes'] .= ':';
53    $GLOBALS['dossier_squelettes'] .= $dir_site_absolu.$dir;
54  }
55}
56if (isset($GLOBALS['dossier_squelettes']) && $GLOBALS['dossier_squelettes'])
57  $GLOBALS['dossier_squelettes'] .= ':';
58// On ajoute le chemin du modèle cat actif
59$GLOBALS['dossier_squelettes'] .= 'plugins/'.acs_get_from_active_plugin('ACS', 'dir').'/'.'models/'.$GLOBALS['meta']['acsModel'];
60
61// dossier des composants :
62define('_DIR_COMPOSANTS', find_in_path('composants'));
63
64// dispatch public / privé
65if ((_DIR_RESTREINT != '') && ($_POST['action'] != 'poster_forum_prive')) {
66        // Sauts de ligne
67        $GLOBALS['spip_pipeline']['pre_propre'] .= '|post_autobr'; 
68}
69else {
70  require_once _DIR_ACS.'inc/acs_onload_ecrire.php';
71}
72include_spip('balise/acs_balises');
73
74// Retourne une variable d'un plugin actif
75function acs_get_from_active_plugin($plugin, $variable = false) {
76  $meta_plugin = unserialize($GLOBALS['meta']['plugin']);
77  $plugin = $meta_plugin[$plugin];
78
79  if (!$variable)
80    return isset($plugin['dir']);
81
82  if (isset($plugin[$variable]))
83    return $plugin[$variable];
84
85  return false;
86}
87
88// Vérifie que l'utilisateur connecté est un admin ACS autorisé, ou le(s) webmestre(s) si ACS n'est pas encore configuré
89// ou qu'il dispose des droits requis (_acs, _adm, _aut, ou _ide)
90function acs_autorise($requested_statut='_acs') {
91  // Si l'utilisateur n'est pas identifie, pas la peine d'aller plus loin
92  if (!isset($GLOBALS['auteur_session']['statut']))
93    return false;
94 
95  switch($requested_statut) {
96    case '_adm':
97      $rs = Array('0minirezo');
98      break;
99    case '_aut':
100      $rs = Array('0minirezo', '1redacteur');
101      break;
102    case '_ide':
103      $rs = Array('0minirezo', '1redacteur', '6visiteur');
104      break;
105  }
106  // Si un droit plus faible que "_acs" est demandé, on retourne le resultat
107  if (is_array($rs))
108    return in_array($GLOBALS['auteur_session']['statut'], $rs);
109 
110        // Si l'utilisateur n'est pas admin, pas la peine d'aller plus loin
111        if ($GLOBALS['auteur_session']['statut'] != "0minirezo")
112                return false;
113        // Cet admin est-il aussi admin ACS ?
114        $id_admin = $GLOBALS['auteur_session']['id_auteur'];
115  if (isset($GLOBALS['meta']['ACS_ADMINS']) && $GLOBALS['meta']['ACS_ADMINS'] != '')
116    return in_array($id_admin, explode(',', $GLOBALS['meta']['ACS_ADMINS']) );
117  elseif (defined(_ID_WEBMESTRES)) // Si le plugin Autorité est installé, les webmestres sont autorisés à configurer ACS
118    return in_array($id_admin, explode(':', _ID_WEBMESTRES) );
119  else  // A défaut, le créateur ET administrateur du site (auteur n°1) est toujours autorisé à configurer ACS
120    return ($id_admin == 1);
121  return false;
122}
123
124/**
125 * Makes directory, returns TRUE if exists or made
126 *
127 * @param string $pathname The directory path.
128 * @return boolean returns TRUE if exists or made or FALSE on failure.
129 */
130function mkdir_recursive($pathname) {
131    @is_dir(dirname($pathname)) || mkdir_recursive(dirname($pathname));
132    return @is_dir($pathname) || @mkdir($pathname);
133}
134
135/**
136 * Lit une variable meta à la façon de l'API cfg, suivant un chemin,
137 * avec en plus la récursivité ACS (une variable ACS peut référencer une autre variable ACS)
138 * Utilisé par la fonction balise_VAR()
139 * @param src : tableau source
140 * @param meta : nom de la variable meta à lire
141 * @return : valeur de la variable (récursive)
142 */
143function meta_recursive($src, $meta) {
144        $chemin = strtok($meta, '/');
145        $val = $src[$chemin];
146        // Si la valeur commence par "=", c'est une référence récursive à une autre variable ACS
147        if (substr($val, 0 ,1) == '=')
148                $val = meta_recursive($src, substr($val, 1).substr($meta, strlen($chemin)));
149        // On appelle récursivement la fonction tant que $val est un array ou un array serialise
150        if (is_array($val)) {
151                $val = meta_recursive($val, substr($meta, strlen($chemin)+1));
152        }
153        elseif (is_array(unserialize($val))) {
154                $val = meta_recursive(unserialize($val), substr($meta, strlen($chemin)+1));
155        }
156        return $val;
157}
158/**
159 * Journalise les actions du plugin ACS si _ACS_LOG vaut "true" dans acs_options.php
160 * @param : texte à journaliser
161 */
162function acs_log($txt) {
163        if (_ACS_LOG === true)
164                spip_log($txt, 'acs');
165}
166/**
167 * Retourne un objet ou un tableau sous forme de tableau affichable en html
168 * @param r : objet ou tableau
169 * @param html : retourne du html si vrai
170 * @return : objet ou tableau en mode texte ou html lisible
171 */
172function dbg($r, $html=false) {
173   if (is_object($r) or is_array($r)) {
174        ob_start();
175        print_r($r);
176        $r = ob_get_contents();
177        ob_end_clean();
178        if ($html)
179                $r = htmlentities($r);
180        $srch = array('/Array[\n\r]/', '/\s*[\(\)]+/', '/[\n\r]+/', '/ (?= )/s');
181        $repl = array(''             , ''            , "\n"       , ($html ? '&nbsp;' : ' '));
182        $r = preg_replace($srch, $repl, $r);
183        if ($html)
184                $r = nl2br($r);
185    }
186    return $r;
187}
188?>
Note: See TracBrowser for help on using the repository browser.