Index: /extensions/UserAdvManager/branches/2.30/admin/UAM_admin.php
===================================================================
--- /extensions/UserAdvManager/branches/2.30/admin/UAM_admin.php	(revision 12275)
+++ /extensions/UserAdvManager/branches/2.30/admin/UAM_admin.php	(revision 12276)
@@ -260,4 +260,28 @@
     {
       array_push($page['errors'], l10n('UAM_Dump_NOK'));
+    }
+  }
+
+  // Restoring UAM tables and configuration settings
+  // -----------------------------------------------
+  if (isset($_POST['restore']))
+  {
+    $Backup_File = UAM_PATH.'/include/backup/UAM_dbbackup.sql';
+
+    if (file_exists($Backup_File))
+    {
+      $restore = UAM_Restore_backup_file();
+      if(empty($restore))
+      {
+        array_push($page['infos'], l10n('UAM_Restoration_OK'));
+      }
+      else
+      {
+        array_push($page['errors'], l10n('UAM_Restoration_NOK'));
+      }
+    }
+    else
+    {
+      array_push($page['errors'], l10n('UAM_No_Backup_File'));
     }
   }
Index: /extensions/UserAdvManager/branches/2.30/admin/template/global.tpl
===================================================================
--- /extensions/UserAdvManager/branches/2.30/admin/template/global.tpl	(revision 12275)
+++ /extensions/UserAdvManager/branches/2.30/admin/template/global.tpl	(revision 12276)
@@ -805,4 +805,12 @@
 </form>
 </fieldset>
+<fieldset>
+<form method="post" action="" class="general">
+  <p>
+    {'UAM_Restore'|@translate}<br><br>
+      <input class="submit" type="submit" value="{'UAM_Restore_File'|@translate}" name="restore" {$TAG_INPUT_ENABLED}>
+  </p>
+</form>
+</fieldset>
   </div>
 
Index: /extensions/UserAdvManager/branches/2.30/changelog.txt.php
===================================================================
--- /extensions/UserAdvManager/branches/2.30/changelog.txt.php	(revision 12275)
+++ /extensions/UserAdvManager/branches/2.30/changelog.txt.php	(revision 12276)
@@ -267,4 +267,5 @@
             Bug 2445 fixed - Duplicate key MySql error when a user tries to validate his registration twice.
             Bug 2447 fixed - Only for installation from scratch, all text fields pre-filled and given as examples are translated into the language of the webmaster (if the language is supported by the plugin). The default language remains English in case of any failure.
+            Bug 2450 fixed - New feature : Backup file restoration.
             Help files remaned and relocated in the language root directory (no more "help" subdirectory) for compliance with the new online translation tool.
 */
Index: /extensions/UserAdvManager/branches/2.30/include/functions.inc.php
===================================================================
--- /extensions/UserAdvManager/branches/2.30/include/functions.inc.php	(revision 12275)
+++ /extensions/UserAdvManager/branches/2.30/include/functions.inc.php	(revision 12276)
@@ -2840,5 +2840,5 @@
         for ($i=0; $i<$nb_fields; $i++)
         {
-          $insertions .= '\'' . mysql_real_escape_string($line[$i]) . '\', ';
+          $insertions .= '\'' . pwg_db_real_escape_string($line[$i]) . '\', ';
         }
         $insertions = substr($insertions, 0, -2);
@@ -2869,5 +2869,5 @@
     for ($i=0; $i<$nb_fields; $i++)
     {
-      $insertions .= '\'' . mysql_real_escape_string($line[$i]) . '\', ';
+      $insertions .= '\'' . pwg_db_real_escape_string($line[$i]) . '\', ';
     }
     $insertions = substr($insertions, 0, -2);
@@ -2904,4 +2904,110 @@
   return true;
 }
