[PLUGINS] +acces restreint
[ptitvelo/web/www.git] / www / plugins / accesrestreint_3_5 / action / autoriser.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2008 *
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 include_spip('inc/charsets'); # pour le nom de fichier
16 include_spip('base/abstract_sql');
17
18 // acces aux documents joints securise
19 // est appelee avec arg comme parametre CGI
20 // mais peu aussi etre appele avec le parametre file directement
21 // il verifie soit que le demandeur est authentifie
22 // soit que le fichier est joint a au moins 1 article, breve ou rubrique publie
23
24 // http://doc.spip.org/@action_autoriser_dist
25 function action_autoriser_dist()
26 {
27 $arg = intval(_request('arg'));
28
29 if (!autoriser('voir','document',$arg)
30 OR !($row = sql_fetsel("fichier","spip_documents","id_document=".intval($arg)))
31 OR !($file = $row['fichier'])
32 OR !(file_exists($file))
33 ) {
34 spip_log("Acces refuse (restreint) au document " . $arg . ': ' . $file);
35 redirige_par_entete('./?page=404');
36 }
37 else {
38 if (!function_exists('mime_content_type')) {
39 // http://doc.spip.org/@mime_content_type
40 function mime_content_type($f) {preg_match("/\.(\w+)/",$f,$r); return $r[1];}
41 }
42 $ct = mime_content_type($file);
43 $cl = filesize($file);
44 $filename = basename($file);
45 header("Content-Type: ". $ct);
46 header("Content-Disposition: attachment; filename=\"". $filename ."\";");
47 if ($dcc) header("Content-Description: " . $dcc);
48 if ($cl) header("Content-Length: ". $cl);
49
50 header("Content-Transfer-Encoding: binary");
51 readfile($file);
52 }
53 }
54
55 ?>