diff --git a/htdocs/admin/tools/dolibarr_export.php b/htdocs/admin/tools/dolibarr_export.php index 2e4fffda27c..51d25d5328c 100644 --- a/htdocs/admin/tools/dolibarr_export.php +++ b/htdocs/admin/tools/dolibarr_export.php @@ -94,18 +94,18 @@ if ($_GET["msg"]) if ($db->label == 'MySQL') { ?> -
+
+ +
label == 'PostgreSQL') { - ?> -
- +
+ +
+ trans("RestoreDesc3",DOL_DATA_ROOT).'

';
trans("ImportMethod"); ?> + label == 'MySQL') + { + ?>
- - /> - + /> +
+ label == 'PostgreSQL') + { + ?> +
+ /> + +
+ label; + } + ?>
@@ -118,6 +136,41 @@ if ($db->label == 'MySQL') label == 'PostgreSQL') +{ +?> +
+ Restore PostgreSQL +
+ getPathOfRestore(); + if (preg_match("/\s/",$command)) $command=$command=escapeshellarg($command); // Use quotes on command + + $param=" -d ".$dolibarr_main_db_name; + $param.=" -h ".$dolibarr_main_db_host; + if (! empty($dolibarr_main_db_port)) $param.=" -p ".$dolibarr_main_db_port; + $param.=" -U ".$dolibarr_main_db_user; + $paramcrypted=$param; + $paramclear=$param; + /*if (! empty($dolibarr_main_db_pass)) + { + $paramcrypted.=" -p".preg_replace('/./i','*',$dolibarr_main_db_pass); + $paramclear.=" -p".$dolibarr_main_db_pass; + }*/ + $paramcrypted.=" -W"; + $paramclear.=" -W"; + + echo $langs->trans("ImportPostgreSqlDesc"); + print '
'; + print '
'; + + if (empty($_GET["showpass"]) && $dolibarr_main_db_pass) print '
'.$langs->trans("UnHidePassword").''; + //else print '
'.$langs->trans("HidePassword").''; + ?> +
+
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 39ba7ab3926..4642be6a737 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -146,7 +146,9 @@ ExportMethod=Export method ImportMethod=Import method ToBuildBackupFileClickHere=To build a backup file, click here. ImportMySqlDesc=To import a backup file, you must use mysql command from command line: +ImportPostgreSqlDesc=To import a backup file, you must use pg_restore command from command line: ImportMySqlCommand=%s %s < mybackupfile.sql +ImportPostgreSqlCommand=%s %s mybackupfile.sql FileNameToGenerate=File name to generate CommandsToDisableForeignKeysForImport=Command to disable foreign keys on import ExportCompatibility=Compatibility of generated export file diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 6f12136fef3..3f0386d50ca 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -146,7 +146,9 @@ ExportMethod= Méthode d'export ImportMethod= Méthode d'import ToBuildBackupFileClickHere= Pour générer un fichier de sauvegarde, cliquez ici. ImportMySqlDesc= Pour importer une sauvegarde, il faut utiliser la commande mysql en ligne suivante: +ImportPostgreSqlDesc=Pour importer une sauvegarde, il faut utiliser la commande pg_restore en ligne suivante: ImportMySqlCommand= %s %s < monfichierbackup.sql +ImportPostgreSqlCommand=%s %s monfichierbackup.sql FileNameToGenerate= Nom du fichier à générer CommandsToDisableForeignKeysForImport= Commande pour désactiver les clés étrangères à l'import ExportCompatibility= Compatibilité du fichier export généré diff --git a/htdocs/lib/databases/pgsql.lib.php b/htdocs/lib/databases/pgsql.lib.php index 29f3d2ca9f3..4165e3ba77b 100644 --- a/htdocs/lib/databases/pgsql.lib.php +++ b/htdocs/lib/databases/pgsql.lib.php @@ -1236,16 +1236,25 @@ class DoliDb */ function getPathOfRestore() { - $fullpathofmysqldump='/pathtomysql/mysql'; + $fullpathofdump='/pathtopgrestore/pg_restore'; - $resql=$this->query('SHOW VARIABLES LIKE \'basedir\''); - if ($resql) - { - $liste=$this->fetch_array($resql); - $basedir=$liste['Value']; - $fullpathofmysqldump=$basedir.'bin/mysql'; - } - return $fullpathofmysqldump; + if (file_exists('/usr/bin/pg_restore')) + { + $fullpathofdump='/usr/bin/pg_restore'; + } + else + { + // TODO L'utilisateur de la base doit etre un superadmin pour lancer cette commande + $resql=$this->query('SHOW data_directory'); + if ($resql) + { + $liste=$this->fetch_array($resql); + $basedir=$liste['data_directory']; + $fullpathofdump=preg_replace('/data$/','bin',$basedir).'/pg_restore'; + } + } + + return $fullpathofdump; } /**