public function extractArtifactDateFields(Tracker_Artifact $artifact, Tracker_Artifact_Changeset $last_changeset, array &$properties)
 {
     $tracker = $artifact->getTracker();
     $custom_date_fields = $this->form_element_factory->getUsedCustomDateFields($tracker);
     foreach ($custom_date_fields as $date_field) {
         $last_changeset_value = $last_changeset->getValue($date_field);
         if ($last_changeset->getValue($date_field) && $last_changeset_value) {
             $properties[$date_field->getName()] = date('c', $last_changeset_value->getTimestamp());
         }
     }
     $core_date_fields = $this->form_element_factory->getCoreDateFields($tracker);
     foreach ($core_date_fields as $date_field) {
         if ($date_field instanceof Tracker_FormElement_Field_SubmittedOn) {
             $properties[$date_field->getName()] = date('c', $artifact->getSubmittedOn());
         } elseif ($date_field instanceof Tracker_FormElement_Field_LastUpdateDate) {
             $properties[$date_field->getName()] = date('c', $artifact->getLastUpdateDate());
         }
     }
     $last_modified = $artifact->getLastUpdateDate();
     if ($last_modified === -1) {
         $last_modified = $artifact->getSubmittedOn();
     }
     $properties[self::LAST_UPDATE_PROPERTY] = date('c', $last_modified);
 }
 private function isUpdatingLatestVersion(Tracker_Artifact $artifact)
 {
     $valid_unmodified = true;
     $valid_match = true;
     if (isset($_SERVER['HTTP_IF_UNMODIFIED_SINCE'])) {
         $client_version = strtotime($_SERVER['HTTP_IF_UNMODIFIED_SINCE']);
         $last_version = $artifact->getLastUpdateDate();
         $valid_unmodified = $last_version == $client_version;
     }
     if (isset($_SERVER['HTTP_IF_MATCH'])) {
         $client_version = $_SERVER['HTTP_IF_MATCH'];
         $last_version = $artifact->getVersionIdentifier();
         $valid_match = $last_version == $client_version;
     }
     return $valid_unmodified && $valid_match;
 }