+
+
+/**
+ * UAM_Restore_backup_file
+ * Restore backup database file
+ * 
+ * @returns : Boolean
+ */
+function UAM_Restore_backup_file() 
+{
+  global $prefixeTable, $dblayer, $conf;
+  
+  define('DEFAULT_PREFIX_TABLE', 'piwigo_');
+  
+  $Backup_File = UAM_PATH.'/include/backup/UAM_dbbackup.sql';
+
+  // Cleanup database before restoring
+  // ---------------------------------
+
+  // Delete UserAdvManager global config in #_config table
+  $q = '
+DELETE FROM '.CONFIG_TABLE.'
+WHERE param="UserAdvManager"
+;';
+
+  pwg_query($q);
+
+  // Delete UserAdvManager_ConfirmMail global config in #_config table
+  $q = '
+DELETE FROM '.CONFIG_TABLE.'
+WHERE param="UserAdvManager_ConfirmMail"
+;';
+
+  pwg_query($q);
+
+  // Delete UserAdvManager_Redir config in #_config table
+  $q = '
+DELETE FROM '.CONFIG_TABLE.'
+WHERE param="UserAdvManager_Redir"
+;';
+
+  pwg_query($q);
+
+  // Delete UserAdvManager_Version config in #_config table
+  $q = '
+DELETE FROM '.CONFIG_TABLE.'
+WHERE param="UserAdvManager_Version"
+;';
+
+  pwg_query($q);
+
+  // Restore sql backup file - DROP TABLE queries are executed
+  // ---------------------------------------------------------
+  UAM_execute_sqlfile(
+    $Backup_File,
+    DEFAULT_PREFIX_TABLE,
+    $prefixeTable,
+    $dblayer
+  );
+}
+
+
+/**
+ * loads an sql file and executes all queries / Based on Piwigo's original install file
+ *
+ * Before executing a query, $replaced is... replaced by $replacing. This is
+ * useful when the SQL file contains generic words.
+ *
+ * @param string filepath
+ * @param string replaced
+ * @param string replacing
+ * @return void
+ */
+function UAM_execute_sqlfile($filepath, $replaced, $replacing, $dblayer)
+{
+  $sql_lines = file($filepath);
+  $query = '';
+  foreach ($sql_lines as $sql_line)
+  {
+    $sql_line = trim($sql_line);
+    if (preg_match('/(^--|^$)/', $sql_line))
+    {
+      continue;
+    }
+    
+    $query.= ' '.$sql_line;
+    
+    // if we reached the end of query, we execute it and reinitialize the
+    // variable "query"
+    if (preg_match('/;$/', $sql_line))
+    {
+      $query = trim($query);
+      $query = str_replace($replaced, $replacing, $query);
+      if ('mysql' == $dblayer)
+      {
+        if (preg_match('/^(CREATE TABLE .*)[\s]*;[\s]*/im', $query, $matches))
+        {
+          $query = $matches[1].' DEFAULT CHARACTER SET utf8'.';';
+        }
+      }
+      pwg_query($query);
+      $query = '';
+    }
+  }
+}
+
 
 
Index: /extensions/UserAdvManager/branches/2.30/language/en_UK/help.lang.php
===================================================================
--- /extensions/UserAdvManager/branches/2.30/language/en_UK/help.lang.php	(revision 12275)
+++ /extensions/UserAdvManager/branches/2.30/language/en_UK/help.lang.php	(revision 12276)
@@ -167,16 +167,4 @@
 
 
-// --------- Starting below: New or revised $lang ---- from version 2.20.3
-$lang['UAM_DumpTitle'] = 'Backup your configuration';
-$lang['UAM_DumpTitle_d'] = 'This allows you to save the entire configuration of the plugin in a file so you can restore it if something goes wrong (wrong manipulation or before an update, for example). By default, the file is stored in this folder ../plugins/UserAdvManager/include/backup/ and is called &quot;UAM_dbbackup.sql&quot;.
-<br><br>
-<b style=&quot;color: red;&quot;>Warning: The file is overwritten each backup action!</b>
-<br><br>
-It can sometimes be useful to retrieve the backup file on your computer. For example: To restore to another database, to outsource or to keep multiple save files. To do this, just check the box to download the file.
-<br><br>
-The recovery from this interface is not supported. Use tools like phpMyAdmin.';
-// --------- End: New or revised $lang ---- from version 2.20.3
-
-
 // --------- Starting below: New or revised $lang ---- from version 2.20.4
 $lang['UAM_HidePasswTitle'] = 'Password in clear text in the information email';
@@ -344,4 +332,14 @@
 The webmaster, administrators and guest accounts are excluded from this function.<br>
 These users will be automatically redirected to their customization page at each of their connections until they changed their password and an explicit message will be displayed on this page.';
