Chargement en cours ecrire/action/joindre.php +75 −11 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -93,8 +93,7 @@ function action_joindre_dist() // http://doc.spip.org/@spip_action_joindre2 function spip_action_joindre2($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); return $ajouter_documents(array( return joindre_documents(array( array('name' => basename($path), 'tmp_name' => $path) ), 'distant', $type, $id, $id_document, Chargement en cours @@ -106,7 +105,6 @@ function spip_action_joindre2($path, $mode, $type, $id, $id_document,$hash, $red // http://doc.spip.org/@spip_action_joindre1 function spip_action_joindre1($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); $files = array(); if (is_array($path)) foreach ($path as $file) { Chargement en cours @@ -114,7 +112,7 @@ function spip_action_joindre1($path, $mode, $type, $id, $id_document,$hash, $red $files[]=$file; } return $ajouter_documents($files, $mode, $type, $id, $id_document, return joindre_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, $actifs, $iframe_redirect); } Chargement en cours Chargement en cours @@ -144,17 +142,60 @@ function spip_action_joindre3($path, $mode, $type, $id, $id_document,$hash, $red } } return joindre_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, $actifs, $iframe_redirect); } // // Charger la fonction surchargeable receptionnant un fichier // et l'appliquer sur celui ou ceux indiques. // http://doc.spip.org/@inc_ajouter_documents function joindre_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); return $ajouter_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, $actifs, $iframe_redirect); if (function_exists('gzopen') AND !($mode == 'distant') AND (count($files) == 1)) { $desc = $files[0]; if (preg_match('/\.zip$/i', $desc['name']) OR ($desc['type'] == 'application/zip')) { // on pose le fichier dans le repertoire zip // (nota : copier_document n'ecrase pas un fichier avec lui-meme // ca autorise a boucler) $zip = copier_document("zip", $desc['name'], $desc['tmp_name'] ); if (!$zip) die ('Erreur upload zip'); # pathologique // Est-ce qu'on sait le lire ? include_spip('inc/pclzip'); $archive = new PclZip($zip); if ($archive) { $valables = verifier_compactes($archive); if ($valables) { echo liste_archive_jointe($valables, $mode, $type, $id, $id_document, $hash, $redirect, $zip, $iframe_redirect); // a tout de suite en joindre4, joindre5, ou joindre6 exit; } } } } foreach ($files as $arg) { check_upload_error($arg['error']); $x = $ajouter_documents($arg['tmp_name'], $arg['name'], $type, $id, $mode, $id_document, $actifs); } return $x; } #----------------------------------------------------------------------- // sous-actions suite a l'envoi d'un Zip: // la fonction ajouter_documents standard a construit un formulaire // la fonction joindre_documents ci-dessus a construit un formulaire // qui renvoie sur une des 3 sous-actions qui suivent. // On recharge ajouter_document sans l'appeler, car son fichier doit // contenir les acolytes qui nous interessent (pas bien beau) // Zip avec confirmation "tel quel" Chargement en cours @@ -166,7 +207,7 @@ function spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $red if (!$pos) { $pos = strpos($path, '/zip_'); } return ajouter_un_document($path, substr($path, $pos+5), $type, $id, $mode, $id_document, $actifs); return $ajouter_documents($path, substr($path, $pos+5), $type, $id, $mode, $id_document, $actifs); } // Zip a deballer. Chargement en cours @@ -174,7 +215,6 @@ function spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $red // http://doc.spip.org/@spip_action_joindre6 function spip_action_joindre6($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); $x = joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, $actifs); // suppression de l'archive en zip @unlink($path); Chargement en cours @@ -186,10 +226,34 @@ function spip_action_joindre6($path, $mode, $type, $id, $id_document,$hash, $red // http://doc.spip.org/@spip_action_joindre4 function spip_action_joindre4($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, $actifs); return spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $redirect, $actifs); } // http://doc.spip.org/@joindre_deballes function joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); define('_tmp_dir', creer_repertoire_documents($hash)); if (_tmp_dir == _DIR_DOC) die(_L('Opération impossible')); include_spip('inc/pclzip'); $archive = new PclZip($path); $archive->extract( PCLZIP_OPT_PATH, _tmp_dir, PCLZIP_CB_PRE_EXTRACT, 'callback_deballe_fichier' ); $contenu = verifier_compactes($archive); foreach ($contenu as $fichier) { $f = basename($fichier); $x = $ajouter_documents(_tmp_dir. $f, $f, $type, $id, $mode, $id_document, $actifs); } effacer_repertoire_temporaire(_tmp_dir); return $x; } ?> ecrire/inc/ajouter_documents.php +15 −82 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -28,8 +28,7 @@ include_spip('inc/getdocument'); # $id_document, # pour une vignette, l'id_document de maman # $actifs # les documents dont il faudra ouvrir la boite de dialogue // http://doc.spip.org/@ajouter_un_document function ajouter_un_document ($source, $nom_envoye, $type_lien, $id_lien, $mode, $id_document, &$documents_actifs) { function inc_ajouter_documents_dist ($source, $nom_envoye, $type_lien, $id_lien, $mode, $id_document, &$documents_actifs) { // Documents distants : pas trop de verifications bloquantes, mais un test // via une requete HEAD pour savoir si la ressource existe (non 404), si le Chargement en cours Chargement en cours @@ -251,48 +250,6 @@ function ajouter_un_document ($source, $nom_envoye, $type_lien, $id_lien, $mode, } // // Traiter la liste des fichiers (action joindre3) // // http://doc.spip.org/@inc_ajouter_documents function inc_ajouter_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, &$actifs, $iframe_redirect) { if (function_exists('gzopen') AND !($mode == 'distant') AND (count($files) == 1)) { $desc = $files[0]; if (preg_match('/\.zip$/i', $desc['name']) OR ($desc['type'] == 'application/zip')) { // on pose le fichier dans le repertoire zip // (nota : copier_document n'ecrase pas un fichier avec lui-meme // ca autorise a boucler) $zip = copier_document("zip", $desc['name'], $desc['tmp_name'] ); if (!$zip) die ('Erreur upload zip'); # pathologique // Est-ce qu'on sait le lire ? include_spip('inc/pclzip'); $archive = new PclZip($zip); if ($archive) { $valables = verifier_compactes($archive); if ($valables) { liste_archive_jointe($valables, $mode, $type, $id, $id_document, $hash, $redirect, $zip, $iframe_redirect); exit; } } } } foreach ($files as $arg) { check_upload_error($arg['error']); $x = ajouter_un_document($arg['tmp_name'], $arg['name'], $type, $id, $mode, $id_document, $actifs); } return $x; } // http://doc.spip.org/@verifier_compactes Chargement en cours @@ -310,28 +267,6 @@ function verifier_compactes($zip) { return $aff_fichiers; } // http://doc.spip.org/@joindre_deballes function joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs) { define('_tmp_dir', creer_repertoire_documents($hash)); if (_tmp_dir == _DIR_DOC) die(_L('Opération impossible')); include_spip('inc/pclzip'); $archive = new PclZip($path); $archive->extract( PCLZIP_OPT_PATH, _tmp_dir, PCLZIP_CB_PRE_EXTRACT, 'callback_deballe_fichier' ); $contenu = verifier_compactes($archive); foreach ($contenu as $fichier) $x = ajouter_un_document(_tmp_dir.basename($fichier), basename($fichier), $type, $id, $mode, $id_document, $actifs); effacer_repertoire_temporaire(_tmp_dir); return $x; } // // Convertit le type numerique retourne par getimagesize() en extension fichier // Chargement en cours Chargement en cours @@ -449,7 +384,6 @@ function liste_archive_jointe($valables, $mode, $type, $id, $id_document, $hash, "<div style='text-align: right;'><input class='fondo' style='font-size: 9px;' type='submit' value='". _T('bouton_valider'). "'></div>"; echo "<p>build form $iframe_redirect</p>"; $action = construire_upload($texte, array( 'redirect' => $redirect, 'iframe_redirect' => $iframe_redirect, Chargement en cours @@ -458,25 +392,24 @@ function liste_archive_jointe($valables, $mode, $type, $id, $id_document, $hash, 'arg' => $arg)); if(_request("iframe")=="iframe") { echo "<div class='upload_answer upload_zip_list'><p>" . return "<p>build form $iframe_redirect</p>" . "<div class='upload_answer upload_zip_list'><p>" . _T('upload_fichier_zip_texte') . "</p><p>" . _T('upload_fichier_zip_texte2') . "</p>" . $action. "</div>"; exit; } } else { echo minipres(_T('upload_fichier_zip'), return minipres(_T('upload_fichier_zip'), "<p>" . _T('upload_fichier_zip_texte') . "</p><p>" . _T('upload_fichier_zip_texte2') . "</p>" . $action); exit; // a tout de suite en joindre4, joindre5, ou joindre6 } } Chargement en cours Chargement en cours
ecrire/action/joindre.php +75 −11 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -93,8 +93,7 @@ function action_joindre_dist() // http://doc.spip.org/@spip_action_joindre2 function spip_action_joindre2($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); return $ajouter_documents(array( return joindre_documents(array( array('name' => basename($path), 'tmp_name' => $path) ), 'distant', $type, $id, $id_document, Chargement en cours @@ -106,7 +105,6 @@ function spip_action_joindre2($path, $mode, $type, $id, $id_document,$hash, $red // http://doc.spip.org/@spip_action_joindre1 function spip_action_joindre1($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); $files = array(); if (is_array($path)) foreach ($path as $file) { Chargement en cours @@ -114,7 +112,7 @@ function spip_action_joindre1($path, $mode, $type, $id, $id_document,$hash, $red $files[]=$file; } return $ajouter_documents($files, $mode, $type, $id, $id_document, return joindre_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, $actifs, $iframe_redirect); } Chargement en cours Chargement en cours @@ -144,17 +142,60 @@ function spip_action_joindre3($path, $mode, $type, $id, $id_document,$hash, $red } } return joindre_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, $actifs, $iframe_redirect); } // // Charger la fonction surchargeable receptionnant un fichier // et l'appliquer sur celui ou ceux indiques. // http://doc.spip.org/@inc_ajouter_documents function joindre_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); return $ajouter_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, $actifs, $iframe_redirect); if (function_exists('gzopen') AND !($mode == 'distant') AND (count($files) == 1)) { $desc = $files[0]; if (preg_match('/\.zip$/i', $desc['name']) OR ($desc['type'] == 'application/zip')) { // on pose le fichier dans le repertoire zip // (nota : copier_document n'ecrase pas un fichier avec lui-meme // ca autorise a boucler) $zip = copier_document("zip", $desc['name'], $desc['tmp_name'] ); if (!$zip) die ('Erreur upload zip'); # pathologique // Est-ce qu'on sait le lire ? include_spip('inc/pclzip'); $archive = new PclZip($zip); if ($archive) { $valables = verifier_compactes($archive); if ($valables) { echo liste_archive_jointe($valables, $mode, $type, $id, $id_document, $hash, $redirect, $zip, $iframe_redirect); // a tout de suite en joindre4, joindre5, ou joindre6 exit; } } } } foreach ($files as $arg) { check_upload_error($arg['error']); $x = $ajouter_documents($arg['tmp_name'], $arg['name'], $type, $id, $mode, $id_document, $actifs); } return $x; } #----------------------------------------------------------------------- // sous-actions suite a l'envoi d'un Zip: // la fonction ajouter_documents standard a construit un formulaire // la fonction joindre_documents ci-dessus a construit un formulaire // qui renvoie sur une des 3 sous-actions qui suivent. // On recharge ajouter_document sans l'appeler, car son fichier doit // contenir les acolytes qui nous interessent (pas bien beau) // Zip avec confirmation "tel quel" Chargement en cours @@ -166,7 +207,7 @@ function spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $red if (!$pos) { $pos = strpos($path, '/zip_'); } return ajouter_un_document($path, substr($path, $pos+5), $type, $id, $mode, $id_document, $actifs); return $ajouter_documents($path, substr($path, $pos+5), $type, $id, $mode, $id_document, $actifs); } // Zip a deballer. Chargement en cours @@ -174,7 +215,6 @@ function spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $red // http://doc.spip.org/@spip_action_joindre6 function spip_action_joindre6($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); $x = joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, $actifs); // suppression de l'archive en zip @unlink($path); Chargement en cours @@ -186,10 +226,34 @@ function spip_action_joindre6($path, $mode, $type, $id, $id_document,$hash, $red // http://doc.spip.org/@spip_action_joindre4 function spip_action_joindre4($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs, $iframe_redirect) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, $actifs); return spip_action_joindre5($path, $mode, $type, $id, $id_document,$hash, $redirect, $actifs); } // http://doc.spip.org/@joindre_deballes function joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); define('_tmp_dir', creer_repertoire_documents($hash)); if (_tmp_dir == _DIR_DOC) die(_L('Opération impossible')); include_spip('inc/pclzip'); $archive = new PclZip($path); $archive->extract( PCLZIP_OPT_PATH, _tmp_dir, PCLZIP_CB_PRE_EXTRACT, 'callback_deballe_fichier' ); $contenu = verifier_compactes($archive); foreach ($contenu as $fichier) { $f = basename($fichier); $x = $ajouter_documents(_tmp_dir. $f, $f, $type, $id, $mode, $id_document, $actifs); } effacer_repertoire_temporaire(_tmp_dir); return $x; } ?>
ecrire/inc/ajouter_documents.php +15 −82 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -28,8 +28,7 @@ include_spip('inc/getdocument'); # $id_document, # pour une vignette, l'id_document de maman # $actifs # les documents dont il faudra ouvrir la boite de dialogue // http://doc.spip.org/@ajouter_un_document function ajouter_un_document ($source, $nom_envoye, $type_lien, $id_lien, $mode, $id_document, &$documents_actifs) { function inc_ajouter_documents_dist ($source, $nom_envoye, $type_lien, $id_lien, $mode, $id_document, &$documents_actifs) { // Documents distants : pas trop de verifications bloquantes, mais un test // via une requete HEAD pour savoir si la ressource existe (non 404), si le Chargement en cours Chargement en cours @@ -251,48 +250,6 @@ function ajouter_un_document ($source, $nom_envoye, $type_lien, $id_lien, $mode, } // // Traiter la liste des fichiers (action joindre3) // // http://doc.spip.org/@inc_ajouter_documents function inc_ajouter_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, &$actifs, $iframe_redirect) { if (function_exists('gzopen') AND !($mode == 'distant') AND (count($files) == 1)) { $desc = $files[0]; if (preg_match('/\.zip$/i', $desc['name']) OR ($desc['type'] == 'application/zip')) { // on pose le fichier dans le repertoire zip // (nota : copier_document n'ecrase pas un fichier avec lui-meme // ca autorise a boucler) $zip = copier_document("zip", $desc['name'], $desc['tmp_name'] ); if (!$zip) die ('Erreur upload zip'); # pathologique // Est-ce qu'on sait le lire ? include_spip('inc/pclzip'); $archive = new PclZip($zip); if ($archive) { $valables = verifier_compactes($archive); if ($valables) { liste_archive_jointe($valables, $mode, $type, $id, $id_document, $hash, $redirect, $zip, $iframe_redirect); exit; } } } } foreach ($files as $arg) { check_upload_error($arg['error']); $x = ajouter_un_document($arg['tmp_name'], $arg['name'], $type, $id, $mode, $id_document, $actifs); } return $x; } // http://doc.spip.org/@verifier_compactes Chargement en cours @@ -310,28 +267,6 @@ function verifier_compactes($zip) { return $aff_fichiers; } // http://doc.spip.org/@joindre_deballes function joindre_deballes($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs) { define('_tmp_dir', creer_repertoire_documents($hash)); if (_tmp_dir == _DIR_DOC) die(_L('Opération impossible')); include_spip('inc/pclzip'); $archive = new PclZip($path); $archive->extract( PCLZIP_OPT_PATH, _tmp_dir, PCLZIP_CB_PRE_EXTRACT, 'callback_deballe_fichier' ); $contenu = verifier_compactes($archive); foreach ($contenu as $fichier) $x = ajouter_un_document(_tmp_dir.basename($fichier), basename($fichier), $type, $id, $mode, $id_document, $actifs); effacer_repertoire_temporaire(_tmp_dir); return $x; } // // Convertit le type numerique retourne par getimagesize() en extension fichier // Chargement en cours Chargement en cours @@ -449,7 +384,6 @@ function liste_archive_jointe($valables, $mode, $type, $id, $id_document, $hash, "<div style='text-align: right;'><input class='fondo' style='font-size: 9px;' type='submit' value='". _T('bouton_valider'). "'></div>"; echo "<p>build form $iframe_redirect</p>"; $action = construire_upload($texte, array( 'redirect' => $redirect, 'iframe_redirect' => $iframe_redirect, Chargement en cours @@ -458,25 +392,24 @@ function liste_archive_jointe($valables, $mode, $type, $id, $id_document, $hash, 'arg' => $arg)); if(_request("iframe")=="iframe") { echo "<div class='upload_answer upload_zip_list'><p>" . return "<p>build form $iframe_redirect</p>" . "<div class='upload_answer upload_zip_list'><p>" . _T('upload_fichier_zip_texte') . "</p><p>" . _T('upload_fichier_zip_texte2') . "</p>" . $action. "</div>"; exit; } } else { echo minipres(_T('upload_fichier_zip'), return minipres(_T('upload_fichier_zip'), "<p>" . _T('upload_fichier_zip_texte') . "</p><p>" . _T('upload_fichier_zip_texte2') . "</p>" . $action); exit; // a tout de suite en joindre4, joindre5, ou joindre6 } } Chargement en cours