public function build(Tracker_FormElement $field, $type, array $permissions)
 {
     $this->field_id = JsonCast::toInt($field->getId());
     $this->name = $field->getName();
     $this->label = $field->getLabel();
     if ($field instanceof Tracker_FormElement_Field) {
         $this->required = JsonCast::toBoolean($field->isRequired());
         $this->collapsed = false;
     } else {
         $this->required = false;
         $this->collapsed = (bool) $field->isCollapsed();
     }
     $this->default_value = $field->getDefaultValue();
     $this->type = $type;
     $this->values = null;
     if ($field->getRESTAvailableValues()) {
         $this->values = $field->getRESTAvailableValues();
     }
     $bindings = $field->getSoapBindingProperties();
     $this->bindings = array(self::BIND_TYPE => $bindings[Tracker_FormElement_Field_List_Bind::SOAP_TYPE_KEY], self::BIND_LIST => array_map(function ($binding) {
         return array(Tracker_REST_FieldRepresentation::BIND_ID => $binding[Tracker_FormElement_Field_List_Bind_Users::SOAP_BINDING_LIST_ID], Tracker_REST_FieldRepresentation::BIND_LABEL => $binding[Tracker_FormElement_Field_List_Bind_Users::SOAP_BINDING_LIST_LABEL]);
     }, $bindings[Tracker_FormElement_Field_List_Bind::SOAP_LIST_KEY]));
     $this->permissions = array_map(function ($permission) {
         switch ($permission) {
             case Tracker_FormElement::SOAP_PERMISSION_READ:
                 return Tracker_REST_FieldRepresentation::PERM_READ;
             case Tracker_FormElement::SOAP_PERMISSION_UPDATE:
                 return Tracker_REST_FieldRepresentation::PERM_UPDATE;
             case Tracker_FormElement::SOAP_PERMISSION_SUBMIT:
                 return Tracker_REST_FieldRepresentation::PERM_CREATE;
         }
     }, $permissions);
 }
Example #2
0
 /**
  * html form for the label 
  *
  * @return string html
  */
 public function fetchLabelForShared()
 {
     $html = '';
     $html .= '<p>';
     $html .= '<label>' . $GLOBALS['Language']->getText('plugin_tracker_include_report', 'field_label') . '</label>';
     $html .= $this->formElement->getLabel();
     $html .= '<input type="hidden" name="formElement_data[use_it]" value="1" />';
     $html .= '</p>';
     $html .= $this->fetchCustomHelp();
     return $html;
 }
 private function saveValuesMapping(array $mapping_tracker_info, Tracker $mapping_tracker, Tracker_FormElement $field)
 {
     if (empty($mapping_tracker_info['values']) || !is_array($mapping_tracker_info['values'])) {
         return;
     }
     $nb_changes = 0;
     $mapping_changed = false;
     foreach ($mapping_tracker_info['values'] as $column_id => $values) {
         if ($this->mappingValuesChanged($mapping_tracker, $column_id, $values)) {
             $mapping_changed = true;
             $this->value_dao->deleteAllFieldValues($this->tracker->getId(), $mapping_tracker->getId(), $field->getId(), $column_id);
             foreach ($values as $value_id) {
                 $nb_changes += $this->value_dao->save($this->tracker->getId(), $mapping_tracker->getId(), $field->getId(), (int) $value_id, $column_id);
             }
         }
     }
     if ($mapping_changed && $nb_changes > 0) {
         $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_cardwall', 'on_top_mapping_values_changed', array($field->getLabel())));
     }
 }