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 userCanViewTracker(PFUser $user, Tracker $tracker) { if ($user->isSuperUser()) { return true; } if ($tracker->userIsAdmin($user)) { return true; } $project = $tracker->getProject(); if ($this->userIsRestrictedAndNotMemberOfProject($user, $project) || $this->userIsNotMemberOfPrivateProject($user, $project)) { return false; } foreach ($tracker->getPermissionsByUgroupId() as $ugroup_id => $permission_types) { if ($user->isMemberOfUGroup($ugroup_id, $tracker->getGroupId())) { return true; } } return false; }