source: extensions/PHP_Optimisateur/index.php @ 7991

Revision 7991, 5.7 KB checked in by mistic100, 9 years ago (diff)

PHP Optimisateur :
configuration via formulaire
installation semi-automatique des plugins

Line 
1<?php
2/***************************************\
3|                       PHP OPTIMISATEUR                        |
4|                          Version 1.1                          |
5\***************************************/
6
7set_time_limit(3600);
8$TIME_START = microtime(true);
9
10include('files/header.php');
11include('files/functions.php');
12
13
14
15### DEMARRAGE ###
16// Fichier de configuration
17if (!file_exists('config.xml')) {
18        die('<div class="error">Erreur fatale : Fichier de configuration introuvable. <a href="index.php">Retour</a></div>');
19}
20
21// Configuration
22$config = simplexml_load_file('config.xml');
23$config = XMLParse($config);
24$config = array_settype($config);
25extract($config);
26
27// Afficher la configuration
28if (!$silentORNOT) {
29        include('files/display_config.php');
30}
31
32// Dossiers
33if (!file_exists($DIRsource)) {
34        mkdir($DIRsource);
35}
36if (!file_exists($DIRsortie)) {
37        mkdir($DIRsortie);
38}
39if (is_dir_empty($DIRsource)) {
40        die('<div class="error">Erreur fatale : Dossier source vide. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>');
41}
42if ($silentORNOT) {
43        rrmdir($DIRsortie); // Si mode silencieux
44        mkdir($DIRsortie); // vidage automatique du dossier de sortie
45} else if (!is_dir_empty($DIRsortie)) {
46        die('<div class="error">Erreur fatale : Dossier de sortie non vide. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>');
47}
48
49
50
51### EXECUTION ###
52if (isset($_GET['Process'])) {
53
54        ### Supprimer les caractères spéciaux - dossiers & fichiers ###
55        if ($renameORNOT) {
56                function recursive_delete_special_car($dir) {
57                        $dir = rtrim($dir, '/');
58                        $dh = opendir($dir);
59                       
60                        while (($file = readdir($dh)) !== false ) {
61                                if ($file !== '.' && $file !== '..') {
62                                        $path = $dir.'/'.$file;
63                                        $new_path = $dir.'/'.delete_special_car($file);
64                                        rename($path, $new_path);
65                                       
66                                        if (is_dir($new_path)) {
67                                                recursive_delete_special_car($new_path);
68                                        }
69                                }
70                        }
71                        closedir($dh);
72                }
73
74                recursive_delete_special_car($DIRsource);
75        }
76
77
78        ### Copyright ###
79        if ($copyONhd) {
80                $copyHD = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"';
81        } else {
82                $copyHD = null;
83        }
84        if ($copyONnormal) {
85                $copyNormal = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"';
86        } else {
87                $copyNormal = null;
88        }
89
90
91        ### Plugins avant execution ###
92        foreach ($PluginsBefore as $name => $config) {
93                if ($config['active']) {
94                        include('plugins/'.$name.'.php');
95                }
96        }
97
98
99        ### Processus principal ###
100
101        // Tableau avec les fichiers source
102        $FilesSource = array();
103        recursive_readdir($DIRsource, 'FilesSource');
104        // Tableau avec les fichiers de sortie
105        $FilesSortie = str_replace($DIRsource, $DIRsortie, $FilesSource);
106
107        for ($i=0; $i<count($FilesSource); $i++) {
108                // Découpe le nom de fichier : dossier/fichier
109                preg_match('#(.*)/(.*)$#', $FilesSortie[$i], $matches);
110                # matches[1] = dossier sortie
111                # matches[2] = fichier.ext
112                       
113                // Crée les sous-dossiers de sortie & 'pwg_high' & 'thumbnail'
114                if (!file_exists($matches[1].'/pwg_high') AND $DIRhighORNOT) {
115                        mkdir($matches[1].'/pwg_high', 0777, true);
116                }
117                if (!file_exists($matches[1].'/thumbnail')) {
118                        mkdir($matches[1].'/thumbnail', 0777, true);
119                }
120                       
121                // Plugins pendant l'execution
122                foreach ($PluginsProcess as $name => $config) {
123                        if ($config['active']) {
124                                include('plugins/'.$name.'.php');
125                        }
126                }
127               
128                // Compresse les fichiers dans le dossier de sortie
129                if (!isset($BlockNormal)) { 
130                        exec('nconvert.exe -q '.$Qnormal.' -out jpeg -o "'.$matches[1].'/'.$matches[2].'" -dpi 72 -ratio -rtype lanczos -resize '.$DIMnormal.' '.$DIMnormal.' '.$copyNormal.' "'.$FilesSource[$i].'"');
131                }
132                if (!isset($BlockThumbnail)) { 
133                        exec('nconvert.exe -q '.$Qthumbnail.' -out jpeg -o "'.$matches[1].'/thumbnail/'.$prefixe_mini.$matches[2].'" -dpi 72 -ratio -rtype lanczos -rflag decr -resize '.$DIMthumbnail.' '.$DIMthumbnail.' -rmeta -rexifthumb   "'.$FilesSource[$i].'"');
134                }
135                if ($DIRhighORNOT AND !isset($BlockHigh)) {
136                        if ($DIMhdORNOT) {
137                                exec('nconvert.exe -q '.$Qhd.' -out jpeg -o "'.$matches[1].'/pwg_high/'.$matches[2].'" -dpi '.$DPI.' -ratio -rtype lanczos -rflag decr -resize '.$DIMhd.' '.$DIMhd.' '.$copyHD.' "'.$FilesSource[$i].'"');
138                        } else {
139                                copy($FilesSource[$i], $matches[1].'/pwg_high/'.$matches[2]);
140                        }
141                }
142               
143                // Réinitialise les bloqueurs
144                unset($BlockNormal);
145                unset($BlockThumbnail);
146                unset($BlockHigh);
147
148        }
149
150        if (!$silentORNOT) {
151                echo '<div class="files">
152                        <h2>Fichiers source</h2>
153                        <ul>';
154                                foreach ($FilesSource as $value) {
155                                        echo '<li>'.$value.'</li>';
156                                }
157                        echo '</ul>
158                        <i>'.count($FilesSource).' fichiers</i>
159                </div>';
160        }
161
162        unset($FilesSource);
163        unset($FilesSortie);
164
165
166        ### Supprime les dossiers vides et copie les fichiers index.php ###
167        // Tableau avec les dossiers de sortie
168        $DirsSortie = array();
169        recursive_readdir($DIRsortie, 'DirsSortie', true);
170
171        foreach($DirsSortie as $dir) {
172                if (is_dir_empty($dir)) {
173                        rmdir($dir);
174                } else if ($indexORNOT) {
175                        copy('files/index.php', $dir.'/index.php');
176                }
177        }
178
179        unset($DirsSortie);
180
181
182        ### Plugins après execution ###
183        foreach ($PluginsAfter as $name => $config) {
184                if ($config['active']) {
185                        include('plugins/'.$name.'.php');
186                }
187        }
188
189
190        echo '<div class="finish">Opération terminée : '.intval((microtime(true)-$TIME_START)) .' secondes. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>';
191
192       
193       
194} else {
195        echo '<div class="finish">Prêt à commencer. <a href="index.php?Process=true">Exécuter</a> <a href="setup.php">Configurer</a></div>';
196}
197
198echo '</body>
199</html>';
200?>
Note: See TracBrowser for help on using the repository browser.