private function _postProcess() { Configuration::updateValue('LEO_ANIMATELOAD', Tools::getValue('LEO_ANIMATELOAD')); $listGroupId = LeoManageWidgetGroup::getAllGroupId(); $listColumnId = LeoManageWidgetColumn::getAllColumnId(); $listRowId = LeoManagerWidgetContent::getAllRowId(); $res = 1; $data_form = Tools::getValue('data_form'); $data_form = Tools::jsonDecode($data_form, true); $context = Context::getContext(); $id_shop = $context->shop->id; if ($data_form['deletedObj']) { //delete row if (isset($data_form['deletedObj']['deletedRow']) && $data_form['deletedObj']['deletedRow']) { $rowList = explode(',', $data_form['deletedObj']['deletedRow']); //remove empty element $rowList = array_filter($rowList); foreach ($rowList as $value) { if ($value && ($key = array_search($value, $listRowId)) !== false) { $rowModel = new LeoManagerWidgetContent(); $rowModel->id = $value; if ($rowModel->delete()) { unset($listRowId[$key]); } } } } //delete column if (isset($data_form['deletedObj']['deletedColumn']) && $data_form['deletedObj']['deletedColumn']) { $columnList = explode(',', $data_form['deletedObj']['deletedColumn']); //remove empty element $columnList = array_filter($columnList); foreach ($columnList as $value) { if ($value && ($key = array_search($value, $listColumnId)) !== false) { $columnModel = new LeoManageWidgetColumn(); $columnModel->id = $value; if ($columnModel->delete()) { unset($listColumnId[$key]); } } } } //delete group if (isset($data_form['deletedObj']['deletedGroup']) && $data_form['deletedObj']['deletedGroup']) { $groupList = explode(',', $data_form['deletedObj']['deletedGroup']); $groupList = array_filter($groupList); foreach ($groupList as $value) { if ($value && ($key = array_search($value, $listGroupId)) !== false) { $groupModel = new LeoManageWidgetGroup(); $groupModel->id = $value; if ($groupModel->delete()) { unset($listGroupId[$key]); } } } } } $positionGroupByHook = array(); $positionColumnByGroup = array(); $positionRowByColumn = array(); if ($data_form['groups']) { foreach ($data_form['groups'] as $group) { if (!isset($group['params']) || !$group['params']) { continue; } //get all group value $params = $group['params']; $groupModel = new LeoManageWidgetGroup(); //asign group value to model object foreach ($this->_groupField as $gKey => $gField) { if (is_array($gField)) { $tmpObj = array(); foreach ($gField as $gF) { if (isset($params[$gF])) { $tmpObj[$gF] = $params[$gF]; } } $groupModel->{$gKey} = call_user_func('base64' . '_encode', Tools::jsonEncode($tmpObj)); } else { $groupModel->{$gField} = $params[$gField]; } } //assign postion number for group in each hook if (!isset($positionGroupByHook[$groupModel->hook_name])) { $groupModel->position = 1; $positionGroupByHook[$groupModel->hook_name] = 1; } else { $positionGroupByHook[$groupModel->hook_name] = (int) $positionGroupByHook[$groupModel->hook_name] + 1; $groupModel->position = $positionGroupByHook[$groupModel->hook_name]; } $groupModel->id_shop = $id_shop; $groupModel->hook_name = Tools::strtolower($groupModel->hook_name); //add new group if ($groupModel->id == 0 || !in_array($groupModel->id, $listGroupId)) { if (!$groupModel->add()) { $res = 0; $this->_html .= $this->displayError('Could add new Group in hook %s.', $groupModel->hook_name); } } else { if (!$groupModel->update()) { $res = 0; $this->_html .= $this->displayError('Could update Group in hook %s.', $groupModel->hook_name); } } if (isset($group['columns']) && $group['columns']) { foreach ($group['columns'] as $column) { $columnModel = new LeoManageWidgetColumn(); //asign group value to model object foreach ($this->_columnField as $cKey => $cField) { if (is_array($cField)) { $tmpObj = array(); foreach ($cField as $cF) { if (isset($column[$cF])) { $tmpObj[$cF] = $column[$cF]; } } $columnModel->{$cKey} = call_user_func('base64' . '_encode', Tools::jsonEncode($tmpObj)); } else { $columnModel->{$cField} = $column[$cField]; } } //assign grop ID $columnModel->id_group = $groupModel->id; //assign postion number for column in each group if (!isset($positionColumnByGroup[$columnModel->id_group])) { $columnModel->position = 1; $positionColumnByGroup[$columnModel->id_group] = 1; } else { $positionColumnByGroup[$columnModel->id_group] = (int) $positionColumnByGroup[$columnModel->id_group] + 1; $columnModel->position = $positionColumnByGroup[$columnModel->id_group]; } $columnModel->id_shop = $id_shop; if ($columnModel->id == 0 || !in_array($columnModel->id, $listColumnId)) { if (!$columnModel->add()) { $res = 0; $this->_html .= $this->displayError('Add process is error'); } } else { if (!$columnModel->update()) { $res = 0; $this->_html .= $this->displayError('Update process is error'); } } //close else //rows of the column if (isset($column['rows']) && $column['rows']) { foreach ($column['rows'] as $row) { $rowModel = new LeoManagerWidgetContent(); //asign row value to model object foreach ($this->_rowField as $cKey => $cField) { if (is_array($cField)) { $tmpObj = array(); foreach ($cField as $cF) { if (isset($row[$cF])) { $tmpObj[$cF] = $row[$cF]; } } $rowModel->{$cKey} = call_user_func('base64' . '_encode', Tools::jsonEncode($tmpObj)); } else { $rowModel->{$cField} = $row[$cField]; } } //assign grop ID $rowModel->id_column = $columnModel->id; $rowModel->id_shop = $id_shop; //assign postion number for row in each column if (!isset($positionRowByColumn[$rowModel->id_column])) { $rowModel->position = 1; $positionRowByColumn[$rowModel->id_column] = 1; } else { $positionRowByColumn[$rowModel->id_column] = (int) $positionRowByColumn[$rowModel->id_column] + 1; $rowModel->position = $positionRowByColumn[$rowModel->id_column]; } if ($rowModel->id == 0 || !in_array($rowModel->id, $listRowId)) { if (!$rowModel->add()) { $res = 0; $this->_html .= $this->displayError('Add process is error'); } } else { if (!$rowModel->update()) { $res = 0; $this->_html .= $this->displayError('Update process is error'); } } if (isset($row['deleteModule']) && $row['deleteModule'] == '1') { $this->deleteModuleFromHook($row['hook_name'], $row['module_name']); } } //close a row } //close rows } } //close a column } //close a group } //close group $this->clearHookCache(); Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name); //$this->_html .= ($res ? $this->displayConfirmation($this->l('Configuration updated')) : $this->displayError($this->l('The configuration could not be updated.'))); # validate module unset($res); }