source: spip-zone/_plugins_/acces_restreint/trunk/inc/accesrestreint_documents.php @ 84553

Last change on this file since 84553 was 84553, checked in by marcimat@…, 7 years ago

Notices PHP en moins sur le formulaire de configuration des .htaccess . On passe par lire_config bien plus lisible du coup.

File size: 2.2 KB
Line 
1<?php
2/**
3 * Plugin Acces Restreint 3.0 pour Spip 2.0
4 * Licence GPL (c) 2006-2008 Cedric Morin
5 *
6 */
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10/**
11 * on essaye de poser un htaccess rewrite global sur IMG/
12 * si fonctionne on gardera des ulrs de document permanente
13 * si ne fonctionne pas on se rabat sur creer_htaccess du core
14 * qui pose un deny sur chaque sous repertoire de IMG/
15 *
16 * http://doc.spip.org/@gerer_htaccess
17 *
18 * @param bool $active
19 * @return bool
20 */
21function accesrestreint_gerer_htaccess($active = true) {
22
23        if (!$active){
24                spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME);
25                effacer_meta("creer_htaccess");
26                // effacer les xx/.htaccess crees eventuellement par le core
27                include_spip("inc/acces");
28                gerer_htaccess();
29                return false;
30        }
31        else  {
32                $rewrite = <<<rewrite
33RewriteEngine On
34RewriteCond %{QUERY_STRING} ^(\d+/[\da-f]+)$
35RewriteRule ^\w+/.*$     ../spip.php?action=api_docrestreint&arg=%1/$0 [skip=100]
36RewriteRule ^\w+/.*$     ../spip.php?action=api_docrestreint&arg=0/0/$0 [skip=100]
37rewrite;
38               
39                // On cherche si le dossier racine a un RewriteBase plus long que "/"
40                if (file_exists(_DIR_RACINE._ACCESS_FILE_NAME)){
41                        $ht = '';
42                        lire_fichier(_DIR_RACINE._ACCESS_FILE_NAME, $ht);
43                        if ($ht and preg_match('|^RewriteBase\s+/.+$|m', $ht, $rewritebase)){
44                                $rewritebase = rtrim(trim($rewritebase[0]), '/').'/'._NOM_PERMANENTS_ACCESSIBLES;
45                                $rewrite = $rewritebase."\n".$rewrite;
46                        }
47                }
48
49                ecrire_fichier(_DIR_IMG . _ACCESS_FILE_NAME,$rewrite);
50                // verifier sur l'url de test
51                include_spip('inc/distant');
52                $url_test = url_absolue(_DIR_IMG . "test/.test?0/1");
53                $test = recuperer_page($url_test);
54
55                // si l'url de test renvoie bien "OK" alors rewrite rule fonctionne et on peut baser la protection de document sur ce shema
56                if ($test == "OK") {
57                        effacer_meta("creer_htaccess"); // securite, et permet de generer des urls permanentes
58                }
59                else {
60                        // sinon on se rabat sur un deny et on generera des urls moches
61                        spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME);
62                        ecrire_meta("creer_htaccess","oui");
63                }
64                // dans tous les cas on passe par gerer_htaccess pour enlever ou mettre les .htaccess dans les sous rep
65                include_spip("inc/acces");
66                gerer_htaccess();
67
68                return true;
69        }
70}
Note: See TracBrowser for help on using the repository browser.