Page MenuHomeIn-Portal Phabricator

D420.id1039.diff
No OneTemporary

File Metadata

Created
Wed, Feb 26, 8:58 AM

D420.id1039.diff

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