Ignore:
Timestamp:
Dec 3, 2010, 11:50:00 PM (14 years ago)
Author:
mistic100
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/PHP_Optimisateur/index.php

    r7988 r7991  
    22/***************************************\
    33|                       PHP OPTIMISATEUR                        |
    4 |                          Version 1.0                          |
     4|                          Version 1.1                          |
    55\***************************************/
    66
     
    88$TIME_START = microtime(true);
    99
    10 echo '<?xml version="1.0" encoding="utf-8"?>
    11 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    12         "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    13 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
    14 <head>
    15         <link rel="stylesheet" type="text/css" media="screen" href="files/style.css" />
    16         <title>PHP Optimisateur 1.0</title>
    17 </head>
    18 <body>
    19 <div class="title">PHP Optimisateur 1.0</div>';
    20 
    21 include('config.php');
     10include('files/header.php');
    2211include('files/functions.php');
    2312
    2413
    25 ### Erreurs fatales ###
    26 if (!is_int($DIMhd) || !is_int($DIMnormal) || !is_int($DIMthumbnail) || !is_int($Qhd) || !is_int($Qnormal) || !is_int($Qthumbnail) ||
    27                 !is_bool($silentORNOT) || !is_bool($DIRhighORNOT) || !is_bool($DIMhdORNOT) || !is_bool($renameORNOT) || !is_bool($indexORNOT) || !is_string($prefixe_mini)) {
    28         die('<div class="error">Erreur fatale : Configuration incorrecte. <a href="index.php">Retour</a></div>');
    29 }
    30 
     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}
    3139if (is_dir_empty($DIRsource)) {
    32         die('<div class="error">Erreur fatale : Dossier source vide. <a href="index.php">Retour</a></div>');
    33 }
    34 
     40        die('<div class="error">Erreur fatale : Dossier source vide. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>');
     41}
    3542if ($silentORNOT) {
    36         rrmdir($DIRsortie);
    37         mkdir($DIRsortie);
     43        rrmdir($DIRsortie); // Si mode silencieux
     44        mkdir($DIRsortie); // vidage automatique du dossier de sortie
    3845} else if (!is_dir_empty($DIRsortie)) {
    39         die('<div class="error">Erreur fatale : Dossier de sortie non vide. <a href="index.php">Retour</a></div>');
    40 }
    41 
    42 
    43 if (!$silentORNOT AND isset($_GET['Process'])) {
    44 ### Supprimer les caractères spéciaux - dossiers & fichiers ###
    45 function recursive_delete_special_car($dir) {
    46         $dir = rtrim($dir, '/');
    47         $dh = opendir($dir);
    48        
    49         while (($file = readdir($dh)) !== false ) { //boucle pour parcourir le repertoire
    50                 if ($file !== '.' && $file !== '..') {
    51                         $path = $dir.'/'.$file;
    52                         $new_path = $dir.'/'.delete_special_car($file);
    53                         rename($path, $new_path);
     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);
    5459                       
    55                         if (is_dir($new_path)) { //si on tombe sur un sous-repertoire
    56                                 recursive_delete_special_car($new_path); // appel recursif pour lire a l'interieur de ce sous-repertoire
     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                                }
    5770                        }
    58                 }
    59         }
    60         closedir($dh);
    61 }
    62 
    63 recursive_delete_special_car($DIRsource);
    64 
    65 
    66 
    67 ### Copyright ###
    68 if ($copyONhd) {
    69         $copyHD = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"';
    70 } else {
    71         $copyHD = null;
    72 }
    73 if ($copyONnormal) {
    74         $copyNormal = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"';
    75 } else {
    76         $copyNormal = null;
    77 }
    78 
    79 
    80 
    81 ### Plugins avant execution ###
    82 foreach ($PluginsBefore as $name => $config) {
    83         if ($config['active']) {
    84                 include('plugins/'.$name.'.php');
    85         }
    86 }
    87 
    88 
    89 
    90 ### Processus principal ###
    91 
    92 // Tableau avec les fichiers source
    93 $FilesSource = array();
    94 recursive_readdir($DIRsource, 'FilesSource');
    95 // Tableau avec les fichiers de sortie
    96 $FilesSortie = str_replace($DIRsource, $DIRsortie, $FilesSource);
    97 
    98 for ($i=0; $i<count($FilesSource); $i++) {
    99         // Découpe le nom de fichier : dossier/fichier
    100         preg_match('#(.*)/(.*)$#', $FilesSortie[$i], $matches);
    101         # matches[1] = dossier sortie
    102         # matches[2] = fichier.ext
    103                
    104         // Crée les sous-dossiers de sortie & 'pwg_high' & 'thumbnail'
    105         if (!file_exists($matches[1].'/pwg_high') AND $DIRhighORNOT) {
    106                 mkdir($matches[1].'/pwg_high', 0777, true);
    107         }
    108         if (!file_exists($matches[1].'/thumbnail')) {
    109                 mkdir($matches[1].'/thumbnail', 0777, true);
    110         }
    111                
    112         // Plugins pendant l'execution
    113         foreach ($PluginsProcess as $name => $config) {
     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) {
    11493                if ($config['active']) {
    11594                        include('plugins/'.$name.'.php');
    11695                }
    11796        }
     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
    118192       
    119         // Compresse les fichiers dans le dossier de sortie
    120         if (!isset($BlockNormal)) {
    121                 exec('nconvert.exe -q '.$Qnormal.' -out jpeg -o "'.$matches[1].'/'.$matches[2].'" -dpi 72 -ratio -rtype lanczos -resize '.$DIMnormal.' '.$DIMnormal.' '.$copyNormal.' "'.$FilesSource[$i].'"');
    122         }
    123         if (!isset($BlockThumbnail)) {
    124                 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].'"');
    125         }
    126         if ($DIRhighORNOT AND !isset($BlockHigh)) {
    127                 if ($DIMhdORNOT) {
    128                         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].'"');
    129                 } else {
    130                         copy($FilesSource[$i], $matches[1].'/pwg_high/'.$matches[2]);
    131                 }
    132         }
    133193       
    134         // Réinitialise les bloqueurs
    135         unset($BlockNormal);
    136         unset($BlockThumbnail);
    137         unset($BlockHigh);
    138 
    139 }
    140 
    141 if (!$silentORNOT) {
    142         echo '<div class="files">
    143                 <h2>Fichiers source</h2>
    144                 <ul>';
    145                         foreach ($FilesSource as $value) {
    146                                 echo '<li>'.$value.'</li>';
    147                         }
    148                 echo '</ul>
    149                 <i>'.count($FilesSource).' fichiers</i>
    150         </div>';
    151 }
    152 
    153 unset($FilesSource);
    154 unset($FilesSortie);
    155 
    156 
    157 
    158 ### Supprime les dossiers vides et copie les fichiers index.php ###
    159 // Tableau avec les dossiers de sortie
    160 $DirsSortie = array();
    161 recursive_readdir($DIRsortie, 'DirsSortie', true);
    162 
    163 foreach($DirsSortie as $dir) {
    164         if (is_dir_empty($dir)) {
    165                 rmdir($dir);
    166         } else if ($indexORNOT) {
    167                 copy('files/index.php', $dir.'/index.php');
    168         }
    169 }
    170 
    171 unset($DirsSortie);
    172 
    173 
    174 
    175 ### Plugins après execution ###
    176 foreach ($PluginsAfter as $name => $config) {
    177         if ($config['active']) {
    178                 include('plugins/'.$name.'.php');
    179         }
    180 }
    181 
    182 
    183 
    184 echo '<div class="finish">Opération terminée : '.intval((microtime(true)-$TIME_START)) .' secondes. <a href="index.php">Retour</a></div>';
    185 
    186194} else {
    187 
    188 echo '<div class="finish">Prêt à commencer. <a href="index.php?Process=true">Exécuter</a></div>';
    189 
     195        echo '<div class="finish">Prêt à commencer. <a href="index.php?Process=true">Exécuter</a> <a href="setup.php">Configurer</a></div>';
    190196}
    191197
Note: See TracChangeset for help on using the changeset viewer.