Skip to content
Extraits de code Groupes Projets
Valider becb7d74 rédigé par kent1@arscenic.info's avatar kent1@arscenic.info
Parcourir les fichiers

On reporte z71757 et z71758 et on ajoute le PHPdoc pour faire plaisir à Marcimat

parent 0fd51a50
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -10,8 +10,25 @@ ...@@ -10,8 +10,25 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/ \***************************************************************************/
/**
* Gestion du formulaire de téléversement de documents
*
* @package SPIP\Medias\Formulaires
*/
if (!defined("_ECRIRE_INC_VERSION")) return; if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Déterminer le mode d'upload si la valeur au chargement du formulaire est "auto"
*
* @param string $mode
* Le mode passé au formulaire
* @param int|string $id_document
* L'identifiant numérique du document à remplacer ou "new" par défaut
* @param string $objet
* Le type d'objet sur lequel ajouter le document
* @return string $mode
* Le mode définitif
*/
function joindre_determiner_mode($mode,$id_document,$objet){ function joindre_determiner_mode($mode,$id_document,$objet){
if ($mode=='auto'){ if ($mode=='auto'){
if (intval($id_document)) if (intval($id_document))
...@@ -25,6 +42,29 @@ function joindre_determiner_mode($mode,$id_document,$objet){ ...@@ -25,6 +42,29 @@ function joindre_determiner_mode($mode,$id_document,$objet){
return $mode; return $mode;
} }
/**
* Chargement du formulaire
*
* @param int|string $id_document
* L'identidiant numérique du document s'il est à remplacer, sinon "new"
* @param int $id_objet
* L'identifiant numérique de l'objet sur lequel on ajoute le document
* @param string $objet
* Le type de l'objet sur lequel on ajoute le document
* @param string $mode
* Le mode du document (auto,choix,document,image,vignette...), par défaut auto
* @param string $galerie
* Passer optionnellement une galerie jointe au form, plus utilise nativement,
* on prefere la mise a jour apres upload par ajaxReload('documents')
* @param bool|string $proposer_media
* Doit on afficher la médiathèque ? par défaut oui
* Valeurs possibles si string : false,'non','no'.
* @param bool|string $proposer_ftp
* Doit on afficher le ftp ? par défaut oui
* Valeurs possibles si string : false,'non','no'.
* @return array $valeurs
* Les valeurs chargées dans le formulaire
*/
function formulaires_joindre_document_charger_dist($id_document='new',$id_objet=0,$objet='',$mode = 'auto',$galerie = false, $proposer_media=true, $proposer_ftp=true){ function formulaires_joindre_document_charger_dist($id_document='new',$id_objet=0,$objet='',$mode = 'auto',$galerie = false, $proposer_media=true, $proposer_ftp=true){
$valeurs = array(); $valeurs = array();
$mode = joindre_determiner_mode($mode,$id_document,$objet); $mode = joindre_determiner_mode($mode,$id_document,$objet);
...@@ -33,31 +73,23 @@ function formulaires_joindre_document_charger_dist($id_document='new',$id_objet= ...@@ -33,31 +73,23 @@ function formulaires_joindre_document_charger_dist($id_document='new',$id_objet=
$valeurs['_mode'] = $mode; $valeurs['_mode'] = $mode;
$valeurs['url'] = 'http://'; $valeurs['url'] = 'http://';
$valeurs['fichier_upload'] = ''; $valeurs['fichier_upload'] = $valeurs['_options_upload_ftp'] = $valeurs['_dir_upload_ftp'] = '';
$valeurs['joindre_upload'] = $valeurs['joindre_distant'] = $valeurs['joindre_ftp'] = $valeurs['joindre_mediatheque'] = '';
$valeurs['_options_upload_ftp'] = '';
$valeurs['_dir_upload_ftp'] = '';
$valeurs['joindre_upload']='';
$valeurs['joindre_distant']='';
$valeurs['joindre_ftp']='';
$valeurs['joindre_mediatheque']='';
$valeurs['editable'] = ' '; $valeurs['editable'] = ' ';
if (intval($id_document)){ if (intval($id_document))
$valeurs['editable'] = autoriser('modifier','document',$id_document)?' ':''; $valeurs['editable'] = autoriser('modifier','document',$id_document)?' ':'';
}
$valeurs['proposer_media'] = is_string($proposer_media) ? (preg_match('/^(false|non|no)$/i', $proposer_media) ? false : true) : $proposer_media; $valeurs['proposer_media'] = is_string($proposer_media) ? (preg_match('/^(false|non|no)$/i', $proposer_media) ? false : true) : $proposer_media;
$valeurs['proposer_ftp'] = is_string($proposer_ftp) ? (preg_match('/^(false|non|no)$/i', $proposer_ftp) ? false : true) : $proposer_ftp; $valeurs['proposer_ftp'] = is_string($proposer_ftp) ? (preg_match('/^(false|non|no)$/i', $proposer_ftp) ? false : true) : $proposer_ftp;
# regarder si un choix d'upload FTP est vraiment possible # regarder si un choix d'upload FTP est vraiment possible
if ( if (
$valeurs['proposer_ftp'] $valeurs['proposer_ftp']
AND test_espace_prive() # ?? AND test_espace_prive() # ??
AND ($mode == 'document' OR $mode == 'choix') # si c'est pour un document AND ($mode != 'image') AND ($mode != 'vignette') # 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 !$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'] AND $GLOBALS['flag_upload']
) { ) {
include_spip('inc/documents'); include_spip('inc/documents');
if ($dir = determine_upload('documents')) { if ($dir = determine_upload('documents')) {
...@@ -91,23 +123,44 @@ function formulaires_joindre_document_charger_dist($id_document='new',$id_objet= ...@@ -91,23 +123,44 @@ function formulaires_joindre_document_charger_dist($id_document='new',$id_objet=
return $valeurs; return $valeurs;
} }
/**
* Vérification du formulaire
*
* @param int|string $id_document
* L'identidiant numérique du document s'il est à remplacer, sinon "new"
* @param int $id_objet
* L'identifiant numérique de l'objet sur lequel on ajoute le document
* @param string $objet
* Le type de l'objet sur lequel on ajoute le document
* @param string $mode
* Le mode du document (auto,choix,document,image,vignette...), par défaut auto
* @param string $galerie
* Passer optionnellement une galerie jointe au form, plus utilise nativement,
* on prefere la mise a jour apres upload par ajaxReload('documents')
* @param bool|string $proposer_media
* Doit on afficher la médiathèque ? par défaut oui
* Valeurs possibles si string : false,'non','no'.
* @param bool|string $proposer_ftp
* Doit on afficher le ftp ? par défaut oui
* Valeurs possibles si string : false,'non','no'.
* @return array $erreurs
* Les erreurs éventuelles dans un tableau
*/
function formulaires_joindre_document_verifier_dist($id_document='new',$id_objet=0,$objet='',$mode = 'auto',$galerie = false, $proposer_media=true, $proposer_ftp=true){ function formulaires_joindre_document_verifier_dist($id_document='new',$id_objet=0,$objet='',$mode = 'auto',$galerie = false, $proposer_media=true, $proposer_ftp=true){
include_spip('inc/joindre_document'); include_spip('inc/joindre_document');
$erreurs = array(); $erreurs = array();
// on joint un document deja dans le site // on joint un document deja dans le site
if (_request('joindre_mediatheque')){ if (_request('joindre_mediatheque')){
$refdoc_joindre = intval(preg_replace(',^(doc|document|img),','',_request('refdoc_joindre'))); $refdoc_joindre = intval(preg_replace(',^(doc|document|img),','',_request('refdoc_joindre')));
if (!sql_getfetsel('id_document','spip_documents','id_document='.intval($refdoc_joindre))) if (!sql_getfetsel('id_document','spip_documents','id_document='.intval($refdoc_joindre)))
$erreurs['message_erreur'] = _T('medias:erreur_aucun_document'); $erreurs['message_erreur'] = _T('medias:erreur_aucun_document');
} }
// sinon c'est un upload // sinon c'est un upload
else { else {
$files = joindre_trouver_fichier_envoye(); $files = joindre_trouver_fichier_envoye();
if (is_string($files)){ if (is_string($files))
$erreurs['message_erreur'] = $files; $erreurs['message_erreur'] = $files;
}
elseif(is_array($files)){ elseif(is_array($files)){
// erreur si on a pas trouve de fichier // erreur si on a pas trouve de fichier
if (!count($files)) if (!count($files))
...@@ -128,8 +181,8 @@ function formulaires_joindre_document_verifier_dist($id_document='new',$id_objet ...@@ -128,8 +181,8 @@ function formulaires_joindre_document_verifier_dist($id_document='new',$id_objet
// si ce n'est pas deja un post de zip confirme // si ce n'est pas deja un post de zip confirme
// regarder si il faut lister le contenu du zip et le presenter // regarder si il faut lister le contenu du zip et le presenter
if (!count($erreurs) if (!count($erreurs)
AND !_request('joindre_zip') AND !_request('joindre_zip')
AND $contenu_zip = joindre_verifier_zip($files)){ AND $contenu_zip = joindre_verifier_zip($files)){
list($fichiers,$erreurs,$tmp_zip) = $contenu_zip; list($fichiers,$erreurs,$tmp_zip) = $contenu_zip;
if ($fichiers) if ($fichiers)
$erreurs['lister_contenu_archive'] = recuperer_fond("formulaires/inc-lister_archive_jointe",array('chemin_zip'=>$tmp_zip,'liste_fichiers_zip'=>$fichiers,'erreurs_fichier_zip'=>$erreurs)); $erreurs['lister_contenu_archive'] = recuperer_fond("formulaires/inc-lister_archive_jointe",array('chemin_zip'=>$tmp_zip,'liste_fichiers_zip'=>$fichiers,'erreurs_fichier_zip'=>$erreurs));
...@@ -146,7 +199,29 @@ function formulaires_joindre_document_verifier_dist($id_document='new',$id_objet ...@@ -146,7 +199,29 @@ function formulaires_joindre_document_verifier_dist($id_document='new',$id_objet
return $erreurs; return $erreurs;
} }
/**
* Traitement du formulaire
*
* @param int|string $id_document
* L'identidiant numérique du document s'il est à remplacer, sinon "new"
* @param int $id_objet
* L'identifiant numérique de l'objet sur lequel on ajoute le document
* @param string $objet
* Le type de l'objet sur lequel on ajoute le document
* @param string $mode
* Le mode du document (auto,choix,document,image,vignette...), par défaut auto
* @param string $galerie
* Passer optionnellement une galerie jointe au form, plus utilise nativement,
* on prefere la mise a jour apres upload par ajaxReload('documents')
* @param bool|string $proposer_media
* Doit on afficher la médiathèque ? par défaut oui
* Valeurs possibles si string : false,'non','no'.
* @param bool|string $proposer_ftp
* Doit on afficher le ftp ? par défaut oui
* Valeurs possibles si string : false,'non','no'.
* @return array $res
* Le tableau renvoyé par les CVT avec le message et editable
*/
function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet=0,$objet='',$mode = 'auto',$galerie = false, $proposer_media=true, $proposer_ftp=true){ function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet=0,$objet='',$mode = 'auto',$galerie = false, $proposer_media=true, $proposer_ftp=true){
$res = array('editable'=>true); $res = array('editable'=>true);
$ancre = ''; $ancre = '';
...@@ -198,9 +273,8 @@ function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet= ...@@ -198,9 +273,8 @@ function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet=
if (!is_numeric($doc)) if (!is_numeric($doc))
$messages_erreur[] = $doc; $messages_erreur[] = $doc;
// cas qui devrait etre traite en amont // cas qui devrait etre traite en amont
elseif(!$doc){ elseif(!$doc)
$messages_erreur[] = _T('medias:erreur_insertion_document_base',array('fichier'=>'<em>???</em>')); $messages_erreur[] = _T('medias:erreur_insertion_document_base',array('fichier'=>'<em>???</em>'));
}
else{ else{
if (!$ancre) if (!$ancre)
$ancre = $doc; $ancre = $doc;
...@@ -209,9 +283,8 @@ function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet= ...@@ -209,9 +283,8 @@ function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet=
} }
if (count($messages_erreur)) if (count($messages_erreur))
$res['message_erreur'] = implode('<br />',$messages_erreur); $res['message_erreur'] = implode('<br />',$messages_erreur);
if ($sel){ if ($sel)
$res['message_ok'] = singulier_ou_pluriel(count($sel),'medias:document_installe_succes','medias:nb_documents_installe_succes'); $res['message_ok'] = singulier_ou_pluriel(count($sel),'medias:document_installe_succes','medias:nb_documents_installe_succes');
}
if ($ancre) if ($ancre)
$res['redirect'] = "#doc$ancre"; $res['redirect'] = "#doc$ancre";
} }
...@@ -221,38 +294,36 @@ function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet= ...@@ -221,38 +294,36 @@ function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet=
$callback .= "jQuery('#doc$ancre a.editbox').eq(0).focus();"; $callback .= "jQuery('#doc$ancre a.editbox').eq(0).focus();";
if (count($sel)){ if (count($sel)){
$sel = "#doc".implode(",#doc",$sel); $sel = "#doc".implode(",#doc",$sel);
$callback .= "jQuery('$sel').animateAppend();"; $callback .= "jQuery('$sel').animateAppend();";
} }
$js = "if (window.jQuery) jQuery(function(){ajaxReload('documents',{callback:function(){ $callback }});});"; $js = "if (window.jQuery) jQuery(function(){ajaxReload('documents',{callback:function(){ $callback }});});";
$js = "<script type='text/javascript'>$js</script>"; $js = "<script type='text/javascript'>$js</script>";
if (isset($res['message_erreur'])) if (isset($res['message_erreur']))
$res['message_erreur'].= $js; $res['message_erreur'].= $js;
else else
$res['message_ok'] .= $js; $res['message_ok'] .= $js;
} }
return $res; return $res;
} }
/** /**
* Retourner le contenu du select HTML d'utilisation de fichiers envoyes * Retourner le contenu du select HTML d'utilisation de fichiers envoyes par le serveur
* *
* @param string $dir * @param string $dir
* Le répertoire de recherche des documents
* @param string $mode * @param string $mode
* @return string * Le mode d'ajout de document
* @return string $texte
* Le contenu HTML du selecteur de documents
*/ */
function joindre_options_upload_ftp($dir, $mode = 'document') { function joindre_options_upload_ftp($dir, $mode = 'document') {
$fichiers = preg_files($dir); $fichiers = preg_files($dir);
$exts = array(); $exts = $dirs = $texte_upload = array();
$dirs = array();
$texte_upload = array();
// en mode "charger une image", ne proposer que les inclus // en mode "charger une image", ne proposer que les inclus
$inclus = ($mode == 'document' OR $mode =='choix') $inclus = ($mode == 'image' OR $mode =='vignette')
? '' ? " AND inclus='image'"
: " AND inclus='image'"; : '';
foreach ($fichiers as $f) { foreach ($fichiers as $f) {
$f = preg_replace(",^$dir,",'',$f); $f = preg_replace(",^$dir,",'',$f);
...@@ -269,24 +340,24 @@ function joindre_options_upload_ftp($dir, $mode = 'document') { ...@@ -269,24 +340,24 @@ function joindre_options_upload_ftp($dir, $mode = 'document') {
$k = 2*substr_count($f,'/'); $k = 2*substr_count($f,'/');
$n = strrpos($f, "/"); $n = strrpos($f, "/");
if ($n === false) if ($n === false)
$lefichier = $f; $lefichier = $f;
else { else {
$lefichier = substr($f, $n+1, strlen($f)); $lefichier = substr($f, $n+1, strlen($f));
$ledossier = substr($f, 0, $n); $ledossier = substr($f, 0, $n);
if (!in_array($ledossier, $dirs)) { if (!in_array($ledossier, $dirs)) {
$texte_upload[] = "\n<option value=\"$ledossier\">" $texte_upload[] = "\n<option value=\"$ledossier\">"
. str_repeat("&nbsp;",$k) .str_repeat("&nbsp;",$k)
._T('medias:tout_dossier_upload', array('upload' => $ledossier)) ._T('medias:tout_dossier_upload', array('upload' => $ledossier))
."</option>"; ."</option>";
$dirs[]= $ledossier; $dirs[]= $ledossier;
} }
} }
if ($exts[$ext] == 'oui') if ($exts[$ext] == 'oui')
$texte_upload[] = "\n<option value=\"$f\">" . $texte_upload[] = "\n<option value=\"$f\">"
str_repeat("&nbsp;",$k+2) . .str_repeat("&nbsp;",$k+2)
$lefichier . .$lefichier
"</option>"; ."</option>";
} }
} }
...@@ -296,7 +367,6 @@ function joindre_options_upload_ftp($dir, $mode = 'document') { ...@@ -296,7 +367,6 @@ function joindre_options_upload_ftp($dir, $mode = 'document') {
._T('medias:info_installer_tous_documents') ._T('medias:info_installer_tous_documents')
."</option>" . $texte; ."</option>" . $texte;
} }
return $texte; return $texte;
} }
...@@ -304,8 +374,10 @@ function joindre_options_upload_ftp($dir, $mode = 'document') { ...@@ -304,8 +374,10 @@ function joindre_options_upload_ftp($dir, $mode = 'document') {
/** /**
* Lister les fichiers contenus dans un zip * Lister les fichiers contenus dans un zip
* *
* @param unknown_type $files * @param array $files
* @return unknown * La liste des fichiers
* @return string $res
* La liste HTML des fichiers <li>...</li>
*/ */
function joindre_liste_contenu_tailles_archive($files) { function joindre_liste_contenu_tailles_archive($files) {
include_spip('inc/charsets'); # pour le nom de fichier include_spip('inc/charsets'); # pour le nom de fichier
...@@ -323,17 +395,23 @@ function joindre_liste_contenu_tailles_archive($files) { ...@@ -323,17 +395,23 @@ function joindre_liste_contenu_tailles_archive($files) {
return $res; return $res;
} }
/**
* Lister les erreurs dans une archive jointe
* Utilisé formulaires/inc-lister_archive_jointe.html
*
* @param array $erreurs
* La liste des erreurs
* @return string $res
* Le code HTML des erreurs
*/
function joindre_liste_erreurs_to_li($erreurs){ function joindre_liste_erreurs_to_li($erreurs){
if (count($erreurs)==1) if (count($erreurs)==1)
return "<p>".reset($erreurs)."</p>"; return "<p>".reset($erreurs)."</p>";
$res = implode("</li><li>",$erreurs); $res = implode("</li><li>",$erreurs);
if (strlen($res)) $res = "<li>$res</li></ul>"; if (strlen($res)) $res = "<li>$res</li></ul>";
if (count($erreurs)>4){ if (count($erreurs)>4)
$res = "<p style='cursor:pointer;' onclick='jQuery(this).siblings(\"ul\").toggle();return false;'>"._T("medias:erreurs_voir",array('nb'=>count($erreurs)))."</p><ul class=\"spip none-js\">".$res."</ul>"; $res = "<p style='cursor:pointer;' onclick='jQuery(this).siblings(\"ul\").toggle();return false;'>"._T("medias:erreurs_voir",array('nb'=>count($erreurs)))."</p><ul class=\"spip none-js\">".$res."</ul>";
}
else else
$res = "<ul class=\"spip\">$res</ul>"; $res = "<ul class=\"spip\">$res</ul>";
return $res; return $res;
......
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