+$lang['UAM_DumpTitle'] = 'Backup and restore your configuration';
+$lang['UAM_DumpTitle_d'] = 'This allows you to save the entire configuration of the plugin in a file so you can restore it if something goes wrong (wrong manipulation or before an update, for example). By default, the file is stored in this folder ../plugins/UserAdvManager/include/backup/ and is called &quot;UAM_dbbackup.sql&quot;.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: The file is overwritten each backup action!</b>
+<br><br>
+It can sometimes be useful to retrieve the backup file on your computer. For example: To restore to another database, to outsource or to keep multiple save files. To do this, just check the box to download the file.
+<br><br>
+The recovery from this interface is available only for the local backup file (../plugins/UserAdvManager/include/backup/UAM_dbbackup.sql). Downloaded backup file can\'t be restored by this way. To do this, please use your dedicated database management tool (like PhpMyAdmin for MySql database).
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: After the restore, it is necessary to reload the administration page of the plugin to see the restored settings!</b>';
 // --------- End: New or revised $lang ---- from version 2.30.0
 ?>
Index: /extensions/UserAdvManager/branches/2.30/language/en_UK/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/branches/2.30/language/en_UK/plugin.lang.php	(revision 12275)
+++ /extensions/UserAdvManager/branches/2.30/language/en_UK/plugin.lang.php	(revision 12276)
@@ -314,5 +314,4 @@
 
 // --------- Starting below: New or revised $lang ---- from version 2.20.3
-$lang['UAM_DumpTxt'] = 'Backup your configuration';
 $lang['UAM_Dump_Download'] = 'To download the backup file, please check this box:';
 $lang['UAM_Save'] = 'Run backup';
@@ -392,4 +391,8 @@
 $lang['UAM_Default_CfmMail_Custom_Txt1'] = 'Welcome [username]! You have confirmed that you are human and may now use [mygallery]!';
 $lang['UAM_Default_CfmMail_Custom_Txt2'] = 'Your activation key is incorrect or expired or you have already validated your account, please contact the webmaster to fix this problem.';
+$lang['UAM_DumpTxt'] = 'Backup and restore your configuration';
+$lang['UAM_No_Backup_File'] = 'No backup file available!';
+$lang['UAM_Restoration_NOK'] = 'An error occurred while restoring the configuration. Please check the validity of your backup file.';
+$lang['UAM_Restoration_OK'] = 'Restoring your configuration completed successfully! Please reload UAM\'s administration page to view the restored settings.';
 // --------- End: New or revised $lang ---- from version 2.30.0
 ?>
Index: /extensions/UserAdvManager/branches/2.30/language/fr_FR/help.lang.php
===================================================================
--- /extensions/UserAdvManager/branches/2.30/language/fr_FR/help.lang.php	(revision 12275)
+++ /extensions/UserAdvManager/branches/2.30/language/fr_FR/help.lang.php	(revision 12276)
@@ -163,16 +163,4 @@
 
 
-// --------- Starting below: New or revised $lang ---- from version 2.20.3
-$lang['UAM_DumpTitle'] = 'Sauvegarde de votre configuration';
-$lang['UAM_DumpTitle_d'] = 'Ceci vous permet de sauvegarder la configuration complète du plugin dans un fichier afin de pouvoir la restaurer en cas de problème (fausse manipulation ou avant une mise à jour, par exemple). Par défaut, le fichier est stocké dans le dossier ../plugins/UserAdvManager/include/backup/ et se nomme &quot;UAM_dbbackup.sql&quot;.
-<br><br>
-<b style=&quot;color: red;&quot;>Attention : Le fichier est écrasé à chaque action de sauvegarde !</b>
-<br><br>
-Il peut être parfois utile de récupérer le fichier de sauvegarde sur votre ordinateur. Par exemple : Pour une restauration sur une autre base de données, pour externaliser la sauvegarder ou pour conserver plusieurs fichiers. Pour cela, il suffit de cocher la case correspondante au téléchargement du fichier.
-<br><br>
-La restauration à partir de cette interface n\'est pas prise en charge. Utilisez des outils comme PhpMyAdmin.';
-// --------- End: New or revised $lang ---- from version 2.20.3
-
-
 // --------- Starting below: New or revised $lang ---- from version 2.20.4
 $lang['UAM_HidePasswTitle'] = 'Mot de passe en clair dans le mail d\'information';
