public function updateArtifacts(PFUser $user, Codendi_Request $request)
 {
     if ($this->tracker->userIsAdmin($user)) {
         $masschange_aids = $request->get('masschange_aids');
         if (empty($masschange_aids)) {
             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_masschange_detail', 'no_items_selected'));
             $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->tracker->getId());
         }
         $unsubscribe = $request->get('masschange-unsubscribe-option');
         if ($unsubscribe) {
             $this->unsubscribeUserFromEachArtifactNotification($user, $request, $masschange_aids);
         }
         $send_notifications = $this->getSendNotificationsFromRequest($request);
         $masschange_data = $request->get('artifact');
         if (!$unsubscribe && empty($masschange_data)) {
             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_masschange_detail', 'no_items_selected'));
             $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->tracker->getId());
         }
         $comment = $request->get('artifact_masschange_followup_comment');
         $masschange_values_extractor = new Tracker_MasschangeDataValueExtractor();
         $new_fields_data = $masschange_values_extractor->getNewValues($masschange_data);
         if (count($new_fields_data) > 0 || $comment !== '') {
             $comment_format = $request->get('comment_formatmass_change');
             $this->tracker->updateArtifactsMasschange($user, $masschange_aids, $new_fields_data, $comment, $send_notifications, $comment_format);
         }
         $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->tracker->getId());
     } else {
         $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied'));
         $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->tracker_report->getId());
     }
 }
 public function itReturnsFieldWithItNewValue()
 {
     stub($GLOBALS['Language'])->getText('global', 'unchanged')->returns('Unchanged');
     $masschange_data_values_manager = new Tracker_MasschangeDataValueExtractor();
     $masschange_data = array(1 => 'Unchanged', 2 => 'Value01', 3 => array('Unchanged'), 4 => array('Value02'));
     $expected_result = array(2 => 'Value01', 4 => array('Value02'));
     $this->assertEqual($expected_result, $masschange_data_values_manager->getNewValues($masschange_data));
 }