source: spip-zone/_plugins_/zippeur/zippeur_fonctions.php @ 59176

Last change on this file since 59176 was 59176, checked in by maieul@…, 8 years ago

recalculer systématiquement les zip si la constante NO_CACHE est différente de 0

File size: 3.1 KB
Line 
1<?php
2
3function zippeur($array,$date,$cmd,$nom='',$plat='oui'){
4        $nom == '' ? $nom = md5(serialize($array)) : $nom = $nom;
5        $cmd =='' ? $cmd = lire_config('zippeur/zippeur_cmd'):$cmd=$cmd;
6       
7        defined('_DIR_SITE') ? $chemin = _DIR_SITE._NOM_TEMPORAIRES_ACCESSIBLES.'cache-zip/'.$nom.".zip" : $chemin = _DIR_RACINE._NOM_TEMPORAIRES_ACCESSIBLES.'cache-zip/'.$nom.".zip";
8        include_spip('inc/flock');
9        $enbase = sql_fetsel('id_zip,fichiers,date_modif','spip_zippeur',"`nom`='$nom'");
10        /* On vérifie si le zip existe*/
11        if (count(preg_files($chemin))==0 or!$enbase['id_zip'] or $enbase['date_modif']!=$date or count($array)!=$enbase['fichiers'] or _NO_CACHE!=0){
12               
13                if(zippeur_zipper($chemin,$array,$cmd,$plat))
14                {
15                        spip_log("Zippage de $nom.zip avec cmd=$cmd","zippeur");
16                        if ($enbase['id_zip']){
17                                sql_updateq("spip_zippeur",array("date_modif"=>$date,'fichiers'=>count($array)),"id_zip=".$enbase['id_zip']);   
18                        }
19                        else{
20                                sql_insertq("spip_zippeur",array("nom"=>$nom,"date_modif"=>$date,'fichiers'=>count($array)));   
21                        }
22                }
23        }
24;
25       
26        return $chemin;
27}
28
29function zippeur_zipper($chemin,$array,$cmd,$plat){
30        $temps_un=explode(" ",microtime());
31        if($cmd=='PclZip'){include_spip('inc/pclzip');}
32        defined('_DIR_SITE') ? sous_repertoire(_DIR_SITE._NOM_TEMPORAIRES_ACCESSIBLES,'cache-zip') : sous_repertoire(_DIR_RACINE._NOM_TEMPORAIRES_ACCESSIBLES,'cache-zip');
33        supprimer_fichier($chemin);
34        $fichiers = 0;
35        if($cmd=='PclZip')
36        {
37                $zip = new PclZip($chemin);
38                $i = 0;
39                foreach ($array as $fichier){
40                       
41                        if (test_espace_prive()){
42                                $array[$i] = '../'.$fichier;
43                        }
44                        $i++;
45                       
46                       
47                       
48                }
49                if ($plat=='oui')
50                        $erreur = $zip->add($array,PCLZIP_OPT_REMOVE_ALL_PATH);
51                else
52                        $erreur = $zip->add($array,PCLZIP_OPT_REMOVE_PATH, $plat);
53                if ($erreur == 0){
54                                spip_log("$chemin".$zip->errorInfo(true),"zippeur_erreur");
55                               
56                        }
57                $fichiers  =count($array) ;
58        }elseif($cmd=='7zip')
59        {
60                foreach ($array as $fichier){
61                        if (test_espace_prive()){
62                                $fichier_liste .= ' ../'.$fichier;
63                        }else{
64                                $fichier_liste .= ' '.$fichier;
65                                }
66                                $fichiers++;
67                }
68                        passthru("7za a -tzip ".$chemin." ".$fichier_liste." -mx5 >/dev/null",$result);
69                        if($result!=0)
70                        {
71                                spip_log($fichier_liste." -- code d'erreur 7z: ".$result,"zippeur_erreur");
72                        }
73                        else{
74                                //$fichiers++;
75                        }
76        }elseif($cmd=='zip')
77        {
78                foreach ($array as $fichier){
79                        if (test_espace_prive()){
80                                $fichier_liste .= ' ../'.$fichier;
81                        }else{
82                                $fichier_liste .= ' '.$fichier;
83                                }
84                                $fichiers++;
85                }
86                        passthru("zip -jq9 ".$chemin." ".$fichier_liste." >/dev/null",$result);
87                        if($result!=0)
88                        {
89                                spip_log($fichier_liste." -- code d'erreur zip: ".$result,"zippeur_erreur");
90                        }
91                        else{
92                                //$fichiers++;
93                        }
94        }
95        if ($fichiers !=count($array)){
96                spip_log("$chemin : $fichiers fichiers présents mais ".count($array)." prévus",'zippeur_erreur');
97                return false;           
98        }else{
99                $temps_deux=explode(" ",microtime());
100                spip_log('zipper en '.($temps_deux[1]-$temps_un[1]).'sec avec '.$cmd,'zippeur');
101                return true;
102        }
103}
104
105?>
Note: See TracBrowser for help on using the repository browser.