public function save()
 {
     if (!$this->add && !$this->edit) {
         $GLOBALS['phpgw']->redirect_link('/index.php', array('menuaction' => 'controller.uicontrol_item.index'));
     }
     $control_item_id = phpgw::get_var('id');
     $title = phpgw::get_var('title');
     $required = phpgw::get_var('required') == 'on' ? true : false;
     $type = phpgw::get_var('control_item_type');
     $control_group_id = phpgw::get_var('control_group');
     $control_area_id = phpgw::get_var('control_area');
     $what_to_do_txt = phpgw::get_var('what_to_do', 'html');
     $what_to_do_txt = str_replace(" ", " ", $what_to_do_txt);
     $how_to_do_txt = phpgw::get_var('how_to_do', 'html');
     $how_to_do_txt = str_replace(" ", " ", $how_to_do_txt);
     if ($control_item_id > 0) {
         $control_item = $this->so->get_single($control_item_id);
     } else {
         $control_item = new controller_control_item();
     }
     $control_item->set_title($title);
     $control_item->set_required($required);
     $control_item->set_control_group_id($control_group_id);
     $control_item->set_control_area_id($control_area_id);
     $control_item->set_type($type);
     $control_item->set_what_to_do($what_to_do_txt);
     $control_item->set_how_to_do($how_to_do_txt);
     if ($control_item->validate()) {
         $transaction_status = true;
         $db_control_item = $this->so->get_db();
         $db_control_item->transaction_begin();
         $saved_control_item_id = $this->so->store($control_item);
         if ($saved_control_item_id == 0) {
             $transaction_status = false;
         }
         // Delete item option values
         $delete_status = $this->so->delete_option_values($saved_control_item_id);
         if ($delete_status == 0) {
             $transaction_status = false;
         }
         if ($transaction_status == true) {
             $db_control_item->transaction_commit();
         } else {
             $db_control_item->transaction_abort();
         }
         $option_values = array();
         $option_values = phpgw::get_var('option_values');
         $option_values_array = array();
         foreach ($option_values as $option_value) {
             $control_item_option = new controller_control_item_option($option_value, $saved_control_item_id);
             $option_values_array[] = $control_item_option;
         }
         $control_item->set_options_array($option_values_array);
         // Add new control item option values
         if ($transaction_status & $saved_control_item_id > 0 & ($control_item->get_type() == 'control_item_type_3' | $control_item->get_type() == 'control_item_type_4')) {
             $control_item_options_array = $control_item->get_options_array();
             foreach ($control_item_options_array as $control_item_option) {
                 $control_item_option_id = $this->so_control_item_option->store($control_item_option);
             }
         }
         $GLOBALS['phpgw']->redirect_link('/index.php', array('menuaction' => 'controller.uicontrol_item.view', 'id' => $saved_control_item_id));
     } else {
         $this->edit($control_item);
     }
 }
 /**
  * Get control items for a control within control group  
  * 
  * @param	$control_id control id
  * @param	$control_group_id control group id
  * @return void
  */
 function get_items_for_control_group($control_id, $control_group_id)
 {
     $control_id = (int) $control_id;
     $control_group_id = (int) $control_group_id;
     $results = array();
     $sql = "select ci.* from controller_control_item ci, controller_control_item_list cil where ci.control_group_id = {$control_group_id} and cil.control_id = {$control_id} and ci.id = cil.control_item_id";
     $this->db->query($sql, __LINE__, __FILE__);
     while ($this->db->next_record()) {
         //create check_item and add to return array
         $control_item = new controller_control_item($this->unmarshal($this->db->f('id'), 'int'));
         $control_item->set_title($this->unmarshal($this->db->f('title', true), 'string'));
         $control_item->set_required($this->unmarshal($this->db->f('required', true), 'boolean'));
         $control_item->set_type($this->unmarshal($this->db->f('type', true), 'string'));
         $control_item->set_what_to_do($this->unmarshal($this->db->f('what_to_do', true), 'string'));
         $control_item->set_how_to_do($this->unmarshal($this->db->f('how_to_do', true), 'string'));
         $control_item->set_control_group_id($this->unmarshal($this->db->f('control_group_id'), 'int'));
         $control_item->set_control_area_id($this->unmarshal($this->db->f('control_area_id'), 'int'));
         $results[] = $control_item;
     }
     return $results;
 }