/** * Get single control_group_list object by specifying parameters control id and control group id * * @param $control_id control id * @param $control group id control group id * @return a control_group_list */ function get_group_list_by_control_and_group($control_id, $control_group_id) { $control_id = (int) $control_id; $control_group_id = (int) $control_group_id; $sql = "SELECT p.* FROM controller_control_group_list p WHERE p.control_id={$control_id} AND p.control_group_id={$control_group_id}"; $this->db->query($sql, __LINE__, __FILE__); if ($this->db->next_record()) { $control_group_list = new controller_control_group_list($this->unmarshal($this->db->f('id'), 'int')); $control_group_list->set_control_id($this->unmarshal($this->db->f('control_id'), 'int')); $control_group_list->set_control_group_id($this->unmarshal($this->db->f('control_group_id'), 'int')); $control_group_list->set_order_nr($this->unmarshal($this->db->f('order_nr'), 'int')); return $control_group_list; } else { return null; } }
/** * Public function for saving control groups. * * @param HTTP::id the control_id, and a comma seperated list of group ids * @return redirect to function view_control_items */ public function save_control_groups() { if (!$this->add && !$this->edit) { $GLOBALS['phpgw']->redirect_link('/index.php', array('menuaction' => 'controller.uicontrol.index')); } $control_id = phpgw::get_var('control_id'); $control_group_ids = phpgw::get_var('control_group_ids'); // Fetches saved control groups $saved_control_groups = $this->so_control_group_list->get_control_groups_by_control($control_id); // Deletes groups from control that's not among the chosen groups foreach ($saved_control_groups as $group) { // If saved group id not among chosen control ids, delete the group for the control if (!in_array($group->get_id(), $control_group_ids)) { $this->so_control_group_list->delete($control_id, $group->get_id()); // Deletes control items for group $this->so_control_item_list->delete_control_items_for_group_list($control_id, $group->get_id()); } } $group_order_nr = 1; // Saving control groups foreach ($control_group_ids as $control_group_id) { $control_group = $this->so_control_group_list->get_group_list_by_control_and_group($control_id, $control_group_id); if ($control_group == null) { $control_group_list = new controller_control_group_list(); $control_group_list->set_control_id($control_id); $control_group_list->set_control_group_id($control_group_id); $control_group_list->set_order_nr($group_order_nr); $this->so_control_group_list->add($control_group_list); $group_order_nr++; } } // Redirect: view_control_items $this->redirect(array('menuaction' => 'controller.uicontrol.view_control_items', 'control_id' => $control_id)); }