Changeset 14854


Ignore:
Timestamp:
May 8, 2012, 4:18:51 PM (12 years ago)
Author:
Eric
Message:

Fist 1.0.0 release

Location:
extensions/Prune_History
Files:
1 added
9 edited

Legend:

Unmodified
Added
Removed
  • extensions/Prune_History/admin/PH_admin.php

    r14838 r14854  
    1818$page['global'] = array();
    1919$range = array();
     20$dump_download = '';
    2021
    21 // +-----------------------------------------------------------------------+
    22 // |                      Getting plugin version                           |
    23 // +-----------------------------------------------------------------------+
     22
     23// +-------------------------------------------------------------------+
     24// |                      Get plugin version and name                  |
     25// +-------------------------------------------------------------------+
    2426$plugin =  PHInfos(PH_PATH);
    2527$version = $plugin['version'];
     
    4547}
    4648
     49
     50// +--------------------------------------------------------------------+
     51// |                     Saving history tables                          |
     52// +--------------------------------------------------------------------+
     53if (isset($_POST['save']))
     54{
     55  $dump_download = (isset($_POST['dump_download'])) ? 'true' : 'false';
     56   
     57  if(PH_dump($dump_download) and $dump_download == 'false')
     58  {
     59    array_push($page['infos'], l10n('PH_Dump_OK'));
     60  }
     61  else
     62  {
     63    array_push($page['errors'], l10n('PH_Dump_NOK'));
     64  }
     65}
     66
     67
     68// +--------------------------------------------------------------------+
     69// |             Restoring backed up history tables                     |
     70// +--------------------------------------------------------------------+
     71if (isset($_POST['restore']))
     72{
     73  $Backup_File = PH_PATH.'/include/backup/PH_Historybackup.sql';
     74
     75  if (file_exists($Backup_File) and $file = file($Backup_File, FILE_IGNORE_NEW_LINES) and !empty($file))
     76  {
     77    // Check backup file version
     78    // -------------------------
     79    if ($file[0] == "-- ".$version." --")
     80    {
     81      $restore = PH_Restore_backup_file();
     82      if(empty($restore))
     83      {
     84        array_push($page['infos'], l10n('PH_Restoration_OK'));
     85      }
     86      else
     87      {
     88        array_push($page['errors'], l10n('PH_Restoration_NOK'));
     89      }
     90    }
     91    else array_push($page['errors'], l10n('PH_Bad_version_backup'));
     92  }
     93  else
     94  {
     95    array_push($page['errors'], l10n('PH_No_Backup_File'));
     96  }
     97}
     98
     99
     100// +--------------------------------------------------------------------+
     101// |                      Manual prune settings                         |
     102// +--------------------------------------------------------------------+
    47103$conf_PH = unserialize($conf['PruneHistory']);
    48104
     
    87143}
    88144
     145
    89146// +-----------------------------------------------------------------------+
    90147// |                           templates init                              |
     
    104161    'PH_NAME'                    => $name,
    105162    'PH_VERSION'                 => $version,
     163    'PH_DUMP_DOWNLOAD'           => $dump_download,
    106164                'PH_AUTOPRUNE_TRUE'          => $conf_PH[1]=='true' ? 'checked="checked"' : '' ,
    107165                'PH_AUTOPRUNE_FALSE'         => $conf_PH[1]=='false' ? 'checked="checked"' : '' ,
     
    119177);
    120178
     179
    121180// +-----------------------------------------------------------------------+
    122181// |                           templates display                           |
  • extensions/Prune_History/admin/template/PH_admin.tpl

    r14838 r14854  
    2626</div>
    2727
    28 <fieldset>
     28<fieldset class="save">
    2929  <ul>
    3030    <li>
     
    3232        {'PH_ManualPrune_title'|@translate}
    3333      </label>
     34
     35      <fieldset class="save">
     36      <div style="text-align: center; text-transform: uppercase;">
     37      <label class="cluetip" title="{'PH_Save_Title'|translate}|{'PH_Save_Title_d'|translate}">
     38        {'PH_Save_Title'|@translate}
     39      </label>
     40      </div>
     41      <form method="post" action="" class="general">
     42        <p>
     43          {'PH_Dump_Download'|@translate}&nbsp;
     44            <input type="checkbox" name="dump_download" value="true" {$PH_DUMP_DOWNLOAD}><br><br>
     45            <input class="submit" type="submit" value="{'PH_Save'|@translate}" name="save" {$TAG_INPUT_ENABLED}>
     46        </p>
     47      </form>
     48      <br>
     49      <form method="post" action="" class="general">
     50        <p>
     51          {'PH_Restore'|@translate}<br><br>
     52            <input class="submit" type="submit" value="{'PH_Restore_File'|@translate}" name="restore" {$TAG_INPUT_ENABLED}>
     53        </p>
     54      </form>
     55      </fieldset>
     56
    3457      <br><br>
    3558      <form method="post" name="prune" action="" class="general">
     
    77100          </li>
    78101        </ul>
     102
    79103        <p>
    80104          <input class="submit" type="submit" value="{'PH_Prune'|@translate}" name="prune" {$TAG_INPUT_ENABLED}>
     
    132156  jQuery('#theAdminPage #the_page').addClass('{$themeconf.name}');
    133157        jQuery(".infos").fadeOut(800).fadeIn(1200).fadeOut(400).fadeIn(800).fadeOut(400);
    134         jQuery(".errors").fadeOut(200).fadeIn(200).fadeOut(300).fadeIn(300).fadeOut(400).fadeIn(400);
     158        jQuery(".errors").fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400);
    135159});
    136160</script>
  • extensions/Prune_History/admin/template/ph.css

    r14838 r14854  
    1515    margin-bottom: 0.5em;
    1616}
     17
     18.save P, .save FIELDSET {
     19    display: block;
     20    float: right;
     21    margin-left: 1em;
     22    padding-bottom: 0;
     23    padding-left: 0;
     24    padding-right: 0;
     25    padding-top: 0;
     26}
  • extensions/Prune_History/include/functions.inc.php

    r14838 r14854  
    11<?php
    2 /* Function called from main.inc.php to get the plugin version and name */
     2/**
     3 * Plugin administration menu
     4 */
     5function PH_admin_menu($menu)
     6{
     7  // Retreive plugin name
     8  $plugin =  PHInfos(PH_PATH);
     9  $name = $plugin['name'];
     10 
     11  array_push($menu,
     12    array(
     13      'NAME' => $name,
     14      'URL' => get_root_url().'admin.php?page=plugin-'.basename(PH_PATH)
     15    )
     16  );
     17
     18  return $menu;
     19}
     20
     21
     22/**
     23 * Function to retreive some plugin information like version and name
     24 * stored in main.inc.php file
     25 *
     26 * @param : Path to plugin
     27 *
     28 * @return : Array of retreived information
     29 */
    330function PHInfos($dir)
    431{
     
    4673
    4774
    48 /* *************************************** */
    49 /* Update plugin version in conf table     */
    50 /* Used everytime a new version is updated */
    51 /* even if no database upgrade is needed   */
    52 /* *************************************** */
     75/**
     76 * Function to update plugin version number in config table
     77 * Used everytime a new version is updated even if no database
     78 * upgrade is needed
     79 */
    5380function PH_version_update()
    5481{
     
    190217
    191218/**
    192  * Automatic prune function
    193  *
    194  * @param : Start and stop range to prune
    195  *
    196  * @return : boolean
     219 * Automatic prune function called from 'login_success' trigger
     220 * in main.inc.php file
     221 *
    197222 */
    198223function history_autoprune()
     
    236261}
    237262
     263
     264/**
     265 * PH specific database dump
     266 * Creates an SQL dump of history table for safety before manual prune
     267 *
     268 * @returns  : Boolean to manage appropriate message display
     269 *
     270 */
     271function PH_dump($download)
     272{
     273  global $conf;
     274
     275  $plugin =  PluginInfos(PH_PATH);
     276  $version = $plugin['version'];
     277
     278  // Initial backup folder creation and file initialisation
     279  // ------------------------------------------------------
     280  if (!is_dir(PH_PATH.'/include/backup'))
     281    mkdir(PH_PATH.'/include/backup');
     282
     283  $Backup_File = PH_PATH.'/include/backup/PH_Historybackup.sql';
     284
     285  $fp = fopen($Backup_File, 'w');
     286
     287  // Writing plugin version
     288  $insertions = "-- ".$version." --\n\n";
     289  fwrite($fp, $insertions);
     290
     291  // Saving History table
     292  // --------------------
     293  $ListTables = array(HISTORY_TABLE);
     294  $j=0;
     295 
     296  while($j < count($ListTables))
     297  {
     298    $sql = 'SHOW CREATE TABLE '.$ListTables[$j];
     299    $res = pwg_query($sql);
     300
     301    if ($res)
     302    {
     303      $insertions = "-- -------------------------------------------------------\n";
     304      $insertions .= "-- Create ".$ListTables[$j]." table\n";
     305      $insertions .= "-- ------------------------------------------------------\n\n";
     306
     307      $insertions .= "DROP TABLE IF EXISTS ".$ListTables[$j].";\n\n";
     308
     309      $array = mysql_fetch_array($res);
     310      $array[1] .= ";\n\n";
     311      $insertions .= $array[1];
     312
     313      $req_table = pwg_query('SELECT * FROM '.$ListTables[$j]) or die(mysql_error());
     314      $nb_fields = mysql_num_fields($req_table);
     315      while ($line = mysql_fetch_array($req_table))
     316      {
     317        $insertions .= 'INSERT INTO '.$ListTables[$j].' VALUES (';
     318        for ($i=0; $i<$nb_fields; $i++)
     319        {
     320          $insertions .= '\'' . pwg_db_real_escape_string($line[$i]) . '\', ';
     321        }
     322        $insertions = substr($insertions, 0, -2);
     323        $insertions .= ");\n";
     324      }
     325      $insertions .= "\n\n";
     326    }
     327
     328    fwrite($fp, $insertions);   
     329    $j++;
     330  }
     331
     332  fclose($fp);
     333
     334  // Download generated dump file
     335  // ----------------------------
     336  if ($download == 'true')
     337  {
     338    if (@filesize($Backup_File))
     339    {
     340      $http_headers = array(
     341        'Content-Length: '.@filesize($Backup_File),
     342        'Content-Type: text/x-sql',
     343        'Content-Disposition: attachment; filename="PH_Historybackup.sql";',
     344        'Content-Transfer-Encoding: binary',
     345        );
     346
     347      foreach ($http_headers as $header)
     348      {
     349        header($header);
     350      }
     351
     352      @readfile($Backup_File);
     353      exit();
     354    }
     355  }
     356
     357  return true;
     358}
     359
     360
     361/**
     362 * PH_Restore_backup_file
     363 * Restore backup history table
     364 *
     365 * @returns : Boolean
     366 */
     367function PH_Restore_backup_file()
     368{
     369  global $prefixeTable, $dblayer, $conf;
     370 
     371  define('DEFAULT_PREFIX_TABLE', 'piwigo_');
     372 
     373  $Backup_File = PH_PATH.'/include/backup/PH_Historybackup.sql';
     374
     375  // Restore sql backup file - DROP TABLE queries are executed
     376  // ---------------------------------------------------------
     377  UAM_execute_sqlfile(
     378    $Backup_File,
     379    DEFAULT_PREFIX_TABLE,
     380    $prefixeTable,
     381    $dblayer
     382  );
     383}
     384
     385
     386/**
     387 * loads an sql file and executes all queries / Based on Piwigo's original install file
     388 *
     389 * Before executing a query, $replaced is... replaced by $replacing. This is
     390 * useful when the SQL file contains generic words.
     391 *
     392 * @param string filepath
     393 * @param string replaced
     394 * @param string replacing
     395 * @return void
     396 */
     397function PH_execute_sqlfile($filepath, $replaced, $replacing, $dblayer)
     398{
     399  $sql_lines = file($filepath);
     400  $query = '';
     401  foreach ($sql_lines as $sql_line)
     402  {
     403    $sql_line = trim($sql_line);
     404    if (preg_match('/(^--|^$)/', $sql_line))
     405    {
     406      continue;
     407    }
     408   
     409    $query.= ' '.$sql_line;
     410   
     411    // if we reached the end of query, we execute it and reinitialize the
     412    // variable "query"
     413    if (preg_match('/;$/', $sql_line))
     414    {
     415      $query = trim($query);
     416      $query = str_replace($replaced, $replacing, $query);
     417      if ('mysql' == $dblayer)
     418      {
     419        if (preg_match('/^(CREATE TABLE .*)[\s]*;[\s]*/im', $query, $matches))
     420        {
     421          $query = $matches[1].' DEFAULT CHARACTER SET utf8'.';';
     422        }
     423      }
     424      pwg_query($query);
     425      $query = '';
     426    }
     427  }
     428}
    238429
    239430
  • extensions/Prune_History/language/en_UK/description.txt

    r14838 r14854  
    1 Manual prune and background process which cleans your history table on regular basis.
     1Manual and automatic pruning of the history table.
  • extensions/Prune_History/language/fr_FR/description.txt

    r14838 r14854  
    1 Elaguage manuel et tâche de fond pour nettoyer la table historique.
     1Elaguage manuel et automatique de la table historique.
  • extensions/Prune_History/language/fr_FR/plugin.lang.php

    r14838 r14854  
    11<?php
    22$lang['PH_ManualPrune_title'] = 'Elagage manuel';
     3$lang['PH_ManualPrune_title_d'] = 'Cette fonction permet de supprimer des entrées dans l\'historique en fonction d\'une plage de dates. Choisissez une date de début et une date de fin de traitement et exécutez.<br><br>
     4<b style=&quot;color: red;&quot;>Attention : Les données de l\'historique seront alors irrémédiablement supprimées !</b> Vous pouvez sauvegarder préalablement et restaurer la table d\'historique en utilisant les fonctions dans le cadre de droite.<br><br>
     5Note : Le récapiltulatif de l\'historique n\'est pas affecté par l\'élagage.';
     6
     7$lang['PH_Save_Title'] = 'Sauvegarde de sécurité';
     8$lang['PH_Save_Title_d'] = 'L\'élagage étant définitif et irréversible, il est vivement conseillé de sauvegarder votre table d\'historique avant de lancer un élagage. Par défaut, la table est sauvegardée dans un fichier sur le serveur et peut être restaurée depuis cet emplacement.<br><br>
     9Mais il est aussi possible de télécharger le fichier de sauvegarde pour le conserver en dehors de votre galerie. Dans ce cas, la restauration devra se faire via votre outil de gestion de base de données (généralement PhpMyAdmin).';
     10
     11$lang['PH_Dump_Download'] = 'Pour télécharger le fichier de sauvegarde, cochez cette case:';
     12$lang['PH_Restore'] = 'Pour restaurer une sauvegarde de votre table d\'historique.<br>Seul le fichier sauvegardé sur le serveur est pris en compte.';
     13$lang['PH_Save'] = 'Sauvegarder l\'historique';
     14$lang['PH_Restore_File'] = 'Restaurer l\'historique';
     15$lang['PH_Dump_OK'] = 'La sauvegarde a réussi !';
     16$lang['PH_Dump_NOK'] = 'La sauvegarde a échoué !';
     17$lang['PH_Restoration_OK'] = 'Restauration réussie !';
     18$lang['PH_Restoration_NOK'] = 'Restauration échouée !';
     19$lang['PH_Bad_version_backup'] = 'Mauvaise version du plugin ! La sauvegarde que vous tentez de restaurer est obsolète ou a été créée avec une ancienne version du plugin.';
     20$lang['PH_No_Backup_File'] = 'Aucun fichier de sauvegarde trouvé pour la restauration !';
     21
    322$lang['PH_AutoPrune_title'] = 'Elagage automatique';
    4 $lang['PH_AutoPrune_false'] = 'Désactiver';
     23$lang['PH_AutoPrune_title_d'] = 'Si vous activez l\'élagage automatique, celui-ci se déclenchera automatiquement en fonction du critère de conservation à chaque connexion d\'un utilisateur sur la galerie (y compris un administrateur ou le webmaster).<br><br>
     24<b style=&quot;color: red;&quot;>A utiliser avec précaution ! Les données élaguées ne seront pas récupérables en cas d\'erreur !</b>';
     25
     26$lang['PH_AutoPrune_false'] = 'Désactiver (par défaut)';
    527$lang['PH_AutoPrune_true'] = 'Activer';
    628$lang['Start_Date'] = 'Date de début';
     29
    730$lang['PH_AutoRange_title'] = 'Ne conserver un historique que sur :';
     31$lang['PH_AutoRange_title_d'] = 'Configurez ici votre critère <b>de conservation</b> de l\'historique pour l\'élagage automatique. Plusieurs choix sont possibles :<br><br>
     32- Conserver x jours<br>
     33- Conserver x mois<br>
     34- Conserver x années<br><br>
     35Par exemple : Si vous ne souhaitez conserver qu\'une profondeur d\'historique de 3 mois,  vous pouvez paramétrer 3 mois ou 91 jours.<br><br>
     36Note : Le récapiltulatif de l\'historique n\'est pas affecté par l\'élagage automatique.';
     37
    838$lang['PH_save_config'] = 'Configuration enregistrée !';
    939$lang['PH_Prune'] = 'Exécuter l\'élagage manuel';
     
    1646$lang['range'][2] = 'Mois';
    1747$lang['range'][3] = 'Année(s)';
     48
     49$lang['PH_Support'] = 'Le support officiel sur ce plugin se fait exclusivement sur ce fil du forum FR de Piwigo:<br>
     50<a href="http://fr.piwigo.org/forum/viewtopic.php?id=" onclick="window.open(this.href);return false;">Forum français - http://fr.piwigo.org/forum/viewtopic.php?id=</a>';
    1851?>
  • extensions/Prune_History/main.inc.php

    r14838 r14854  
    22/*
    33Plugin Name: Prune History
    4 Version: 1.0.0-beta1
     4Version: 1.0.0
    55Description: Based on original History_cleanup plugin from VDigital, this plugin allows to manually or automatically prune history table according to configurable criteria
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=
     
    88Author URI: http://www.infernoweb.net
    99*/
     10
     11/* See release history and changes in changelog.txt file */
    1012
    1113if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
     
    2325$conf_PH = unserialize($conf['PruneHistory']);
    2426
    25 /* Plugin admin */
     27
     28/* Plugin administration */
    2629add_event_handler('get_admin_plugin_menu_links', 'PH_admin_menu');
    2730
    28 function PH_admin_menu($menu)
    29 {
    30 // +-----------------------------------------------------------------------+
    31 // |                      Getting plugin name                              |
    32 // +-----------------------------------------------------------------------+
    33   $plugin =  PHInfos(PH_PATH);
    34   $name = $plugin['name'];
    35  
    36   array_push($menu,
    37     array(
    38       'NAME' => $name,
    39       'URL' => get_root_url().'admin.php?page=plugin-'.basename(PH_PATH)
    40     )
    41   );
    4231
    43   return $menu;
    44 }
    45 
    46 // Prune automation on user login
     32/* Prune automation on user login */
    4733if (isset($conf_PH[1]) and $conf_PH[1] == 'true')
    4834{
  • extensions/Prune_History/maintain.inc.php

    r14838 r14854  
    2626  $defaultPH[0] = $version;                                  // Prune History version
    2727  $defaultPH[1] = 'false';                                   // Enable automated prune
     28  $defaultPH[2] = '0';                                       // Range
     29  $defaultPH[3] = '0';                                       // Value (Year, month, day)
    2830
    2931  // Create Prune History conf if not already exists
Note: See TracChangeset for help on using the changeset viewer.