Skip to content
Extraits de code Groupes Projets
Valider 4bb1e0f9 rédigé par esj's avatar esj
Parcourir les fichiers

genere_url_document et encore un peu CSV.

Le changement de stratégie sur la protection des documents rebondit encore.
Si un modèle a besoin d'incruster un document dont il ne connait que l'URL, le site exécutant la fonction copie_locale va échouer sur son propre appel car un serveur n'est pas son propre client. On repère donc la situation suffisamment en amont pour pouvoir faire sauter la auto-protection.

Par ailleurs, le filtre d'incrustation d'un CSV admet aussi la tabulation comme séparateur de colonne, et le {{{^M}}} comme unique séparateur de ligne (j'espère que le nombre de tableurs qui réinventent le RFC de CSV est strictement inférieur à mon nombre de collègues, je commence à en douter).

Précision sur [11111]: le raccourci pour Caption est {{{||}}} qu'il faut écrire entre triple accolade sur le Wiki de Trac.
parent b229d707
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -523,15 +523,16 @@ function autoriser_document_voir_dist($faire, $type, $id, $qui, $opt) {
if ($GLOBALS['meta']["creer_htaccess"] != 'oui')
return true;
if (($id = intval($id)) <= 0) return false;
if ((!is_numeric($id)) OR $id < 0) return false;
if (in_array($qui['statut'], array('0minirezo', '1comite')))
return true;
return 'htaccess';
return sql_countsel('spip_documents_articles AS rel_articles, spip_articles AS articles', "rel_articles.id_article = articles.id_article AND articles.statut = 'publie' AND rel_articles.id_document = $id") > 0
if (sql_countsel('spip_documents_articles AS rel_articles, spip_articles AS articles', "rel_articles.id_article = articles.id_article AND articles.statut = 'publie' AND rel_articles.id_document = $id") > 0
OR sql_countsel('spip_documents_rubriques AS rel_rubriques, spip_rubriques AS rubriques', "rel_rubriques.id_rubrique = rubriques.id_rubrique AND rubriques.statut = 'publie' AND rel_rubriques.id_document = $id") > 0
OR sql_countsel('spip_documents_breves AS rel_breves, spip_breves AS breves', "rel_breves.id_breve = breves.id_breve AND breves.statut = 'publie' AND rel_breves.id_document = $id") > 0
;
OR sql_countsel('spip_documents_breves AS rel_breves, spip_breves AS breves', "rel_breves.id_breve = breves.id_breve AND breves.statut = 'publie' AND rel_breves.id_document = $id") > 0)
return 'htaccess';
else return false;
}
// Qui peut activer le debugueur ?
......
......@@ -23,6 +23,13 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
//
// http://doc.spip.org/@copie_locale
function copie_locale($source, $mode='auto') {
// si c'est la protection de soi-meme
$reg = ',' . $GLOBALS['meta']['adresse_site']
. "/?spip.php[?]action=acceder_document.*file=(.*)$,";
if (preg_match($reg, $source, $local)) return _DIR_IMG . urldecode($local[1]);
$local = fichier_copie_locale($source);
// test d'existence du fichier
......@@ -295,8 +302,10 @@ function fichier_copie_locale($source) {
// Si c'est deja dans la table des documents,
// ramener le nom de sa copie potentielle
$ext = sql_getfetsel("extension", "spip_documents", "fichier=" . sql_quote($source) . " AND distant='oui' AND extension <> ''");
if ($ext) return nom_fichier_copie_locale($source, $ext);
// voir si l'extension indiquee dans le nom du fichier est ok
......
......@@ -63,16 +63,20 @@ function generer_url_document_dist($id_document, $args='', $ancre='') {
include_spip('inc/autoriser');
if (!autoriser('voir', 'document', $id_document)) return '';
$row = sql_fetsel("fichier,distant", "spip_documents", "id_document=".sql_quote($id_document));
$r = sql_fetsel("fichier,distant", "spip_documents", "id_document=".sql_quote($id_document));
if (!$row) return '';
if (!$r) return '';
$f = $row['fichier'];
$f = $r['fichier'];
if ($r['distant'] == 'oui') return $f;
// Si droit de voir tous les docs, pas seulement celui-ci
// il est inutilement couteux de rajouter une protection
if (($row['distant'] == 'oui') OR autoriser('voir', 'document'))
return get_spip_doc($f);
$r = autoriser('voir', 'document');
if ($r AND $r !== 'htaccess') return get_spip_doc($f);
include_spip('inc/securiser_action');
......@@ -278,7 +282,6 @@ function afficher_documents_colonne($id, $type="article",$script=NULL) {
}
$ret .= "</div>";
if (test_espace_prive()){
spip_log("doc scrip");
$ret .= http_script('', _DIR_JAVASCRIPT."async_upload.js")
. http_script('$("form.form_upload").async_upload(async_upload_article_edit)');
}
......
......@@ -44,11 +44,15 @@ function filtre_text_csv_dist($t)
{
$virg = substr_count($t, ',');
$pvirg = substr_count($t, ';');
$tab = substr_count($t, "\t");
if ($virg > $pvirg)
{ $sep = ','; $hs = '&#44;';}
else { $sep = ';'; $hs = '&#59;';}
else { $sep = ';'; $hs = '&#59;'; $virg = $pvirg;}
if ($tab > $virg) {$sep = "\t"; $hs = "\t";}
$t = str_replace('""','&#34;', preg_replace('/\r?\n/', "\n", $t));
$t = str_replace('""','&#34;',
preg_replace('/\r?\n/', "\n",
preg_replace('/\r/', "\n", $t)));
preg_match_all('/"[^"]*"/', $t, $r);
foreach($r[0] as $cell)
$t = str_replace($cell,
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter