diff --git a/package-lock.json b/package-lock.json
index 6521b9b4..022dd785 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,6 +23,7 @@
"electron-window-state": "~5.0.3",
"encoding": "~0.1.13",
"floating-vue": "~2.0.0-beta.20",
+ "json2php": "~0.0.7",
"leaflet": "~1.7.1",
"marked": "~4.0.19",
"moment": "~2.29.4",
@@ -8642,6 +8643,11 @@
"devOptional": true,
"license": "ISC"
},
+ "node_modules/json2php": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.7.tgz",
+ "integrity": "sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg=="
+ },
"node_modules/json5": {
"version": "2.2.1",
"dev": true,
@@ -19965,6 +19971,11 @@
"version": "5.0.1",
"devOptional": true
},
+ "json2php": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.7.tgz",
+ "integrity": "sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg=="
+ },
"json5": {
"version": "2.2.1",
"dev": true
diff --git a/package.json b/package.json
index f35e69fe..4e8d37c2 100644
--- a/package.json
+++ b/package.json
@@ -130,6 +130,7 @@
"electron-window-state": "~5.0.3",
"encoding": "~0.1.13",
"floating-vue": "~2.0.0-beta.20",
+ "json2php": "~0.0.7",
"leaflet": "~1.7.1",
"marked": "~4.0.19",
"moment": "~2.29.4",
diff --git a/src/renderer/components/WorkspaceTabQuery.vue b/src/renderer/components/WorkspaceTabQuery.vue
index a0e39ce9..82eeec38 100644
--- a/src/renderer/components/WorkspaceTabQuery.vue
+++ b/src/renderer/components/WorkspaceTabQuery.vue
@@ -103,6 +103,9 @@
+
@@ -446,7 +449,7 @@ const clear = () => {
clearTabData();
};
-const downloadTable = (format: 'csv' | 'json' | 'sql') => {
+const downloadTable = (format: 'csv' | 'json' | 'sql' | 'php') => {
queryTable.value.downloadTable(format, `${props.tab.type}-${props.tab.index}`);
};
diff --git a/src/renderer/components/WorkspaceTabQueryTable.vue b/src/renderer/components/WorkspaceTabQueryTable.vue
index fd8b1336..a6943191 100644
--- a/src/renderer/components/WorkspaceTabQueryTable.vue
+++ b/src/renderer/components/WorkspaceTabQueryTable.vue
@@ -711,7 +711,7 @@ const selectResultset = (index: number) => {
resultsetIndex.value = index;
};
-const downloadTable = (format: 'csv' | 'json' | 'sql', table: string, chunks = false) => {
+const downloadTable = (format: 'csv' | 'json' | 'sql' | 'php', table: string, chunks = false) => {
if (!sortedResults.value) return;
if (format === 'sql' && !chunks && customizations.value.exportByChunks) {
diff --git a/src/renderer/components/WorkspaceTabTable.vue b/src/renderer/components/WorkspaceTabTable.vue
index a8e77867..b27b0695 100644
--- a/src/renderer/components/WorkspaceTabTable.vue
+++ b/src/renderer/components/WorkspaceTabTable.vue
@@ -105,6 +105,9 @@
+
@@ -373,7 +376,7 @@ const setRefreshInterval = () => {
}
};
-const downloadTable = (format: 'csv' | 'json' | 'sql') => {
+const downloadTable = (format: 'csv' | 'json' | 'sql' | 'php') => {
queryTable.value.downloadTable(format, props.table);
};
diff --git a/src/renderer/i18n/en-US.ts b/src/renderer/i18n/en-US.ts
index fc01ae97..266e4645 100644
--- a/src/renderer/i18n/en-US.ts
+++ b/src/renderer/i18n/en-US.ts
@@ -343,7 +343,8 @@ export const enUS = {
switchSearchMethod: 'Switch search method',
noResultsPresent: 'No results present',
sqlExportOptions: 'SQL export options',
- targetTable: 'Target table'
+ targetTable: 'Target table',
+ phpArray: 'PHP array'
},
faker: {
address: 'Address',
diff --git a/src/renderer/libs/exportRows.ts b/src/renderer/libs/exportRows.ts
index 670fe613..2a8676e6 100644
--- a/src/renderer/libs/exportRows.ts
+++ b/src/renderer/libs/exportRows.ts
@@ -1,8 +1,9 @@
import { ClientCode } from 'common/interfaces/antares';
import { jsonToSqlInsert } from 'common/libs/sqlUtils';
+import * as json2php from 'json2php';
export const exportRows = (args: {
- type: 'csv' | 'json'| 'sql';
+ type: 'csv' | 'json'| 'sql' | 'php';
content: object[];
table: string;
client?: ClientCode;
@@ -48,6 +49,13 @@ export const exportRows = (args: {
content = sql;
break;
}
+ case 'php': {
+ mime = 'application/x-httpd-php';
+ const printer = json2php.make({ linebreak: '\n', indent: '\t', shortArraySyntax: true });
+ content = printer(args.content);
+ content = ` (json: any | any[]) => string;
+}
declare module 'vuedraggable' {// <- to export as default
const draggableComponent: import('vue').DefineComponent<{
list: {