| Current Path : /home/etiennec/www/oldsite/ecrire/inc/ |
| Current File : /home/etiennec/www/oldsite/ecrire/inc/joindre.php |
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2011 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/actions'); // *action_auteur et determine_upload
include_spip('base/abstract_sql');
//
// Construire un formulaire pour telecharger un fichier an Ajax
//
// http://doc.spip.org/@inc_joindre_dist
function inc_joindre_dist($v) {
// calculer le formulaire de base
$res = joindre_formulaire($v);
if (!empty($v['cadre'])) {
$debut_cadre = 'debut_cadre_'.$v['cadre'];
$fin_cadre = 'fin_cadre_'.$v['cadre'];
$res = $debut_cadre($v['icone'], true, $v['fonction'], $v['titre'])
. $res
. $fin_cadre(true);
}
$res = "\n<div class='joindre'>".$res."</div>\n";
$att = " enctype='multipart/form-data' class='form_upload'";
$args = (intval($v['id']) .'/' .intval($v['id_document']) . "/".$v['mode'].'/'.$v['type']);
$script = $v['script'];
// si espace prive, $v a une signification speciale (pas clair)
if (test_espace_prive())
return redirige_action_post('joindre', $args, $script, $v['args'], $res, $att);
else return generer_action_auteur('joindre', $args, $script, $res, "$att method='post'");
}
// http://doc.spip.org/@joindre_formulaire
function joindre_formulaire(&$v) {
global $spip_lang_right;
$depliable = false;
$mode = $v['mode'];
$vignette_de_doc = ($mode == 'vignette' AND $v['id_document']>0);
$distant = (($mode == 'document' OR $mode == 'choix') AND $v['type']);
# indiquer un choix d'upload FTP
$dir_ftp = '';
if (test_espace_prive()
AND ($mode == 'document' OR $mode == 'choix') # si c'est pour un document
AND !$vignette_de_doc # pas pour une vignette (NB: la ligne precedente suffit, mais si on la supprime il faut conserver ce test-ci)
AND $GLOBALS['flag_upload']) {
if ($dir = determine_upload('documents')) {
// quels sont les docs accessibles en ftp ?
$l = texte_upload_manuel($dir, $mode);
// s'il n'y en a pas, on affiche un message d'aide
// en mode document, mais pas en mode image
if ($l OR ($mode == 'document' OR $mode=='choix'))
$dir_ftp = afficher_transferer_upload($l, $dir);
}
}
// Add the redirect url when uploading via iframe
$iframe = "";
if($v['iframe_script'])
$iframe = "<input type='hidden' name='iframe_redirect' value='".rawurlencode($v['iframe_script'])."' />\n";
// Un menu depliant si on a une possibilite supplementaire
if ($dir_ftp OR $distant OR $vignette_de_doc) {
$bloc = "ftp_". $mode .'_'. intval($v['id_document']);
if ($vignette_de_doc)
$debut = bouton_block_depliable($v['intitule'],false,$bloc);
else
$debut = $v['intitule'];
$milieu = debut_block_depliable(false,$bloc);
$fin = "\n\t" . fin_block();
$v['titre'] = bouton_block_depliable($v['titre'],false,$bloc);
} else
$debut = $milieu = $fin = '';
// Lien document distant, jamais en mode image
if ($distant) {
$distant = "<br />\n<div style='border: 1px #303030 solid; padding: 4px; color: #505050;'>" .
"\n\t<img src='". chemin_image('attachment.gif') .
"' style='float: $spip_lang_right;' alt=\"\" />\n" .
"<label for='url'>" .
_T('info_referencer_doc_distant') .
"</label><br />\n\t<input name='url' id='url' value='http://' />" .
"\n\t<div style='text-align: $spip_lang_right'><input name='sousaction2' type='submit' value='".
_T('bouton_choisir').
"' /></div>" .
"\n</div>";
}
$res = "<input name='fichier' id='fichier_$mode" .'_'. strval($v['id_document']) . "' type='file' class='forml spip_xx-small' size='15' />"
. ($v['ancre']
? "\n\t\t<input type='hidden' name='ancre' value='".$v['ancre']."' />"
: ''
)
. "\n\t\t<div style='text-align: $spip_lang_right'><input name='sousaction1' type='submit' value='"
. _T('bouton_telecharger')
. "' /></div>";
if ($vignette_de_doc)
$res = $milieu . $res;
else
$res = $res . $milieu;
return "$iframe$debut$res$dir_ftp$distant$fin";
}
//
// Retourner le code HTML d'utilisation de fichiers envoyes
//
// http://doc.spip.org/@texte_upload_manuel
function texte_upload_manuel($dir, $mode = 'document') {
$fichiers = preg_files($dir);
$exts = array();
$dirs = array();
$texte_upload = array();
// en mode "charger une image", ne proposer que les inclus
$inclus = ($mode == 'document' OR $mode =='choix')
? ''
: " AND inclus='image'";
foreach ($fichiers as $f) {
$f = preg_replace(",^$dir,",'',$f);
if (preg_match(",\.([^.]+)$,", $f, $match)) {
$ext = strtolower($match[1]);
if (!isset($exts[$ext])) {
include_spip('inc/ajouter_documents');
$ext = corriger_extension($ext);
if (sql_fetsel('extension', 'spip_types_documents', $a = "extension='$ext'" . $inclus))
$exts[$ext] = 'oui';
else $exts[$ext] = 'non';
}
$k = 2*substr_count($f,'/');
$n = strrpos($f, "/");
if ($n === false)
$lefichier = $f;
else {
$lefichier = substr($f, $n+1, strlen($f));
$ledossier = substr($f, 0, $n);
if (!in_array($ledossier, $dirs)) {
$texte_upload[] = "\n<option value=\"$ledossier\">"
. str_repeat(" ",$k)
._T('tout_dossier_upload', array('upload' => $ledossier))
."</option>";
$dirs[]= $ledossier;
}
}
if ($exts[$ext] == 'oui')
$texte_upload[] = "\n<option value=\"$f\">" .
str_repeat(" ",$k+2) .
$lefichier .
"</option>";
}
}
$texte = join('', $texte_upload);
if (count($texte_upload)>1) {
$texte = "\n<option value=\"/\" style='font-weight: bold;'>"
._T('info_installer_tous_documents')
."</option>" . $texte;
}
return $texte;
}
// http://doc.spip.org/@afficher_transferer_upload
function afficher_transferer_upload($texte_upload, $dir)
{
$doc = array('upload' => '<b>' . joli_repertoire($dir) . '</b>');
if (!$texte_upload) {
return "\n<div style='border: 1px #303030 solid; padding: 4px; color: #505050;'>" .
_T('info_installer_ftp', $doc) .
aide("ins_upload") .
"</div>";
}
else { return
"\n<div style='color: #505050;'>"
."<label for='cheminupload'>" . _T('info_selectionner_fichier', $doc)
."</label> :<br />\n" .
"\n<select name='chemin' id='cheminupload' size='1' style='width:100%;overflow:hidden;'>"
. "<option value=''>>></option>"
. $texte_upload .
"\n</select>" .
"\n<div style='text-align: ".
$GLOBALS['spip_lang_right'] .
"'><input name='sousaction3' type='submit' value='" .
_T('bouton_choisir').
"' /></div>" .
"</div>\n";
}
}
?>