/** * Public function for saving control details * * @param HTTP:: control id, control details fields * @return redirect to function view_control_groups */ public function save_control_details() { if (!$this->add && !$this->edit) { $GLOBALS['phpgw']->redirect_link('/index.php', array('menuaction' => 'controller.uicontrol.index')); } $control_id = phpgw::get_var('control_id'); // Update existing control details $delete_control_groups = false; if (isset($control_id) && $control_id > 0) { $control = $this->so->get_single($control_id); $control_area_id_in_db = $control->get_control_area_id(); $control->populate(); $control_area_id_from_req = $control->get_control_area_id(); // DELETE EARLIER SAVED CONTROL GROUPS // If control are is different from a previous registration - delete related groups if ($control_area_id_in_db > 0 & $control_area_id_in_db != $control_area_id_from_req) { $delete_control_groups = true; } } else { $control = new controller_control(); $control->populate(); } // SAVE CONTROL DETAILS if ($control->validate()) { if ($delete_control_groups) { // Deleting earlier saved control groups $this->so_control_group_list->delete_control_groups($control_id); $saved_control_items = $this->so_control_item_list->get_control_items_by_control($control_id); foreach ($saved_control_items as $control_item) { $this->so_control_item_list->delete($control->get_id(), $control_item->get_id()); } } $control_id = $this->so->store($control); $this->redirect(array('menuaction' => 'controller.uicontrol.view_control_groups', 'control_id' => $control_id)); } else { $this->view_control_details($control); } }