Ignore:
Timestamp:
02/13/11 15:53:51 (9 years ago)
Author:
mistic100
Message:

[tools] PHP Optimisateur :

  • Correction de bugs
  • La plupart des types de fichiers sont supportés (testé avec jpg, png et gif)
  • Réécriture de la gestion des plugins
  • Nouvelle apparence
Location:
extensions/PHP_Optimisateur
Files:
74 added
12 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • extensions/PHP_Optimisateur/config.xml

    r8226 r9201  
    11<?xml version="1.0" encoding="UTF-8"?> 
    22<config> 
    3         <DIRsource>./in/</DIRsource> 
    4         <DIRsortie>./out/</DIRsortie> 
     3        <DIRsource>in/</DIRsource> 
     4        <DIRsortie>out/</DIRsortie> 
    55        <silentORNOT>block</silentORNOT> 
    66        <DIRhighORNOT>true</DIRhighORNOT> 
     
    2121        <copyPOS>bottom-right</copyPOS> 
    2222        <copySIZE>0.05</copySIZE> 
    23         <copyCOLOR>#000000</copyCOLOR> 
     23        <copyCOLOR>000000</copyCOLOR> 
    2424        <copyFONT>Arial</copyFONT> 
    25         <PluginsBefore></PluginsBefore> 
    26         <PluginsProcess></PluginsProcess> 
    27         <PluginsAfter></PluginsAfter> 
     25        <Plugins></Plugins> 
    2826</config> 
  • extensions/PHP_Optimisateur/index.php

    r8226 r9201  
    22/***************************************\ 
    33|                       PHP OPTIMISATEUR                        | 
    4 |                          Version 1.2                          | 
     4|                          Version 1.3                          | 
    55\***************************************/ 
    66 
     7session_start(); 
    78set_time_limit(7200); 
     9 
     10$APPversion = '1.3'; 
    811$TIME_START = microtime(true); 
     12$ERRORS = array(); 
     13$CONF = array(); 
     14$PAGE_CONTENT = array(0=>null,1=>null,2=>null); 
    915 
    10 include('files/functions.php'); 
    11 include('files/header.php'); 
     16include('include/functions.php'); 
     17$PAGE = (isset($_GET['page'])) ? $_GET['page'] : 'home'; 
    1218 
    1319 
    1420 
    15 ### DEMARRAGE ### 
    16 // Fichier de configuration 
     21### CONFIGURATION ### 
    1722if (!file_exists('config.xml')) { 
    18         $Errors['ErrorFile'] = true; 
     23        $ERRORS['fatal']['ErrorConfigFile'] = true; 
     24} else { 
     25        $CONF = load_config('config.xml'); 
     26} 
     27 
     28if (!file_exists('include/nconvert.exe')) { 
     29        $ERRORS['fatal']['ErrorNconvert'] = true; 
     30} 
     31 
     32 
     33 
     34### HEADER ### 
     35$CONF = array_merge($CONF, GetLanguage()); 
     36include('language/'.$CONF['user_lang'].'/'.$CONF['user_lang'].'.php'); 
     37include('include/header.php'); 
     38 
     39 
     40 
     41### VERIFICATIONS ### 
     42if ($PAGE == 'home') { 
     43        if (!isset($ERRORS['fatal'])) { 
     44                if (!file_exists($CONF['DIRsource'])) { 
     45                        mkdir($CONF['DIRsource']); 
     46                } 
     47                if (!file_exists($CONF['DIRsortie'])) { 
     48                        mkdir($CONF['DIRsortie']); 
     49                } 
     50                if (is_dir_empty($CONF['DIRsource'])) { 
     51                        $ERRORS['ErrorFolderIn'] = 'fatal'; 
     52                } 
     53                if ($CONF['silentORNOT'] == 'block' AND !is_dir_empty($CONF['DIRsortie'])) { 
     54                        $ERRORS['fatal']['ErrorFolderOut'] = true; 
     55                } else if ($CONF['silentORNOT'] == 'erase' AND !is_dir_empty($CONF['DIRsortie'])) { 
     56                        $ERRORS['notice']['EraseFolderOut'] = true; 
     57                } 
     58        } 
    1959         
    20 } else { 
    21         // Configuration 
    22         extract(load_config()); 
    23  
    24         // Afficher la configuration 
    25         include('files/display_config.php'); 
    26  
    27         // Dossiers 
    28         if (!file_exists($DIRsource)) { 
    29                 mkdir($DIRsource); 
     60} else if ($PAGE == 'setup') { 
     61        if (isset($_GET['ErrorConfig'])) { 
     62                $ERRORS['notice']['ErrorConfig'] = true; 
    3063        } 
    31         if (!file_exists($DIRsortie)) { 
    32                 mkdir($DIRsortie); 
     64        if (isset($_POST['DIRsource'])) { 
     65                include('include/save_config.php'); 
    3366        } 
    34         if (is_dir_empty($DIRsource)) { 
    35                 $Errors['ErrorFolderIn'] = true; 
    36         } 
    37         if (!is_dir_empty($DIRsortie) AND $silentORNOT == 'block') { 
    38                 $Errors['ErrorFolderOut'] = true; 
    39         } 
    40         if (!file_exists('files\nconvert.exe')) { 
    41                 $Errors['ErrorNconvert'] = true; 
    42         } 
     67         
     68} else if ($PAGE = 'process') { 
     69        include('include/main.php'); 
    4370} 
    4471 
     
    4673 
    4774### ERREURS ### 
    48 if (isset($Errors)) { 
    49         foreach ($Errors as $key => $null) { 
    50                 echo '<div class="error">'.l10n($key).'</div>'; 
    51         } 
    52         echo '<div class="link"><a href="index.php">&raquo; '.l10n('Back').'</a> <a href="setup.php">&raquo; '.l10n('Config').'</a></div>'; 
     75if (isset($ERRORS['fatal'])) { 
     76        $PAGE_CONTENT[1] .= '<div class="generic error">'; 
     77                foreach ($ERRORS['fatal'] as $key => $i) { 
     78                        $PAGE_CONTENT[1] .= '<div>'.l10n('fatal.'.$key).'</div>'; 
     79                } 
     80        $PAGE_CONTENT[1] .= '</div>'; 
     81} 
     82if (isset($ERRORS['notice'])) { 
     83        $PAGE_CONTENT[1] .= '<div class="generic notice">'; 
     84                foreach ($ERRORS['notice'] as $key => $i) { 
     85                        $PAGE_CONTENT[1] .= '<div>'.l10n('notice.'.$key).'</div>'; 
     86                } 
     87        $PAGE_CONTENT[1] .= '</div>'; 
    5388} 
    5489 
    5590 
    5691 
    57 ### EXECUTION ### 
    58 if (isset($_GET['Process']) AND !isset($Errors)) { 
    59         // Si mode silencieux vidage automatique du dossier de sortie 
    60         if ($silentORNOT == 'erase') { 
    61                 rrmdir($DIRsortie); 
    62                 mkdir($DIRsortie); 
    63         } 
     92### AFFICHAGE ### 
     93if ($PAGE == 'home') { 
     94        if (isset($ERRORS['fatal'])) { 
     95                $PAGE_CONTENT[2] .= '<div class="generic link"><a class="input-submit" href="index.php">'.l10n('Back').'</a> <a class="input-submit" href="index.php?page=setup">'.l10n('Config').'</a></div>'; 
    6496 
    65          
    66         ### Supprimer les caractères spéciaux - dossiers & fichiers ### 
    67         // Les caractères '%' et '$' sont systématiquement échappés, ca génère des bugs dans les noms de fichiers 
    68         function recursive_delete_special_car($dir) { 
    69                 $dir = rtrim($dir, '/'); 
    70                 $dh = opendir($dir); 
     97        } else { 
     98                include('include/display_config.php'); 
    7199                 
    72                 while (($file = readdir($dh)) !== false ) { 
    73                         if ($file !== '.' && $file !== '..') { 
    74                                 $path = $dir.'/'.$file; 
    75                                 $new_path = $dir.'/'.delete_special_car($file); 
    76                                 rename($path, $new_path); 
    77                                  
    78                                 if (is_dir($new_path)) { 
    79                                         recursive_delete_special_car($new_path); 
    80                                 } 
    81                         } 
    82                 } 
    83                 closedir($dh); 
    84         } 
    85  
    86         recursive_delete_special_car($DIRsource); 
    87  
    88  
    89         ### Copyright & Options générales des conversion ### 
    90         $copyright = utf8_decode($copyright); 
    91         $copyCOLOR = hex2RGB(substr($copyCOLOR,1), true, ' '); 
    92          
    93         if ($copyONhd) { 
    94                 $copyHD = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"'; 
    95         } else { 
    96                 $copyHD = null; 
     100                $PAGE_CONTENT[2] .= '<div class="generic finish"> 
     101                        <span id="ready-text">'.l10n('Ready').'</span> 
     102                        <span id="loader"><img src="template/favicon.png" alt="PHP OPT"/></span> 
     103                </div> 
     104                <div class="generic link"> 
     105                        <a class="input-submit" href="index.php?page=process" onclick="Load();">'.l10n('Launch').'</a> 
     106                        <a class="input-submit" href="index.php?page=setup">'.l10n('Config').'</a> 
     107                </div>'; 
    97108        } 
    98109         
    99         if ($copyONnormal) { 
    100                 $copyNormal = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"'; 
     110} else if ($PAGE == 'setup') { 
     111        if (isset($ERRORS['fatal'])) { 
     112                $PAGE_CONTENT[2] .= '<div class="generic link"><a class="input-submit" href="index.php">'.l10n('Back').'</a></div>'; 
     113 
    101114        } else { 
    102                 $copyNormal = null; 
     115                include('include/setup.php'); 
    103116        } 
    104117         
    105         $convOptions = '-ratio -rtype lanczos -rflag decr'; 
    106  
    107  
    108         ### Plugins avant execution ### 
    109         foreach ($PluginsBefore as $name => $config) { 
    110                 if ($config['active']) { 
    111                         include('plugins/'.$name.'.php'); 
    112                 } 
    113         } 
    114  
    115  
    116         ### Processus principal ### 
    117         // Tableau avec les fichiers source 
    118         $FilesSource = array(); 
    119         recursive_readdir($DIRsource, 'FilesSource'); 
    120          
    121         // Tableau avec les fichiers de sortie 
    122         $FilesSortie = str_replace($DIRsource, $DIRsortie, $FilesSource); 
    123  
    124         // Boucle sur tous les fichiers 
    125         for ($i=0; $i<count($FilesSource); $i++) { 
    126                 // Découpe le nom de fichier : dossier/fichier 
    127                 preg_match('#(.*)/(.*)$#', $FilesSortie[$i], $matches); 
    128                 $FileFolder = $matches[1]; // dossier de sortie 
    129                 $FileName = $matches[2]; // nom+ext fichier 
    130                          
    131                 // Crée les sous-dossiers de sortie & 'pwg_high' & 'thumbnail' 
    132                 if (!file_exists($FileFolder.'/pwg_high') AND $DIRhighORNOT) { 
    133                         mkdir($FileFolder.'/pwg_high', 0777, true); 
    134                 } 
    135                 if (!file_exists($FileFolder.'/thumbnail')) { 
    136                         mkdir($FileFolder.'/thumbnail', 0777, true); 
    137                 } 
    138                  
    139                 // Informations sur le fichier 
    140                 exec('files\nconvert.exe -info "'.$FilesSource[$i].'"', $FileInfos); 
    141                 for ($m=0; $m<=5; $m++) { 
    142                         unset($FileInfos[$m]); 
    143                 } 
    144                 foreach ($FileInfos as $key) { 
    145                         $a = explode(':', $key); 
    146                         $FileInfos[trim($a[0])] = trim($a[1]); 
    147                 } 
    148                          
    149                 // Plugins pendant l'execution 
    150                 foreach ($PluginsProcess as $name => $config) { 
    151                         if ($config['active']) { 
    152                                 include('plugins/'.$name.'.php'); 
    153                         } 
    154                 } 
    155                  
    156                 // Compresse les fichiers dans le dossier de sortie 
    157                 if (!isset($BlockNormal)) {  
    158                         exec('files\nconvert.exe -q '.$Qnormal.' -out jpeg -o "'.$FileFolder.'/'.$FileName.'" -dpi 72 '.$convOptions.' -resize '.$DIMnormal.' '.$DIMnormal.' '.$copyNormal.' "'.$FilesSource[$i].'"'); 
    159                 } 
    160                 if (!isset($BlockThumbnail)) {  
    161                         exec('files\nconvert.exe -q '.$Qthumbnail.' -out jpeg -o "'.$FileFolder.'/thumbnail/'.$prefixe_mini.$FileName.'" -dpi 72 '.$convOptions.' -resize '.$DIMthumbnail.' '.$DIMthumbnail.' -rmeta -rexifthumb "'.$FilesSource[$i].'"'); 
    162                 } 
    163                 if (!isset($BlockHigh) AND $DIRhighORNOT) { 
    164                         if ($DIMhdORNOT) { 
    165                                 exec('files\nconvert.exe -q '.$Qhd.' -out jpeg -o "'.$FileFolder.'/pwg_high/'.$FileName.'" -dpi '.$DPI.' '.$convOptions.' -resize '.$DIMhd.' '.$DIMhd.' '.$copyHD.' "'.$FilesSource[$i].'"'); 
    166                         } else { 
    167                                 copy($FilesSource[$i], $FileFolder.'/pwg_high/'.$FileName); 
    168                         } 
    169                 } 
    170                  
    171                 // Réinitialise les bloqueurs 
    172                 unset($FileInfos); 
    173                 unset($BlockNormal); 
    174                 unset($BlockThumbnail); 
    175                 unset($BlockHigh); 
    176         } 
    177  
    178          
     118} else if ($PAGE = 'process') { 
    179119        ### Affichage des fichiers traités ### 
    180         echo '<div class="files"> 
     120        $PAGE_CONTENT[0] .= '<div class="generic files"> 
    181121                <h2>'.l10n('Source files').'</h2> 
    182122                <ul>'; 
    183123                        foreach ($FilesSource as $value) { 
    184                                 echo '<li>'.$value.'</li>'; 
     124                                $PAGE_CONTENT[0] .= '<li>'.$value.'</li>'; 
    185125                        } 
    186                 echo '</ul> 
     126                $PAGE_CONTENT[0] .= '</ul> 
    187127                <i>'.l10n('%d files', count($FilesSource)).'</i> 
    188128        </div>'; 
     
    190130        unset($FilesSource); 
    191131        unset($FilesSortie); 
    192  
    193  
    194         ### Supprime les dossiers vides et copie les fichiers index.php ### 
    195         $DirsSortie = array(); 
    196         recursive_readdir($DIRsortie, 'DirsSortie', true); 
    197  
    198         foreach($DirsSortie as $dir) { 
    199                 if (is_dir_empty($dir)) { 
    200                         rmdir($dir); 
    201                 } else if ($indexORNOT) { 
    202                         copy('files/index.php', $dir.'/index.php'); 
    203                 } 
    204         } 
    205  
    206         unset($DirsSortie); 
    207  
    208  
    209         ### Plugins après execution ### 
    210         foreach ($PluginsAfter as $name => $config) { 
    211                 if ($config['active']) { 
    212                         include('plugins/'.$name.'.php'); 
    213                 } 
    214         } 
    215  
    216  
    217         ### Message final ### 
    218         echo '<div class="finish">'.l10n('Finish %d seconds', intval((microtime(true)-$TIME_START))).'</div> 
    219         <div class="link"><a href="index.php">&raquo; '.l10n('Back').'</a> <a href="setup.php">&raquo; '.l10n('Config').'</a></div>'; 
    220  
    221132         
    222          
    223 ### READY ### 
    224 } else if (!isset($Errors)) { 
    225         echo '<div class="finish">'.l10n('Ready').' <span id="loader" style="display:none;float:right;margin:-8px 0 -10px 0;"><img src="files/loader.gif" /></span></div> 
    226         <div class="link"><a href="index.php?Process=true" onClick="document.getElementById(\'loader\').style.display=\'block\';">&raquo; '.l10n('Launch').'</a> <a href="setup.php">&raquo; '.l10n('Config').'</a></div>'; 
     133        $PAGE_CONTENT[2] .= '<div class="generic finish">'.l10n('Finish %d seconds', intval((microtime(true)-$TIME_START))).'</div> 
     134        <div class="generic link"> 
     135                <a class="input-submit" href="index.php">'.l10n('Back').'</a> 
     136                <a class="input-submit" href="index.php?page=setup">'.l10n('Config').'</a> 
     137        </div>'; 
    227138} 
    228139 
    229140 
     141### FIN ### 
     142echo $PAGE_CONTENT[0]; 
     143echo $PAGE_CONTENT[1]; 
     144echo $PAGE_CONTENT[2]; 
    230145 
    231 ### FIN ### 
    232 echo '<div class="footer"> 
     146echo '<div class="generic footer"> 
    233147        2010 - <a href="http://www.strangeplanet.fr">Damien Sorel</a> - <a href="http://fr.piwigo.org/forum/viewtopic.php?id=19117">Forum</a> 
    234148</div> 
  • extensions/PHP_Optimisateur/language/en/en.php

    r8226 r9201  
    11<?php 
    2 /***************************************\ 
    3 |                       PHP OPTIMISATEUR                        | 
    4 |                          Version 1.2                          | 
    5 \***************************************/ 
    6  
    72$Lang['ErrorFile'] = "Fatal error : Configuration file missing."; 
    83$Lang['ErrorFolderIn'] = "Fatal error : Input folder empty."; 
    94$Lang['ErrorFolderOut'] = "Fatal error : Output folder not empty."; 
    10 $Lang['ErrorNconvert'] = "The program nconvert.exe is not found."; 
     5$Lang['ErrorNconvert'] = "Fatal error : The program <i>nconvert.exe</i> is not found."; 
     6$Lang['ErrorConfig'] = "Some configuration errors have been fixed, please check your parameters."; 
    117$Lang['Source files'] = "Handled files"; 
    128$Lang['%d files'] = "%d files"; 
    139$Lang['Finish %d seconds'] = "Process done : %d seconds."; 
    1410$Lang['Ready'] = "Ready to launch."; 
     11$Lang['Processing'] = "Processing."; 
    1512$Lang['Launch'] = "Launch"; 
    1613$Lang['Config'] = "Configure"; 
     
    4643$Lang['copyFONT'] = "Font"; 
    4744$Lang['Plugins'] = "Plugins"; 
    48 $Lang['PluginsBefore'] = "Plugins pre-processing"; 
    49 $Lang['PluginsProcess'] = "Plugins processing"; 
    50 $Lang['PluginsAfter'] = "Plugins post-processing"; 
    5145$Lang['yes'] = "yes"; 
    5246$Lang['no'] = "no"; 
     
    6357$Lang['Reset'] = "Reset"; 
    6458$Lang['Valid'] = "Validate"; 
     59$Lang['Active'] = "Active"; 
     60$Lang['Inactive'] = "Inactive"; 
    6561?> 
  • extensions/PHP_Optimisateur/language/fr/fr.php

    r8226 r9201  
    11<?php 
    2 /***************************************\ 
    3 |                       PHP OPTIMISATEUR                        | 
    4 |                          Version 1.2                          | 
    5 \***************************************/ 
    6  
    7 $Lang['ErrorFile'] = "Erreur fatale : Fichier de configuration introuvable."; 
    8 $Lang['ErrorFolderIn'] = "Erreur fatale : Dossier source vide."; 
    9 $Lang['ErrorFolderOut'] = "Erreur fatale : Dossier de sortie non vide."; 
    10 $Lang['ErrorNconvert'] = "Le programme nconvert.exe est introuvable."; 
     2$Lang['fatal.ErrorConfigFile'] = "Erreur fatale : Fichier de configuration introuvable."; 
     3$Lang['fatal.ErrorFolderIn'] = "Erreur fatale : Dossier source vide."; 
     4$Lang['fatal.ErrorFolderOut'] = "Erreur fatale : Dossier de sortie non vide."; 
     5$Lang['fatal.ErrorNconvert'] = "Erreur fatale : Le programme <i>nconvert.exe</i> est introuvable."; 
     6$Lang['fatal.ErrorConfig'] = "Erreur fatale : Configuration incorrecte."; 
     7$Lang['notice.EraseFolderOut'] = "Attention : Le dossier de sortie va être entièrement vidé."; 
     8$Lang['notice.ErrorConfig'] = "Des erreurs de configuration ont été corrigées, veuillez vérifier les réglages."; 
    119$Lang['Source files'] = "Fichiers traités"; 
    1210$Lang['%d files'] = "%d fichiers"; 
    1311$Lang['Finish %d seconds'] = "Opération terminée : %d secondes."; 
    1412$Lang['Ready'] = "Prêt à commencer."; 
     13$Lang['Processing'] = "En cours de traitement."; 
    1514$Lang['Launch'] = "Exécuter"; 
    1615$Lang['Config'] = "Configurer"; 
     
    4645$Lang['copyFONT'] = "Police"; 
    4746$Lang['Plugins'] = "Plugins"; 
    48 $Lang['PluginsBefore'] = "Plugins pré-processing"; 
    49 $Lang['PluginsProcess'] = "Plugins processing"; 
    50 $Lang['PluginsAfter'] = "Plugins post-processing"; 
    5147$Lang['yes'] = "oui"; 
    5248$Lang['no'] = "non"; 
     
    6359$Lang['Reset'] = "Réinitialiser"; 
    6460$Lang['Valid'] = "Valider"; 
     61$Lang['Active'] = "Activé"; 
     62$Lang['Inactive'] = "Désactivé"; 
    6563?> 
Note: See TracChangeset for help on using the changeset viewer.