diff --git a/.gitattributes b/.gitattributes index 39521284b31af28a0003f4071a4123d3d4f1a737..f0caca387351d105d56219e3821b35f95515cd78 100644 --- a/.gitattributes +++ b/.gitattributes @@ -332,8 +332,8 @@ dist/vignettes/xls.png -text dist/vignettes/xml.png -text dist/vignettes/zip.png -text dist/win_width.htc -text +ecrire/action/acceder_document.php -text ecrire/action/activer_plugins.php -text -ecrire/action/autoriser.php -text ecrire/action/converser.php -text ecrire/action/dater.php -text ecrire/action/desinstaller_plugin.php -text diff --git a/ecrire/action/autoriser.php b/ecrire/action/acceder_document.php similarity index 97% rename from ecrire/action/autoriser.php rename to ecrire/action/acceder_document.php index 67a0e6f5fa7abf7eb10911734f3fa216bda220fc..3ae875359fe33d175edf072850860d74ca852852 100644 --- a/ecrire/action/autoriser.php +++ b/ecrire/action/acceder_document.php @@ -21,8 +21,8 @@ include_spip('base/abstract_sql'); // il verifie soit que le demandeur est authentifie // soit que le fichier est joint a au moins 1 article, breve ou rubrique publie -// http://doc.spip.org/@action_autoriser_dist -function action_autoriser_dist() +// http://doc.spip.org/@action_acceder_document_dist +function action_acceder_document_dist() { global $auteur_session; // positionne par verifier_visiteur dans inc_version if ($auteur_session['statut'] == '0minirezo' diff --git a/ecrire/inc/ajouter_documents.php b/ecrire/inc/ajouter_documents.php index 470619e1c64902ead4702eddb6445d41e2ed3c73..340127439ad06df5b0d8298edb1d578b843b75ab 100644 --- a/ecrire/inc/ajouter_documents.php +++ b/ecrire/inc/ajouter_documents.php @@ -229,13 +229,8 @@ function inc_ajouter_documents_dist ($source, $nom_envoye, $type_lien, $id_lien, $update = "mode='$mode', "; } - // Pour les fichiers distants remettre l'URL de base - $path = ($distant == 'oui') - ? _q($source) - : ("'" . addslashes(set_spip_doc($fichier)) . "'"); - // Mise a jour des donnees - spip_query("UPDATE spip_documents SET $update taille='$taille', largeur='$largeur', hauteur='$hauteur', fichier=$path WHERE id_document=$id_document"); + spip_query("UPDATE spip_documents SET $update taille='$taille', largeur='$largeur', hauteur='$hauteur', fichier="._q(set_spip_doc($fichier))." WHERE id_document=$id_document"); if ($id_document_lie) { spip_query("UPDATE spip_documents SET id_vignette=$id_document WHERE id_document=$id_document_lie"); diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index 9c6a82c09f4dcab2440621361284550788c9f229..cf9a6f5bf5dc0203712a111a47afc4b4545ffd09 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -16,6 +16,42 @@ 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 +// http://doc.spip.org/@set_spip_doc +function set_spip_doc($fichier) { + if (strpos(_DIR_IMG, $fichier) === 0) + return substr($fichier, strlen(_DIR_IMG)); + else + return $fichier; // ex: fichier distant +} + +// donne le chemin complet du fichier +// http://doc.spip.org/@get_spip_doc +function get_spip_doc($fichier) { + if (preg_match(',^\w+://,', $fichier)) + return $fichier; + else + return (strpos(_DIR_IMG, $fichier) === false) + ? _DIR_IMG . $fichier + : $fichier; +} + +function generer_url_document_dist($id_document) { + if (intval($id_document) <= 0) + return ''; + $row = spip_fetch_array(spip_query("SELECT fichier,distant FROM spip_documents WHERE id_document = $id_document")); + if ($row) { + if ($GLOBALS['meta']["creer_htaccess"] == 'oui' + AND $row['distant'] == 'oui') + return generer_url_action('acceder_document', "arg=$id_document", true); + else + return get_spip_doc($row['fichier']); + } + return ''; +} + // // Vignette pour les documents lies // diff --git a/ecrire/inc/urls.php b/ecrire/inc/urls.php index 8397e4a7cc08cf9f58fc5154bf17e20d2c05a71d..5f819339f587f0683a0770f951869df7bf0f9911 100644 --- a/ecrire/inc/urls.php +++ b/ecrire/inc/urls.php @@ -77,19 +77,8 @@ function generer_url_ecrire_forum($id_forum, $statut='') { // http://doc.spip.org/@generer_url_ecrire_document function generer_url_ecrire_document($id_document, $statut='') { - if (intval($id_document) <= 0) - return ''; - $row = @spip_fetch_array(spip_query("SELECT fichier,distant FROM spip_documents WHERE id_document = $id_document")); - if ($row) { - if ($row['distant'] == 'oui') { - return $row['fichier']; - } else { - if (($GLOBALS['meta']["creer_htaccess"]) != 'oui') - return get_spip_doc($row['fichier']); - else return generer_url_action('autoriser', "arg=$id_document"); - } - } - + include_spip('inc/documents'); + return generer_url_document_dist($id_document); } // http://doc.spip.org/@generer_url_ecrire_statistiques diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 758eb6ed34b06486228ead17fab1e2992138858b..df732aff94c4a6184a51418c9d21b570f82519ea 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -235,14 +235,6 @@ function _q($a) { return (is_int($a)) ? strval($a) : ("'" . addslashes($a) . "'"); } -// http://doc.spip.org/@set_spip_doc -//function set_spip_doc($fichier) {return $fichier;} -// http://doc.spip.org/@get_spip_doc -//function get_spip_doc($fichier) {return _DIR_RACINE . $fichier;} -// pour bientot: -function set_spip_doc($fichier) {return substr($fichier, strlen(_DIR_IMG));} -function get_spip_doc($fichier) {return _DIR_IMG . $fichier;} - // Renvoie le _GET ou le _POST emis par l'utilisateur // ou pioche dans $c si c'est un array() // http://doc.spip.org/@_request diff --git a/ecrire/public/interfaces.php b/ecrire/public/interfaces.php index 98dc2b7c2f12ab84d77f94aa20096bb2df1c133f..4a8f900d3d84cd576c01265647e3ffea1d573b4d 100644 --- a/ecrire/public/interfaces.php +++ b/ecrire/public/interfaces.php @@ -275,6 +275,7 @@ $table_des_traitements['DATE_MODIF'][]= 'vider_date(%s)'; $table_des_traitements['DATE_NOUVEAUTES'][]= 'vider_date(%s)'; $table_des_traitements['DATE_REDAC'][]= 'vider_date(%s)'; $table_des_traitements['DESCRIPTIF'][]= 'propre(%s)'; +$table_des_traitements['FICHIER']['documents']= 'get_spip_doc(%s)'; $table_des_traitements['LIEN_TITRE'][]= 'typo(%s)'; $table_des_traitements['LIEN_URL'][]= 'vider_url(%s)'; $table_des_traitements['MESSAGE'][]= 'propre(%s)'; diff --git a/ecrire/urls/html.php b/ecrire/urls/html.php index d8e197cd53f26c7285822e6805f2e5533b4c1ada..c6bd0cc9cbeb633c690a19583a0cb416686e4431 100644 --- a/ecrire/urls/html.php +++ b/ecrire/urls/html.php @@ -68,13 +68,8 @@ function generer_url_auteur($id_auteur) { // http://doc.spip.org/@generer_url_document function generer_url_document($id_document) { - if (intval($id_document) <= 0) - return ''; - if (($GLOBALS['meta']["creer_htaccess"]) == 'oui') - return generer_url_action('autoriser', "arg=$id_document", true); - $row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document")); - if ($row) return get_spip_doc($row['fichier']); - return ''; + include_spip('inc/documents'); + return generer_url_document_dist($id_document); } diff --git a/ecrire/urls/page.php b/ecrire/urls/page.php index a7915bfb4f619fa069143de7c0c6bb18c5d73337..bbb6147fedf2903ae76a77b83b717167c6d1ebb4 100644 --- a/ecrire/urls/page.php +++ b/ecrire/urls/page.php @@ -63,13 +63,8 @@ function generer_url_auteur($id_auteur) { // http://doc.spip.org/@generer_url_document function generer_url_document($id_document) { - if (($id_document = intval($id_document)) <= 0) - return ''; - if (($GLOBALS['meta']["creer_htaccess"]) == 'oui') - return generer_url_action('autoriser',"arg=$id_document", true); - $row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document")); - if ($row) return get_spip_doc($row['fichier']); - return ''; + include_spip('inc/documents'); + return generer_url_document_dist($id_document); } // http://doc.spip.org/@recuperer_parametres_url diff --git a/ecrire/urls/propres.php b/ecrire/urls/propres.php index d36c53940c429293f03de85419e19ed2cb6d95bf..16a4324c1ef1d1724d1ddd41b4b9302481e98d81 100644 --- a/ecrire/urls/propres.php +++ b/ecrire/urls/propres.php @@ -197,13 +197,8 @@ function generer_url_site($id_syndic) { // http://doc.spip.org/@generer_url_document function generer_url_document($id_document) { - if (($id_document = intval($id_document)) <= 0) - return ''; - if (($GLOBALS['meta']["creer_htaccess"]) == 'oui') - return generer_url_action('autoriser',"arg=$id_document", true); - $row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document")); - if ($row) return get_spip_doc($row['fichier']); - return ''; + include_spip('inc/documents'); + return generer_url_document_dist($id_document); } // http://doc.spip.org/@recuperer_parametres_url diff --git a/ecrire/urls/standard.php b/ecrire/urls/standard.php index af57ffb6f9217710a0fefcbcf5e4309f541567ee..f1b2e18c165f12f71186eb0e7d5f627aa4029037 100644 --- a/ecrire/urls/standard.php +++ b/ecrire/urls/standard.php @@ -48,13 +48,8 @@ function generer_url_auteur($id_auteur) { // http://doc.spip.org/@generer_url_document function generer_url_document($id_document) { - if (intval($id_document) <= 0) - return ''; - if (($GLOBALS['meta']["creer_htaccess"]) == 'oui') - return generer_url_action('autoriser',"arg=$id_document", true); - $row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document")); - if ($row) return get_spip_doc($row['fichier']); - return ''; + include_spip('inc/documents'); + return generer_url_document_dist($id_document); } // http://doc.spip.org/@recuperer_parametres_url