diff --git a/ecrire/inc/autoriser.php b/ecrire/inc/autoriser.php index aab3333ae16827d6bf5094b6468c0f22a2ad4114..5f5aabce1dc74ca51271ce1d9589f92fad829fc7 100644 --- a/ecrire/inc/autoriser.php +++ b/ecrire/inc/autoriser.php @@ -519,6 +519,9 @@ function autoriser_chargerftp_dist($faire, $type, $id, $qui, $opt) { // // http://doc.spip.org/@autoriser_document_voir_dist function autoriser_document_voir_dist($faire, $type, $id, $qui, $opt) { + + if (($id = intval($id)) <= 0) return false; + if ($GLOBALS['meta']["creer_htaccess"] != 'oui') return true; diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index 1287076de8e6079d91d1aaf619c15a353da62288..3fcaacd004db0a5f806d567aefb84514e94dc384 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -14,8 +14,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('inc/actions'); // *action_auteur et determine_upload include_spip('inc/date'); -include_spip('base/abstract_sql'); - // donne le chemin du fichier relatif a _DIR_IMG // pour stockage 'tel quel' dans la base de donnees @@ -55,24 +53,27 @@ function contenu_document($id_document) // http://doc.spip.org/@generer_url_document_dist function generer_url_document_dist($id_document, $args='', $ancre='') { - if (intval($id_document) <= 0) - return ''; + + include_spip('inc/autoriser'); + if (!autoriser('voir', 'document', $id_document)) return ''; + $row = sql_fetsel("fichier,distant", "spip_documents", "id_document=".sql_quote($id_document)); + if (!$row) return ''; - // Cette variable de configuration peut etre posee par un plugin - // par exemple acces_restreint - if ($GLOBALS['meta']["creer_htaccess"] == 'oui' - AND $row['distant'] != 'oui') { - include_spip('inc/securiser_action'); - $args .= ($args ? "&" : '') + + $f = $row['fichier']; + + if ($row['distant'] == 'oui') return get_spip_doc($f); + + include_spip('inc/securiser_action'); + + return generer_url_action('acceder_document', + $args . ($args ? "&" : '') . 'arg='.$id_document . ($ancre ? "&ancre=$ancre" : '') - . '&cle=' . calculer_cle_action($id_document.','.$row['fichier']) - . '&file=' . rawurlencode($row['fichier']) - ; - return generer_url_action('acceder_document', $args); - } else - return get_spip_doc($row['fichier']); + . '&cle=' . calculer_cle_action($id_document.','.$f) + . '&file=' . rawurlencode($f) + ); } //