
commit
46ceb3322c
13 changed files with 306 additions and 0 deletions
@ -0,0 +1,13 @@
|
||||
* text=auto !eol |
||||
base/zippeur.php -text |
||||
fonds/cfg_zippeur.html -text |
||||
formulaires/configurer_zippeur.html -text |
||||
images/zip.png -text |
||||
images/zip_cfg.png -text |
||||
lang/zippeur_fr.php -text |
||||
modeles/zip_doc_article.html -text |
||||
/plugin.xml -text |
||||
prive/squelettes/contenu/configurer_zippeur.html -text |
||||
prive/squelettes/navigation/configurer_zippeur.html -text |
||||
/zippeur_fonctions.php -text |
||||
/zippeur_pipelines.php -text |
@ -0,0 +1,41 @@
|
||||
<?php |
||||
|
||||
function zippeur_upgrade($nom_meta_base_version,$version_cible){ |
||||
$current_version = 0.0; |
||||
if ( (!isset($GLOBALS['meta'][$nom_meta_base_version]) ) |
||||
|| (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){ |
||||
include_spip('base/create'); |
||||
if (version_compare($current_version,"0.1","<")){ |
||||
creer_base(); |
||||
ecrire_meta($nom_meta_base_version,$current_version="0.1"); |
||||
} |
||||
if (version_compare($current_version,"0.2","<")){ |
||||
maj_tables('spip_zippeur'); |
||||
ecrire_meta($nom_meta_base_version,$current_version="0.2"); |
||||
} |
||||
if (version_compare($current_version,"0.3","<")){ |
||||
ecrire_config('zippeur/zippeur_cmd', 'PclZip'); |
||||
ecrire_meta($nom_meta_base_version,$current_version="0.3"); |
||||
} |
||||
ecrire_metas(); |
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
function zippeur_vider_tables($nom_meta_version_base){ |
||||
include_spip('base/abstract_sql'); |
||||
include_spip('inc/flock'); |
||||
defined('_DIR_SITE') ? $fichiers = preg_files(_DIR_SITE._NOM_TEMPORAIRES_ACCESSIBLES.'/cache-zip') : $fichiers = preg_files(_DIR_RACINE._NOM_TEMPORAIRES_ACCESSIBLES.'/cache-zip') ; |
||||
foreach($fichiers as $f){ |
||||
supprimer_fichier($f); |
||||
} |
||||
|
||||
sql_drop_table("spip_zippeur"); |
||||
effacer_meta($nom_meta_version_base); |
||||
} |
||||
|
||||
|
||||
?> |
@ -0,0 +1,16 @@
|
||||
<!-- titre= Zippeur --> |
||||
<!-- icone=zip_cfg.png --> |
||||
<!-- autoriser=modification --> |
||||
<!-- boite= <:zippeur:zippeur:> --> |
||||
<!-- descriptif= Cela va vous permettre de configurer les options pour zipper vos fichiers.<br /> |
||||
Vous avez le choix entre :<br /> |
||||
<ul> |
||||
<li>Utiliser la librairies Php PclZip</li> |
||||
<li>Utiliser le programme 7-zip qui créera le fichier au lieu de php(installation de <a href="http://www.7-zip.org/" class="spip_out">7-zip</a> obligatoire)</li> |
||||
<li>[plus rapide] Utiliser le programme zip qui créera le fichier au lieu de php(installation de <a href="http://sourceforge.net/projects/infozip/" class="spip_out">zip</a> obligatoire)</li> |
||||
</ul> --> |
||||
#CACHE{0} |
||||
<div class="ajax"> |
||||
#FORMULAIRE_CONFIGURER_ZIPPEUR |
||||
</div> |
||||
|
@ -0,0 +1,19 @@
|
||||
<div class="formulaire_spip formulaire_cfg formulaire_#FORM"> |
||||
|
||||
<h3 class='titrem'>[(#CHEMIN{images/zip_cfg.png}|image_reduire{24}|inserer_attribut{class,cadre-icone}|inserer_attribut{alt,''})]<:zippeur:cfg_titre:></h3> |
||||
<form method="post" action="#ENV{action}"> |
||||
#ACTION_FORMULAIRE{#ENV{action}} |
||||
<fieldset> |
||||
<legend><:zippeur:choix_module:></legend> |
||||
<select name="zippeur_cmd"> |
||||
<option value="PclZip" [(#ENV{zippeur_cmd}|=={PclZip}|oui)selected="selected"]>Lib php PclZip</option> |
||||
<option value="7zip" [(#ENV{zippeur_cmd}|=={7zip}|oui)selected="selected"]>Utilisation de 7-Zip</option> |
||||
<option value="zip" [(#ENV{zippeur_cmd}|=={zip}|oui)selected="selected"]>Utilisation de Zip</option> |
||||
</select> |
||||
|
||||
<input type="submit" name="_cfg_ok" value="<:zippeur:ok:>" /> |
||||
<input type="reset" value="<:zippeur:reset:>" /> |
||||
<input type="submit" name="_cfg_delete" value="<:zippeur:supprimer:>" /> |
||||
</fieldset> |
||||
</form> |
||||
</div> |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.1 KiB |
@ -0,0 +1,16 @@
|
||||
<?php |
||||
/** Fichier de langue de SPIP **/ |
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array( |
||||
"ensemble_fichier" => "Zip de l'ensemble des fichiers", |
||||
"cfg_titre" =>"Panneau de configuration de Zippeur", |
||||
"choix_module" =>"Choix du module à utiliser pour zipper", |
||||
"reset" => "Reset", |
||||
"supprimer" => "Supprimer", |
||||
"ok" => "OK", |
||||
"zippeur" => "Zippeur" |
||||
|
||||
); |
||||
|
||||
?> |
@ -0,0 +1,20 @@
|
||||
#SET{doc,#ARRAY} |
||||
#SET{id_article,#ENV{id_zip_doc_article,#ENV{id_article}}} |
||||
#SET{cmd,#ENV{cmd,#CONFIG{zippeur/zippeur_cmd}}} |
||||
<BOUCLE_doc(DOCUMENTS){id_article}{mode?}> |
||||
[(#SET{doc,#GET{doc}|push{#FICHIER|copie_locale}})] |
||||
</BOUCLE_doc> |
||||
<BOUCLE_date(DOCUMENTS){!par maj}{id_article=#GET{id_article}}{0,1}> |
||||
[(#SET{nomdoc,article_#GET{id_article}[_(#ENV{mode})]})] |
||||
[(#SET{urlzip,#GET{doc}|zippeur{#MAJ,#GET{cmd},#GET{nomdoc}}})] |
||||
<dl class='spip_documents'> |
||||
<dt> |
||||
<a type="application/zip" href="[(#GET{urlzip})]" title="<:zippeur:ensemble_fichier:> [(#GET{urlzip}|filesize|taille_en_octets)])"> |
||||
<img src='[(#CHEMIN{prive/vignettes/zip.png}|sinon{#CHEMIN{vignettes/zip.png}})]' alt="<:zippeur:ensemble_fichier:> [(#GET{urlzip}|filesize|taille_en_octets)])" /></a> |
||||
</dt> |
||||
<dt class='spip_doc_titre'><strong>(<:zippeur:ensemble_fichier:> - [(#GET{urlzip}|filesize|taille_en_octets)])</strong></dt> |
||||
</dl> |
||||
</BOUCLE_date> |
||||
</B_doc> |
||||
|
||||
|
@ -0,0 +1,42 @@
|
||||
<plugin> |
||||
<nom>Zippeur</nom> |
||||
<slogan>Zippez facilement vos documents joints</slogan> |
||||
<auteur>[Maïeul Rouquette->http://www.maieul.net], Julien Coste-Louret</auteur> |
||||
<version>1.5.0</version> |
||||
<version_base>0.3</version_base> |
||||
<categorie>multimedia</categorie> |
||||
<etat>stable</etat> |
||||
<lien>http://www.spip-contrib.net/Zippeur</lien> |
||||
<icon>images/zip.png</icon> |
||||
<description>Il est parfois utile, notamment quand un article comprend beaucoup de documents joints, de proposer l’ensemble des documents sous forme de zip. Ce plugin permet à SPIP de générer une archive zip à partir d’une liste de documents.</description> |
||||
<install>base/zippeur.php</install> |
||||
<prefix>zippeur</prefix> |
||||
<fonctions>zippeur_fonctions.php</fonctions> |
||||
<necessite id="spip" version="[2.0.0;2.1.99)" /> |
||||
<necessite id='cfg' version='[1.10.0;]' /> |
||||
<pipeline> |
||||
<nom>declarer_tables_principales</nom> |
||||
<inclure>zippeur_pipelines.php</inclure> |
||||
</pipeline> |
||||
<licence>GPL</licence> |
||||
</plugin> |
||||
<plugin spip='[3.0.0-dev;3.0.99]'> |
||||
<nom>Zippeur</nom> |
||||
<slogan>Zippez facilement vos documents joints</slogan> |
||||
<auteur>[Maïeul Rouquette->http://www.maieul.net], Julien Coste-Louret</auteur> |
||||
<version>1.5.0</version> |
||||
<version_base>0.3</version_base> |
||||
<categorie>multimedia</categorie> |
||||
<etat>stable</etat> |
||||
<icon>images/zip.png</icon> |
||||
<description>Il est parfois utile, notamment quand un article comprend beaucoup de documents joints, de proposer l’ensemble des documents sous forme de zip. Ce plugin permet à SPIP de générer une archive zip à partir d’une liste de documents.</description> |
||||
<install>base/zippeur.php</install> |
||||
<prefix>zippeur</prefix> |
||||
<fonctions>zippeur_fonctions.php</fonctions> |
||||
<pipeline> |
||||
<nom>declarer_tables_principales</nom> |
||||
<inclure>zippeur_pipelines.php</inclure> |
||||
</pipeline> |
||||
<licence>GPL</licence> |
||||
<lien>http://www.spip-contrib.net/Zippeur</lien> |
||||
</plugin> |
@ -0,0 +1,7 @@
|
||||
#CACHE{0} |
||||
[(#AUTORISER{configurer,zippeur}|sinon_interdire_acces)] |
||||
<h1 class="grostitre"><:zippeur:zippeur:></h1> |
||||
<div class="ajax"> |
||||
#FORMULAIRE_CONFIGURER_ZIPPEUR |
||||
</div> |
||||
|
@ -0,0 +1,9 @@
|
||||
#BOITE_OUVRIR{'',info} |
||||
<p>Cela va vous permettre de configurer les options pour zipper vos fichiers.<br /> |
||||
Vous avez le choix entre :</p> |
||||
<ul class="liste-items"> |
||||
<li class="item">Utiliser la librairies Php PclZip</li> |
||||
<li class="item">Utiliser le programme 7-zip qui créera le fichier au lieu de php(installation de <a href="http://www.7-zip.org/" class="spip_out">7-zip</a> obligatoire)</li> |
||||
<li class="item">[plus rapide] Utiliser le programme zip qui créera le fichier au lieu de php(installation de <a href="http://sourceforge.net/projects/infozip/" class="spip_out">zip</a> obligatoire)</li> |
||||
</ul> |
||||
#BOITE_FERMER |
@ -0,0 +1,105 @@
|
||||
<?php |
||||
|
||||
function zippeur($array,$date,$cmd,$nom='',$plat='oui'){ |
||||
$nom == '' ? $nom = md5(serialize($array)) : $nom = $nom; |
||||
$cmd =='' ? $cmd = lire_config('zippeur/zippeur_cmd'):$cmd=$cmd; |
||||
|
||||
defined('_DIR_SITE') ? $chemin = _DIR_SITE._NOM_TEMPORAIRES_ACCESSIBLES.'cache-zip/'.$nom.".zip" : $chemin = _DIR_RACINE._NOM_TEMPORAIRES_ACCESSIBLES.'cache-zip/'.$nom.".zip"; |
||||
include_spip('inc/flock'); |
||||
$enbase = sql_fetsel('id_zip,fichiers,date_modif','spip_zippeur',"`nom`='$nom'"); |
||||
/* On vérifie si le zip existe*/ |
||||
if (count(preg_files($chemin))==0 or!$enbase['id_zip'] or $enbase['date_modif']!=$date or count($array)!=$enbase['fichiers'] or _NO_CACHE!=0){ |
||||
|
||||
if(zippeur_zipper($chemin,$array,$cmd,$plat)) |
||||
{ |
||||
spip_log("Zippage de $nom.zip avec cmd=$cmd","zippeur"); |
||||
if ($enbase['id_zip']){ |
||||
sql_updateq("spip_zippeur",array("date_modif"=>$date,'fichiers'=>count($array)),"id_zip=".$enbase['id_zip']); |
||||
} |
||||
else{ |
||||
sql_insertq("spip_zippeur",array("nom"=>$nom,"date_modif"=>$date,'fichiers'=>count($array))); |
||||
} |
||||
} |
||||
} |
||||
; |
||||
|
||||
return $chemin; |
||||
} |
||||
|
||||
function zippeur_zipper($chemin,$array,$cmd,$plat){ |
||||
$temps_un=explode(" ",microtime()); |
||||
if($cmd=='PclZip'){include_spip('inc/pclzip');} |
||||
defined('_DIR_SITE') ? sous_repertoire(_DIR_SITE._NOM_TEMPORAIRES_ACCESSIBLES,'cache-zip') : sous_repertoire(_DIR_RACINE._NOM_TEMPORAIRES_ACCESSIBLES,'cache-zip'); |
||||
supprimer_fichier($chemin); |
||||
$fichiers = 0; |
||||
if($cmd=='PclZip') |
||||
{ |
||||
$zip = new PclZip($chemin); |
||||
$i = 0; |
||||
foreach ($array as $fichier){ |
||||
|
||||
if (test_espace_prive()){ |
||||
$array[$i] = '../'.$fichier; |
||||
} |
||||
$i++; |
||||
|
||||
|
||||
|
||||
} |
||||
if ($plat=='oui') |
||||
$erreur = $zip->add($array,PCLZIP_OPT_REMOVE_ALL_PATH); |
||||
else |
||||
$erreur = $zip->add($array,PCLZIP_OPT_REMOVE_PATH, $plat); |
||||
if ($erreur == 0){ |
||||
spip_log("$chemin".$zip->errorInfo(true),"zippeur_erreur"); |
||||
|
||||
} |
||||
$fichiers =count($array) ; |
||||
}elseif($cmd=='7zip') |
||||
{ |
||||
foreach ($array as $fichier){ |
||||
if (test_espace_prive()){ |
||||
$fichier_liste .= ' ../'.$fichier; |
||||
}else{ |
||||
$fichier_liste .= ' '.$fichier; |
||||
} |
||||
$fichiers++; |
||||
} |
||||
passthru("7za a -tzip ".$chemin." ".$fichier_liste." -mx5 >/dev/null",$result); |
||||
if($result!=0) |
||||
{ |
||||
spip_log($fichier_liste." -- code d'erreur 7z: ".$result,"zippeur_erreur"); |
||||
} |
||||
else{ |
||||
//$fichiers++; |
||||
} |
||||
}elseif($cmd=='zip') |
||||
{ |
||||
foreach ($array as $fichier){ |
||||
if (test_espace_prive()){ |
||||
$fichier_liste .= ' ../'.$fichier; |
||||
}else{ |
||||
$fichier_liste .= ' '.$fichier; |
||||
} |
||||
$fichiers++; |
||||
} |
||||
passthru("zip -jq9 ".$chemin." ".$fichier_liste." >/dev/null",$result); |
||||
if($result!=0) |
||||
{ |
||||
spip_log($fichier_liste." -- code d'erreur zip: ".$result,"zippeur_erreur"); |
||||
} |
||||
else{ |
||||
//$fichiers++; |
||||
} |
||||
} |
||||
if ($fichiers !=count($array)){ |
||||
spip_log("$chemin : $fichiers fichiers présents mais ".count($array)." prévus",'zippeur_erreur'); |
||||
return false; |
||||
}else{ |
||||
$temps_deux=explode(" ",microtime()); |
||||
spip_log('zipper en '.($temps_deux[1]-$temps_un[1]).'sec avec '.$cmd,'zippeur'); |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,18 @@
|
||||
<?php |
||||
|
||||
function zippeur_declarer_tables_principales($table){ |
||||
$table['spip_zippeur'] = array( |
||||
'field'=>array( |
||||
'id_zip' => "INT", |
||||
'nom' => "text", |
||||
'date_modif' => "datetime", |
||||
'fichiers'=>"INT" |
||||
), |
||||
|
||||
'key'=> array('PRIMARY KEY'=>'id_zip') |
||||
|
||||
); |
||||
return $table; |
||||
} |
||||
|
||||
?> |
Loading…
Reference in new issue