Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F803824
D420.id1039.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Feb 26, 8:58 AM
Size
7 KB
Mime Type
text/x-diff
Expires
Thu, Feb 27, 8:58 AM (10 h, 34 m)
Engine
blob
Format
Raw Data
Handle
576548
Attached To
D420: INP-1817 - Change engine for storing export user presets
D420.id1039.diff
View Options
Index: core/install/install_schema.sql
===================================================================
--- core/install/install_schema.sql
+++ core/install/install_schema.sql
@@ -1430,3 +1430,13 @@
TransitionEffectCustom varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (PromoBlockGroupId)
);
+
+CREATE TABLE ExportUserPresets (
+ Id int NOT NULL AUTO_INCREMENT,
+ PortalUserId int NULL DEFAULT NULL,
+ ItemPrefix varchar(100) NOT NULL DEFAULT '',
+ PresetName varchar(255) NOT NULL DEFAULT '',
+ PresetData text NULL DEFAULT NULL,
+ UNIQUE KEY General (PortalUserId, ItemPrefix, PresetName),
+ PRIMARY KEY (Id)
+);
Index: core/install/remove_schema.sql
===================================================================
--- core/install/remove_schema.sql
+++ core/install/remove_schema.sql
@@ -77,3 +77,4 @@
DROP TABLE CurlLog;
DROP TABLE PromoBlocks;
DROP TABLE PromoBlockGroups;
+DROP TABLE ExportUserPresets;
Index: core/install/upgrades.php
===================================================================
--- core/install/upgrades.php
+++ core/install/upgrades.php
@@ -2368,6 +2368,36 @@
public function Upgrade_5_2_2_B3($mode)
{
if ( $mode != 'before' ) {
+ $sql = 'SELECT VariableValue, PortalUserId
+ FROM ' . TABLE_PREFIX . 'UserPersistentSessionData
+ WHERE VariableName = "export_settings"';
+ $variable_values = $this->Conn->GetColIterator($sql, 'PortalUserId');
+
+ foreach ( $variable_values as $user_id => $variable_value ) {
+ if ( !kUtil::IsSerialized($variable_value) ) {
+ continue;
+ }
+
+ $variable_value = unserialize($variable_value);
+
+ foreach ( $variable_value as $prefix => $prefix_export_settings ) {
+ foreach ( $prefix_export_settings as $name => $export_settings ) {
+ $fields_hash = array(
+ 'PortalUserId' => $user_id,
+ 'ItemPrefix' => $prefix,
+ 'PresetName' => $name,
+ 'PresetData' => json_encode($export_settings),
+ );
+ $this->Conn->doInsert($fields_hash, TABLE_PREFIX . 'ExportUserPresets', 'REPLACE');
+ }
+ }
+ }
+
+ $sql = 'DELETE
+ FROM ' . TABLE_PREFIX . 'UserPersistentSessionData
+ WHERE VariableName = "export_settings"';
+ $this->Conn->Query($sql);
+
return;
}
Index: core/kernel/db/db_event_handler.php
===================================================================
--- core/kernel/db/db_event_handler.php
+++ core/kernel/db/db_event_handler.php
@@ -131,6 +131,7 @@
'OnPreCreate' => Array ('self' => 'add|add.pending', 'subitem' => 'edit|edit.pending'),
'OnEdit' => Array ('self' => 'edit|edit.pending', 'subitem' => 'edit|edit.pending'),
+ 'OnDeleteExportPreset' => array('self' => 'view'),
'OnExport' => Array ('self' => 'view|advanced:export'),
'OnExportBegin' => Array ('self' => 'view|advanced:export'),
'OnExportProgress' => Array ('self' => 'view|advanced:export'),
@@ -3086,32 +3087,16 @@
return ;
}
- $preset_key = $field_values['ExportPresets'];
- $export_settings = $this->Application->RecallPersistentVar('export_settings');
-
- if ( !$export_settings ) {
- return ;
- }
-
- $export_settings = unserialize($export_settings);
-
- if ( !isset($export_settings[$event->Prefix]) ) {
- return ;
- }
-
- $to_delete = '';
-
- foreach ($export_settings[$event->Prefix] as $key => $val) {
- if ( implode('|', $val['ExportColumns']) == $preset_key ) {
- $to_delete = $key;
- break;
- }
- }
+ $where_clause = array(
+ 'ItemPrefix = ' . $this->Conn->qstr($event->Prefix),
+ 'PortalUserId = ' . $this->Application->RecallVar('user_id'),
+ 'PresetName = ' . $this->Conn->qstr($this->Application->GetVar('delete_preset_name')),
+ );
- if ( $to_delete ) {
- unset($export_settings[$event->Prefix][$to_delete]);
- $this->Application->StorePersistentVar('export_settings', serialize($export_settings));
- }
+ $sql = 'DELETE
+ FROM ' . TABLE_PREFIX . 'ExportUserPresets
+ WHERE (' . implode(') AND (', $where_clause) . ')';
+ $this->Conn->Query($sql);
}
/**
Index: core/units/helpers/cat_dbitem_export_helper.php
===================================================================
--- core/units/helpers/cat_dbitem_export_helper.php
+++ core/units/helpers/cat_dbitem_export_helper.php
@@ -1350,22 +1350,24 @@
$object = $event->getObject(Array ('skip_autoload' => true));
$options = $object->GetFieldOptions('ExportPresets');
- $export_settings = $this->Application->RecallPersistentVar('export_settings');
+ $where_clause = array(
+ 'ItemPrefix = ' . $this->Conn->qstr($event->Prefix),
+ 'PortalUserId = ' . $this->Application->RecallVar('user_id'),
+ );
+ $sql = 'SELECT PresetData, PresetName
+ FROM ' . TABLE_PREFIX . 'ExportUserPresets
+ WHERE (' . implode(') AND (', $where_clause) . ')';
+ $export_settings = $this->Conn->GetCol($sql, 'PresetName');
if ( !$export_settings ) {
return;
}
- $export_settings = unserialize($export_settings);
-
- if ( !isset($export_settings[$event->Prefix]) ) {
- return;
- }
-
$export_presets = array ('' => '');
- foreach ($export_settings[$event->Prefix] as $key => $val) {
- $export_presets[implode('|', $val['ExportColumns'])] = $key;
+ foreach ( $export_settings as $name => $data ) {
+ $data = json_decode($data, true);
+ $export_presets[implode('|', $data['ExportColumns'])] = $name;
}
$options['options'] = $export_presets;
@@ -1488,12 +1490,13 @@
if ( $this->verifyOptions($event) ) {
if ( $this->_getExportSavePreset($object) ) {
- $name = $object->GetDBField('ExportPresetName');
-
- $export_settings = $this->Application->RecallPersistentVar('export_settings');
- $export_settings = $export_settings ? unserialize($export_settings) : array ();
- $export_settings[$event->Prefix][$name] = $field_values;
- $this->Application->StorePersistentVar('export_settings', serialize($export_settings));
+ $fields_hash = array(
+ 'PortalUserId' => $this->Application->RecallVar('user_id'),
+ 'ItemPrefix' => $event->Prefix,
+ 'PresetName' => $object->GetDBField('ExportPresetName'),
+ 'PresetData' => json_encode($field_values),
+ );
+ $this->Conn->doInsert($fields_hash, TABLE_PREFIX . 'ExportUserPresets', 'REPLACE');
}
$progress_t = $this->Application->RecallVar('export_progress_t');
Index: modules/in-commerce/admin_templates/orders/export/export.tpl
===================================================================
--- modules/in-commerce/admin_templates/orders/export/export.tpl
+++ modules/in-commerce/admin_templates/orders/export/export.tpl
@@ -101,8 +101,16 @@
function delete_preset()
{
+ var presets = document.getElementById('<inp2:ord.export_InputName field="ExportPresets"/>'),
+ delete_preset_name = presets.options[presets.selectedIndex].text;
+
+ if ( delete_preset_name === '' ) {
+ return;
+ }
+
if (!confirm('<inp2:m_Phrase label="la_ConfirmDeleteExportPreset" js_escape="1"/>')) return;
var $kf = document.getElementById('kernel_form');
+ set_hidden_field('delete_preset_name', delete_preset_name);
tmp = $kf.elements['events[ord.export]'].value;
$kf.elements['events[ord.export]'].value = 'OnDeleteExportPreset';
Request.method = 'POST';
@@ -113,7 +121,7 @@
for (i=0; i< presets.options.length; i++) {
if (presets.options[i].selected) {
- presets.options.remove[i];
+ presets.options[i].remove();
}
}
presets.options[0].selected = true;
@@ -168,4 +176,4 @@
</script>
-<inp2:m_include t="incs/footer"/>
\ No newline at end of file
+<inp2:m_include t="incs/footer"/>
Event Timeline
Log In to Comment