Changeset 9201


Ignore:
Timestamp:
Feb 13, 2011, 3:53:51 PM (13 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.