/**
  * The Id of the (SB) field used for status semantic, or 0 if no field
  * 
  * @return int The Id of the (SB) field used for status semantic, or 0 if no field
  */
 public function getFieldId()
 {
     if ($this->list_field) {
         return $this->list_field->getId();
     } else {
         return 0;
     }
 }
 public function getFieldDataFromRESTObject(array $rest_data, Tracker_FormElement_Field_List $field)
 {
     if (isset($rest_data['id']) && is_numeric($rest_data['id'])) {
         $id = (int) $rest_data['id'];
         try {
             $this->getValue($id);
         } catch (Tracker_FormElement_InvalidFieldValueException $e) {
             if (!$this->getOpenValueDao()->searchById($field->getId(), $id)->getRow()) {
                 throw new Tracker_FormElement_InvalidFieldValueException('Bind Value with ID ' . $id . ' does not exist for field ID ' . $field->getId());
             }
             return Tracker_FormElement_Field_OpenList::OPEN_PREFIX . $id;
         }
         return Tracker_FormElement_Field_OpenList::BIND_PREFIX . $id;
     }
     if (isset($rest_data['label'])) {
         $identifier = (string) $rest_data['label'];
     } else {
         throw new Tracker_FormElement_InvalidFieldValueException('OpenList static fields values should be passed as an object with at least one of the properties "id" or "label"');
     }
     $row = $this->getOpenValueDao()->searchByExactLabel($field->getId(), $identifier)->getRow();
     if ($row) {
         return Tracker_FormElement_Field_OpenList::OPEN_PREFIX . $row['id'];
     }
     return Tracker_FormElement_Field_OpenList::NEW_VALUE_PREFIX . $identifier;
 }
 public function getFieldDataFromRESTObject(array $rest_data, Tracker_FormElement_Field_List $field)
 {
     $project = $field->getTracker()->getProject();
     if (isset($rest_data['id'])) {
         $representation_class = '\\Tuleap\\Project\\REST\\UserGroupRepresentation';
         $value = call_user_func_array($representation_class . '::getProjectAndUserGroupFromRESTId', array($rest_data['id']));
         $id = $value['user_group_id'];
         $bind_value = $this->getValueByUGroupId($id);
         if ($bind_value) {
             return Tracker_FormElement_Field_OpenList::BIND_PREFIX . $bind_value->getId();
         }
         $user_group = $this->ugroup_manager->getUGroup($project, $id);
         if (!$user_group) {
             throw new Tracker_FormElement_InvalidFieldValueException('User Group with ID ' . $id . ' does not exist for field ID ' . $field->getId());
         }
         if (!$bind_value) {
             $identifier = $user_group->getName();
         }
     } else {
         if (isset($rest_data['short_name'])) {
             $name = (string) $rest_data['short_name'];
             $user_group = $this->ugroup_manager->getUGroupByName($project, $name);
             if (!$user_group) {
                 throw new Tracker_FormElement_InvalidFieldValueException('User Group with short_name ' . $name . ' does not exist for field ID ' . $field->getId());
             }
             $identifier = $name;
         } else {
             throw new Tracker_FormElement_InvalidFieldValueException('OpenList static fields values should be passed as an object with at least one of the properties "id" or "short_name"');
         }
     }
     $row = $this->getOpenValueDao()->searchByExactLabel($field->getId(), $identifier)->getRow();
     if ($row) {
         return Tracker_FormElement_Field_OpenList::OPEN_PREFIX . $row['id'];
     }
     return Tracker_FormElement_Field_OpenList::NEW_VALUE_PREFIX . $identifier;
 }
 public function getFieldDataFromRESTObject(array $rest_data, Tracker_FormElement_Field_List $field)
 {
     if (isset($rest_data['id']) && is_numeric($rest_data['id'])) {
         $id = (int) $rest_data['id'];
         $user = $this->getValue($id);
         if (!$user) {
             throw new Tracker_FormElement_InvalidFieldValueException('Cannot Bind to user with ID ' . $id . ' for field ID ' . $field->getId());
         }
         return Tracker_FormElement_Field_OpenList::BIND_PREFIX . $id;
     }
     if (isset($rest_data['username'])) {
         $identifier = (string) $rest_data['username'];
         $user = $this->userManager->getUserByIdentifier($identifier);
         if (!$user) {
             throw new Tracker_FormElement_InvalidFieldValueException('Cannot Bind to user "' . $identifier . '" for field ID ' . $field->getId());
         }
         return Tracker_FormElement_Field_OpenList::BIND_PREFIX . $user->getId();
     }
     if (!isset($rest_data['email'])) {
         throw new Tracker_FormElement_InvalidFieldValueException('OpenList user fields values should be passed as an object with at least one of the properties "id", "username" or "email"');
     }
     $identifier = (string) $rest_data['email'];
     $user = $this->userManager->getUserByIdentifier("email:{$identifier}");
     if (!$user) {
         return Tracker_FormElement_Field_OpenList::NEW_VALUE_PREFIX . $identifier;
     }
     return Tracker_FormElement_Field_OpenList::BIND_PREFIX . $user->getId();
 }