protected function populate(int $requirement_id, &$requirement)
 {
     if ($requirement == null) {
         $requirement = new logistic_requirement((int) $requirement_id);
         $requirement->set_activity_id($this->unmarshal($this->db->f('activity_id'), 'int'));
         $requirement->set_start_date($this->unmarshal($this->db->f('start_date'), 'int'));
         $requirement->set_end_date($this->unmarshal($this->db->f('end_date'), 'int'));
         $requirement->set_no_of_items($this->unmarshal($this->db->f('no_of_elements'), 'int'));
         $requirement->set_location_id($this->unmarshal($this->db->f('location_id'), 'int'));
     }
     return $requirement;
 }
 public function edit($requirement = null)
 {
     if ($nonavbar = phpgw::get_var('nonavbar', 'bool')) {
         $GLOBALS['phpgw_info']['flags']['nonavbar'] = $nonavbar;
         $GLOBALS['phpgw_info']['flags']['noheader_xsl'] = true;
         $GLOBALS['phpgw_info']['flags']['nofooter'] = true;
     }
     $requirement_id = phpgw::get_var('id');
     $activity_id = phpgw::get_var('activity_id');
     if ($requirement == null && $requirement_id && is_numeric($requirement_id)) {
         $requirement = $this->so->get_single($requirement_id);
         $activity = $this->so_activity->get_single($requirement->get_activity_id());
         $project = $this->so_project->get_single($activity->get_project_id());
     } else {
         if ($requirement == null) {
             $requirement = new logistic_requirement();
         }
         if ($activity_id && is_numeric($activity_id)) {
             $activity = $this->so_activity->get_single($activity_id);
             $requirement->set_start_date($activity->get_start_date());
             $requirement->set_end_date($activity->get_end_date());
             $project = $this->so_project->get_single($activity->get_project_id());
         }
     }
     $accounts = $GLOBALS['phpgw']->acl->get_user_list_right(PHPGW_ACL_READ, 'run', 'logistic');
     $entity_list = execMethod('property.soadmin_entity.read', array('allrows' => true));
     $filters = array('project_type_id' => $project->get_project_type_id());
     $search_type = 'distinct_location_id';
     $distict_location_ids = $this->so_resource_type_requirement->get($start_index, $num_of_objects, $sort_field, $sort_ascending, $search_for, $search_type, $filters);
     $distict_location_ids_array = array();
     foreach ($distict_location_ids as $logistic_resource_type_requirement) {
         $location_id = $logistic_resource_type_requirement->get_id();
         $loc_arr = $GLOBALS['phpgw']->locations->get_name($location_id);
         $loc_arr['location_id'] = $location_id;
         $distict_locations_array[] = $loc_arr;
     }
     $custom = createObject('phpgwapi.custom_fields');
     $attribute_requirement_array = array();
     foreach ($attribute_requirement_types as $attribute_requirement) {
         $location_id = $attribute_requirement->get_location_id();
         $cust_attribute_id = $attribute_requirement->get_cust_attribute_id();
         $loc_arr = $GLOBALS['phpgw']->locations->get_name($location_id);
         $entity_arr = explode('.', $loc_arr['location']);
         $entity_id = $entity_arr[2];
         $cat_id = $entity_arr[3];
         $attrib_data = $custom->get('property', ".entity.{$entity_id}.{$cat_id}", $cust_attribute_id);
         $attribute_requirement_array[] = $attrib_data;
     }
     $tabs = $this->make_tab_menu($requirement_id);
     $data = array('tabs' => $GLOBALS['phpgw']->common->create_tabs($tabs, 0), 'view' => "requirement_details", 'requirement' => $requirement, 'distict_locations' => $distict_locations_array, 'editable' => true, 'nonavbar' => $nonavbar);
     if ($activity_id > 0) {
         $data['activity'] = $activity;
     } else {
         $activity = $this->so_activity->get_single($requirement->get_activity_id());
         $data['activity'] = $activity;
     }
     $GLOBALS['phpgw']->jqcal->add_listener('start_date', 'datetime');
     $GLOBALS['phpgw']->jqcal->add_listener('end_date', 'datetime');
     self::render_template_xsl(array('requirement/requirement_tabs', 'requirement/requirement_item'), $data);
 }