@@ -340,4 +328,14 @@
 Le compte du webmaster, des administrateurs et de l\'invité (Guest) sont exclus de cette fonction.<br><br>
 Ces utilisateurs seront alors systématiquement redirigés vers leur page de personnalisation à chacune de leurs connexions tant qu\'ils n\'auront pas modifié leur mot de passe. Un message explicite sera affiché sur cette page.';
+$lang['UAM_DumpTitle'] = 'Sauvegarde et restauration de votre configuration';
+$lang['UAM_DumpTitle_d'] = 'Ceci vous permet de sauvegarder la configuration complète du plugin dans un fichier afin de pouvoir la restaurer en cas de problème (fausse manipulation ou avant une mise à jour, par exemple). Par défaut, le fichier est stocké dans le dossier ../plugins/UserAdvManager/include/backup/ et se nomme &quot;UAM_dbbackup.sql&quot;.
+<br><br>
+<b style=&quot;color: red;&quot;>Attention : Le fichier est écrasé à chaque action de sauvegarde !</b>
+<br><br>
+Il peut être parfois utile de récupérer le fichier de sauvegarde sur votre ordinateur. Par exemple : Pour une restauration sur une autre base de données, pour externaliser la sauvegarder ou pour conserver plusieurs fichiers. Pour cela, il suffit de cocher la case correspondante au téléchargement du fichier.
+<br><br>
+La restauration à partir de cette interface ne prend en charge que la sauvegarde effectuée localement (../plugins/UserAdvManager/include/backup/UAM_dbbackup.sql). Il n\'est pas possible, ici, de réinjecter un fichier de sauvegarde téléchargé. Pour cela, veuillez utiliser l\'outil de gestion de votre base de données (pour MySql, on trouvera généralement PhpMyAdmin).
+<br><br>
+<b style=&quot;color: red;&quot;>Attention : Après la restauration, il est nécessaire de recharger la page d\'administration du plugin pour voir les paramètres restaurés !</b>';
 // --------- End: New or revised $lang ---- from version 2.30.0
 ?>
Index: /extensions/UserAdvManager/branches/2.30/language/fr_FR/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/branches/2.30/language/fr_FR/plugin.lang.php	(revision 12275)
+++ /extensions/UserAdvManager/branches/2.30/language/fr_FR/plugin.lang.php	(revision 12276)
@@ -313,5 +313,4 @@
 
 // --------- Starting below: New or revised $lang ---- from version 2.20.3
-$lang['UAM_DumpTxt'] = 'Sauvegarde de votre configuration';
 $lang['UAM_Dump_Download'] = 'Pour télécharger le fichier de sauvegarde, cochez cette case:';
 $lang['UAM_Save'] = 'Exécuter la sauvegarde';
@@ -389,4 +388,10 @@
 $lang['UAM_Default_CfmMail_Custom_Txt1'] = 'Bienvenue [username]! Vous avez confirmé que vous étiez bien un humain et non une machine. Vous pouvez maintenant profiter pleinement de [mygallery]!';
 $lang['UAM_Default_CfmMail_Custom_Txt2'] = 'Votre clé d\'activation est incorrecte ou expirée ou vous avez déjà validé votre inscription. Merci de contacter le webmestre de la galerie pour résoudre le problème.';
+$lang['UAM_DumpTxt'] = 'Sauvegarde et restauration de votre configuration';
+$lang['UAM_Restore'] = 'Pour restaurer le fichier de sauvegarde de votre configuration. Attention ! Seul le fichier sauvegardé sur le serveur est pris en compte.';
+$lang['UAM_Restore_File'] = 'Restauration de la configuration';
+$lang['UAM_No_Backup_File'] = 'Pas de fichier de sauvegarde présent !';
+$lang['UAM_Restoration_NOK'] = 'Une erreur est survenue lors de la restauration de la configuration. Veuillez vérifier la validité de votre fichier de sauvegarde.';
+$lang['UAM_Restoration_OK'] = 'La restauration de votre configuration s\'est terminée avec succès ! Veuillez recharger la page d\'administration de UAM pour voir les paramètres restaurés.';
 // --------- End: New or revised $lang ---- from version 2.30.0
 ?>
