function view_closed_cases()
 {
     $check_list_id = phpgw::get_var('check_list_id');
     $case_location_code = phpgw::get_var('location_code');
     $check_list = $this->so_check_list->get_single($check_list_id);
     // Check list top section info
     $control = $this->so_control->get_single($check_list->get_control_id());
     $location_code = $check_list->get_location_code();
     $component_id = $check_list->get_component_id();
     if ($component_id > 0) {
         $location_id = $check_list->get_location_id();
         $component_id = $check_list->get_component_id();
         $component_arr = execMethod('property.soentity.read_single_eav', array('location_id' => $location_id, 'id' => $component_id));
         $location_name = execMethod('property.bolocation.get_location_name', $component_arr['location_code']);
         $short_desc = $location_name . '::' . execMethod('property.soentity.get_short_description', array('location_id' => $location_id, 'id' => $component_id));
         //				$short_desc = execMethod('property.soentity.get_short_description', array('location_id' => $location_id, 'id' => $component_id));
         $component = new controller_component();
         $component->set_id($component_id);
         $component->set_location_id($location_id);
         $component->set_location_code($component_arr['location_code']);
         $component->set_xml_short_desc($short_desc);
         $component_array = $component->toArray();
         $type = 'component';
         $building_location_code = $this->location_finder->get_building_location_code($component_arr['location_code']);
         $buildings_on_property = array();
     } else {
         $location_code = $check_list->get_location_code();
         $location_array = execMethod('property.bolocation.read_single', array('location_code' => $location_code));
         $type = 'location';
         // Fetches buildings on property
         $buildings_on_property = $this->location_finder->get_buildings_on_property($user_role, $location_code, $level);
     }
     // Check list top section info
     $level = $this->location_finder->get_location_level($location_code);
     $year = date("Y", $check_list->get_deadline());
     $month = date("n", $check_list->get_deadline());
     $user_role = true;
     $closed_check_items_and_cases = $this->so_check_item->get_check_items_with_cases($check_list_id, null, 'closed', null, $case_location_code);
     if ($buildings_on_property) {
         foreach ($buildings_on_property as &$building) {
             $building['selected'] = $building['id'] == $case_location_code ? 1 : 0;
         }
     }
     //---------
     foreach ($closed_check_items_and_cases as $key => $check_item) {
         //		$control_item_with_options = $this->so_control_item->get_single_with_options( $check_item->get_control_item_id() );
         foreach ($check_item->get_cases_array() as $case) {
             $component_location_id = $case->get_component_location_id();
             $component_id = $case->get_component_id();
             if ($component_id) {
                 $short_desc = execMethod('property.soentity.get_short_description', array('location_id' => $component_location_id, 'id' => $component_id));
                 $case->set_component_descr($short_desc);
             }
         }
         //		$check_item->get_control_item()->set_options_array( $control_item_with_options->get_options_array() );
         //		$closed_check_items_and_cases[$key] = $check_item;
     }
     //-------
     $data = array('control' => $control, 'check_list' => $check_list, 'buildings_on_property' => $buildings_on_property, 'location_array' => $location_array, 'component_array' => $component_array, 'type' => $type, 'location_level' => $level, 'current_year' => $year, 'current_month_nr' => $month, 'closed_check_items_and_cases' => $closed_check_items_and_cases, 'check_list' => $check_list, 'cases_view' => 'closed_cases', 'building_location_code' => $building_location_code);
     phpgwapi_jquery::load_widget('core');
     self::add_javascript('controller', 'controller', 'case.js');
     self::add_javascript('controller', 'controller', 'check_list_update_status.js');
     self::render_template_xsl(array('check_list/fragments/check_list_menu', 'case/cases_tab_menu', 'case/view_closed_cases', 'case/case_row', 'check_list/fragments/nav_control_plan', 'check_list/fragments/check_list_top_section', 'check_list/fragments/select_buildings_on_property'), $data);
 }
 function view_control_info()
 {
     $check_list_id = phpgw::get_var('check_list_id');
     $check_list = $this->so->get_single($check_list_id);
     $control = $this->so_control->get_single($check_list->get_control_id());
     $component_id = $check_list->get_component_id();
     if ($component_id > 0) {
         $location_id = $check_list->get_location_id();
         $component_id = $check_list->get_component_id();
         $component_arr = execMethod('property.soentity.read_single_eav', array('location_id' => $location_id, 'id' => $component_id));
         $location_name = execMethod('property.bolocation.get_location_name', $component_arr['location_code']);
         $short_desc = $location_name . '::' . execMethod('property.soentity.get_short_description', array('location_id' => $location_id, 'id' => $component_id));
         $component = new controller_component();
         $component->set_id($component_id);
         $component->set_location_id($location_id);
         $component->set_location_code($component_arr['location_code']);
         $component->set_xml_short_desc($short_desc);
         $component_array = $component->toArray();
         $type = 'component';
         $building_location_code = $this->location_finder->get_building_location_code($component_arr['location_code']);
     } else {
         $location_code = $check_list->get_location_code();
         $location_array = execMethod('property.bolocation.read_single', array('location_code' => $location_code));
         $type = 'location';
         $level = $this->location_finder->get_location_level($location_code);
     }
     $year = date("Y", $check_list->get_deadline());
     $month = date("n", $check_list->get_deadline());
     $level = $this->location_finder->get_location_level($location_code);
     $user_role = true;
     // Fetches buildings on property
     $buildings_on_property = $this->location_finder->get_buildings_on_property($user_role, $location_code, $level);
     $data = array('control' => $control, 'check_list' => $check_list, 'buildings_on_property' => $buildings_on_property, 'location_array' => $location_array, 'component_array' => $component_array, 'type' => $type, 'current_year' => $year, 'current_month_nr' => $month, 'building_location_code' => $building_location_code, 'location_level' => $level);
     phpgwapi_jquery::load_widget('core');
     self::add_javascript('controller', 'controller', 'check_list_update_status.js');
     self::render_template_xsl(array('check_list/fragments/check_list_menu', 'check_list/fragments/check_list_top_section', 'check_list/fragments/nav_control_plan', 'check_list/view_control_info', 'check_list/fragments/select_buildings_on_property'), $data);
 }
 /**
  * Get all controls assosiated with a component
  *
  * @param array $data location_id and component_id
  * @return array controls assosiated with a component
  * @throws Exception if missing valid input
  */
 function get_controls_at_component2($data)
 {
     if (!isset($data['location_id']) || !$data['location_id']) {
         throw new Exception("controller_socontrol::get_controls_at_component - Missing location_id in input");
     }
     if (!isset($data['id']) || !$data['id']) {
         throw new Exception("controller_socontrol::get_controls_at_component - Missing component_id in input");
     }
     static $users = array();
     // cache result
     $location_id = (int) $data['location_id'];
     $component_id = (int) $data['id'];
     $sql = "SELECT DISTINCT controller_control_component_list.* ," . " controller_control.id as control_id, controller_control.title, controller_control.enabled as control_enabled," . " controller_control_component_list.enabled as relation_enabled," . " controller_control_serie.enabled as serie_enabled," . " controller_control_serie.id as serie_id," . " controller_control_serie.assigned_to,controller_control_serie.start_date," . " controller_control_serie.repeat_type,controller_control_serie.repeat_interval," . " controller_control_serie.service_time,controller_control_serie.controle_time " . " FROM controller_control_component_list" . " {$this->db->join} controller_control ON controller_control.id = controller_control_component_list.control_id" . " {$this->db->left_join} controller_control_serie ON (controller_control_component_list.id = controller_control_serie.control_relation_id AND controller_control_serie.control_relation_type = 'component')" . " WHERE location_id = {$location_id} AND component_id = {$component_id}";
     //			_debug_array($sql);
     $this->db->query($sql, __LINE__, __FILE__);
     $components_array = array();
     $control_relations = array();
     while ($this->db->next_record()) {
         $control_relations[] = array('control_id' => $this->db->f('control_id'), 'serie_id' => $this->db->f('serie_id'), 'assigned_to' => $this->db->f('assigned_to'), 'start_date' => $this->db->f('start_date'), 'repeat_type' => $this->db->f('repeat_type'), 'repeat_interval' => $this->db->f('repeat_interval'), 'service_time' => $this->db->f('service_time'), 'controle_time' => $this->db->f('controle_time'), 'serie_enabled' => (int) $this->db->f('serie_enabled'));
     }
     foreach ($control_relations as &$entry) {
         if ($entry['assigned_to'] && !isset($users[$entry['assigned_to']])) {
             $users[$entry['assigned_to']] = $GLOBALS['phpgw']->accounts->get($entry['assigned_to'])->__toString();
         }
         $entry['assigned_to_name'] = $users[$entry['assigned_to']];
         $component = new controller_component();
         //				$component->set_type($this->unmarshal($data['bim_type'], 'int'));
         $component->set_id($component_id);
         $component->set_location_id($location_id);
         $component->set_guid($this->unmarshal($data['guid'], 'string'));
         $component->set_location_code($this->unmarshal($data['location_code'], 'string'));
         $component->set_loc_1($this->unmarshal($data['loc_1'], 'string'));
         $component->set_address($this->unmarshal($data['address'], 'string'));
         //				$component->set_type_str($this->unmarshal($data['bim_type_description']), 'string'));
         $component->set_control_relation($entry);
         $components_array[] = $component;
     }
     return $components_array;
 }