/**
  * 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));
 }
 /**
  * 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;
     }
 }
 /**
  * Get a static reference to the storage object associated with this model object
  * 
  * @return the storage object
  */
 public static function get_so()
 {
     if (self::$so == null) {
         self::$so = CreateObject('controller.socontrol_group_list');
     }
     return self::$so;
 }