/**
  * @see Tracker_Artifact_Changeset_NewChangesetCreatorBase::saveNewChangesetForField()
  */
 protected function saveNewChangesetForField(Tracker_FormElement_Field $field, Tracker_Artifact $artifact, $previous_changeset, array $fields_data, PFUser $submitter, $changeset_id)
 {
     $is_submission = false;
     $bypass_perms = true;
     $workflow = $artifact->getWorkflow();
     if ($this->isFieldSubmitted($field, $fields_data)) {
         if ($field->userCanUpdate()) {
             return $field->saveNewChangeset($artifact, $previous_changeset, $changeset_id, $fields_data[$field->getId()], $submitter, $is_submission);
         } else {
             if ($workflow && $workflow->bypassPermissions($field)) {
                 return $field->saveNewChangeset($artifact, $previous_changeset, $changeset_id, $fields_data[$field->getId()], $submitter, $is_submission, $bypass_perms);
             } else {
                 return $field->saveNewChangeset($artifact, $previous_changeset, $changeset_id, null, $submitter, $is_submission);
             }
         }
     } else {
         return $field->saveNewChangeset($artifact, $previous_changeset, $changeset_id, null, $submitter, $is_submission);
     }
 }
 /**
  * @see parent::saveNewChangesetForField()
  */
 protected function saveNewChangesetForField(Tracker_FormElement_Field $field, Tracker_Artifact $artifact, array $fields_data, PFUser $submitter, $changeset_id)
 {
     $is_submission = true;
     $bypass_perms = true;
     $workflow = $artifact->getWorkflow();
     if ($this->isFieldSubmitted($field, $fields_data)) {
         if ($field->userCanSubmit()) {
             $field->saveNewChangeset($artifact, null, $changeset_id, $fields_data[$field->getId()], $submitter, $is_submission);
         } else {
             if ($workflow && $workflow->bypassPermissions($field)) {
                 $field->saveNewChangeset($artifact, null, $changeset_id, $fields_data[$field->getId()], $submitter, $is_submission, $bypass_perms);
             }
         }
     } else {
         if (!$field->userCanSubmit() && $field->isSubmitable()) {
             $this->pushDefaultValueInSubmittedValues($field, $fields_data);
             $field->saveNewChangeset($artifact, null, $changeset_id, $fields_data[$field->getId()], $submitter, $is_submission, $bypass_perms);
         }
     }
 }
 private function askWorkflowToUpdateTheRequestAndCheckGlobalRules(Tracker_Artifact $artifact, array &$fields_data, PFUser $submitter)
 {
     $workflow = $artifact->getWorkflow();
     if ($workflow) {
         $workflow->before($fields_data, $submitter, $artifact);
         $augmented_data = $this->field_initializator->process($artifact, $fields_data);
         try {
             $workflow->checkGlobalRules($augmented_data, $this->formelement_factory);
         } catch (Tracker_Workflow_GlobalRulesViolationException $e) {
             return false;
         }
     }
     return true;
 }