public function process(Tracker_Artifact $artifact, array $fields_data) { $tracker_data = array(); //only when a previous changeset exists if (!$artifact->getLastChangeset() instanceof Tracker_Artifact_Changeset_Null) { foreach ($artifact->getLastChangeset()->getValues() as $key => $field) { if ($field instanceof Tracker_Artifact_ChangesetValue_Date || $field instanceof Tracker_Artifact_ChangesetValue_List) { $tracker_data[$key] = $field->getValue(); } } } //replace where appropriate with submitted values foreach ($fields_data as $key => $value) { $tracker_data[$key] = $value; } //addlastUpdateDate and submitted on if available foreach ($this->formelement_factory->getAllFormElementsForTracker($artifact->getTracker()) as $field) { if ($field instanceof Tracker_FormElement_Field_LastUpdateDate) { $tracker_data[$field->getId()] = date("Y-m-d"); } if ($field instanceof Tracker_FormElement_Field_SubmittedOn) { $tracker_data[$field->getId()] = $artifact->getSubmittedOn(); } if ($field instanceof Tracker_FormElement_Field_Date && !array_key_exists($field->getId(), $tracker_data)) { //user doesn't have access to field $tracker_data[$field->getId()] = $field->getValue($field->getId()); } } return $tracker_data; }