Browse Source

passage en branches/trunk etapes 3

zippeur1
maieul@maieul.net 11 years ago
commit
46ceb3322c
  1. 13
      .gitattributes
  2. 41
      base/zippeur.php
  3. 16
      fonds/cfg_zippeur.html
  4. 19
      formulaires/configurer_zippeur.html
  5. BIN
      images/zip.png
  6. BIN
      images/zip_cfg.png
  7. 16
      lang/zippeur_fr.php
  8. 20
      modeles/zip_doc_article.html
  9. 42
      plugin.xml
  10. 7
      prive/squelettes/contenu/configurer_zippeur.html
  11. 9
      prive/squelettes/navigation/configurer_zippeur.html
  12. 105
      zippeur_fonctions.php
  13. 18
      zippeur_pipelines.php

13
.gitattributes vendored

@ -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

41
base/zippeur.php

@ -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);
}
?>

16
fonds/cfg_zippeur.html

@ -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>

19
formulaires/configurer_zippeur.html

@ -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>

BIN
images/zip.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
images/zip_cfg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

16
lang/zippeur_fr.php

@ -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 &agrave; utiliser pour zipper",
"reset" => "Reset",
"supprimer" => "Supprimer",
"ok" => "OK",
"zippeur" => "Zippeur"
);
?>

20
modeles/zip_doc_article.html

@ -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>

42
plugin.xml

@ -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&#233;n&#233;rer une archive zip &#224; 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&#233;n&#233;rer une archive zip &#224; 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>

7
prive/squelettes/contenu/configurer_zippeur.html

@ -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>

9
prive/squelettes/navigation/configurer_zippeur.html

@ -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

105
zippeur_fonctions.php

@ -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;
}
}
?>

18
zippeur_pipelines.php

@ -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…
Cancel
Save