public function updateConfiguration()
 {
     if (!$this->request->exist('kanban-title-admin')) {
         $this->response->missingKanbanTitle();
         return;
     }
     $kanban_is_activated = $this->getActivatedKanban();
     $this->config_manager->updateConfiguration($this->project_id, $this->config_manager->scrumIsActivatedForProject($this->project_id), $kanban_is_activated, $this->config_manager->getScrumTitle($this->project_id), $this->getKanbanTitle());
     if ($kanban_is_activated) {
         $this->first_kanban_creator->createFirstKanban();
     }
     $this->response->kanbanConfigurationUpdated();
 }
 public function update()
 {
     $vChildren = new Valid_UInt('children');
     $vChildren->required();
     if ($this->request->validArray($vChildren)) {
         $this->dao->updateChildren($this->tracker->getId(), $this->request->get('children'));
     } else {
         if ($this->request->exist('children')) {
             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_hierarchy', 'controller_bad_request'));
         } else {
             $this->dao->deleteAllChildren($this->tracker->getId());
         }
     }
     $this->redirect(array('tracker' => $this->tracker->getId(), 'func' => 'admin-hierarchy'));
 }
示例#3
0
 private function getCurrentCommitSha1()
 {
     if ($this->request->exist(self::OLD_COMMIT_TREE)) {
         return $this->request->get(self::OLD_COMMIT_TREE);
     }
     return 'HEAD';
 }
示例#4
0
 /**
  * Return the Tracker object that correspond to the given request
  *
  * @param Codendi_Request $request The request
  * @param User            $user    Who access the request
  * 
  * @return Tracker_Dispatchable_Interface
  */
 function getDispatchableFromRequest(Codendi_Request $request, User $user)
 {
     if ((int) $request->get('aid')) {
         if ($artifact = $this->getArtifactFactory()->getArtifactByid($request->get('aid'))) {
             return $artifact;
         } else {
             throw new Tracker_ResourceDoesntExistException($GLOBALS['Language']->getText('plugin_tracker_common_type', 'artifact_not_exist'));
         }
     } else {
         if ((int) $request->get('report')) {
             $store_in_session = true;
             if ($request->exist('store_in_session')) {
                 $store_in_session = (bool) $request->get('store_in_session');
             }
             if ($report = $this->getArtifactReportFactory()->getReportById($request->get('report'), $user->getId(), $store_in_session)) {
                 return $report;
             } else {
                 throw new Tracker_ResourceDoesntExistException($GLOBALS['Language']->getText('plugin_tracker_common_type', 'report_not_exist'));
             }
         } else {
             if ((int) $request->get('tracker') || (int) $request->get('atid')) {
                 $tracker_id = (int) $request->get('tracker');
                 if (!$tracker_id) {
                     $tracker_id = (int) $request->get('atid');
                 }
                 if ($tracker = $this->getTrackerFactory()->getTrackerByid($tracker_id)) {
                     return $tracker;
                 } else {
                     throw new Tracker_ResourceDoesntExistException($GLOBALS['Language']->getText('plugin_tracker_common_type', 'tracker_not_exist'));
                 }
             } else {
                 if ((int) $request->get('formElement')) {
                     if ($formElement = $this->getTracker_FormElementFactory()->getFormElementByid($request->get('formElement'))) {
                         return $formElement;
                     }
                 } else {
                     if ($request->get('func') == 'new-artifact-link') {
                         if ($artifact = Tracker_ArtifactFactory::instance()->getArtifactByid($request->get('id'))) {
                             return $artifact;
                         } else {
                             throw new Tracker_ResourceDoesntExistException($GLOBALS['Language']->getText('plugin_tracker_common_type', 'artifact_not_exist'));
                         }
                     } else {
                         if ((int) $request->get('link-artifact-id')) {
                             if ($artifact = Tracker_ArtifactFactory::instance()->getArtifactByid($request->get('link-artifact-id'))) {
                                 return $artifact;
                             } else {
                                 throw new Tracker_ResourceDoesntExistException($GLOBALS['Language']->getText('plugin_tracker_common_type', 'artifact_not_exist'));
                             }
                         }
                     }
                 }
             }
         }
     }
     throw new Tracker_NoMachingResourceException();
 }
 /**
  * @return boolean
  */
 private function getSendNotificationsFromRequest(Codendi_Request $request)
 {
     $send_notifications = false;
     if ($request->exist('notify')) {
         if ($request->get('notify') == 'ok') {
             $send_notifications = true;
         }
     }
     return $send_notifications;
 }
示例#6
0
 private function getMilestoneArtifact(User $user, Codendi_Request $request, Tracker_Artifact $artifact)
 {
     $source_artifact = null;
     if ($request->exist('link-artifact-id')) {
         $ancestors = $artifact->getAllAncestors($user);
         if (count($ancestors) == 0) {
             $source_artifact = $this->getSourceArtifact($request, 'link-artifact-id');
         }
     } else {
         $source_artifact = $this->getSourceArtifact($request, 'child_milestone');
     }
     return $source_artifact;
 }
 /**
  * Process the artifact functions
  *
  * @param Tracker_IDisplayTrackerLayout  $layout          Displays the page header and footer
  * @param Codendi_Request                $request         The data from the user
  * @param PFUser                           $current_user    The current user
  *
  * @return void
  */
 public function process(Tracker_IDisplayTrackerLayout $layout, $request, $current_user)
 {
     switch ($request->get('func')) {
         case 'get-children':
             $children = $this->getChildPresenterCollection($current_user);
             $GLOBALS['Response']->sendJSON($children);
             exit;
             break;
         case 'update-comment':
             if ((int) $request->get('changeset_id') && $request->exist('content')) {
                 if ($changeset = $this->getChangeset($request->get('changeset_id'))) {
                     $comment_format = $this->validateCommentFormat($request, 'comment_format');
                     $changeset->updateComment($request->get('content'), $current_user, $comment_format, $_SERVER['REQUEST_TIME']);
                     if ($request->isAjax()) {
                         //We assume that we can only change a comment from a followUp
                         echo $changeset->getComment()->fetchFollowUp();
                     }
                 }
             }
             break;
         case 'preview-attachment':
         case 'show-attachment':
             if ((int) $request->get('field') && (int) $request->get('attachment')) {
                 $ff = Tracker_FormElementFactory::instance();
                 //TODO: check that the user can read the field
                 if ($field = $ff->getFormElementByid($request->get('field'))) {
                     $method = explode('-', $request->get('func'));
                     $method = $method[0];
                     $method .= 'Attachment';
                     if (method_exists($field, $method)) {
                         $field->{$method}($request->get('attachment'));
                     }
                 }
             }
             break;
         case 'artifact-delete-changeset':
             // @see comment in Tracker_Artifact_Changeset::fetchFollowUp()
             //if ($changeset = $this->getChangeset($request->get('changeset'))) {
             //    $changeset->delete($current_user);
             //}
             $GLOBALS['Response']->redirect('?aid=' . $this->id);
             break;
         case 'artifact-update':
             $action = new Tracker_Action_UpdateArtifact($this, $this->getFormElementFactory(), $this->getEventManager());
             $action->process($layout, $request, $current_user);
             break;
         case 'check-user-can-link-and-unlink':
             $source_artifact = (int) $request->get('from-artifact');
             $destination_artifact = (int) $request->get('to-artifact');
             if (!($this->userHasRankingPermissions($source_artifact) && $this->userHasRankingPermissions($destination_artifact))) {
                 $this->sendUserDoesNotHavePermissionsErrorCode();
             }
             break;
         case 'unassociate-artifact-to':
             $artlink_fields = $this->getFormElementFactory()->getUsedArtifactLinkFields($this->getTracker());
             $linked_artifact_id = $request->get('linked-artifact-id');
             if (!$this->userHasRankingPermissions($this->getId())) {
                 $this->sendUserDoesNotHavePermissionsErrorCode();
                 break;
             }
             if (count($artlink_fields)) {
                 $this->unlinkArtifact($artlink_fields, $linked_artifact_id, $current_user);
                 $this->summonArtifactAssociators($request, $current_user, $linked_artifact_id);
             } else {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker', 'must_have_artifact_link_field'));
                 $GLOBALS['Response']->sendStatusCode(400);
             }
             break;
         case 'associate-artifact-to':
             $linked_artifact_id = $request->get('linked-artifact-id');
             if (!$this->userHasRankingPermissions($this->getId())) {
                 $this->sendUserDoesNotHavePermissionsErrorCode();
                 break;
             }
             if (!$this->linkArtifact($linked_artifact_id, $current_user)) {
                 $GLOBALS['Response']->sendStatusCode(400);
             } else {
                 $this->summonArtifactAssociators($request, $current_user, $linked_artifact_id);
             }
             break;
         case 'higher-priority-than':
             $target_id = (int) $request->get('target-id');
             $milestone_id = (int) $request->get('milestone-id');
             $project_id = $this->getProjectId();
             $user_is_authorized = $this->userHasRankingPermissions($milestone_id);
             if (!$this->userHasRankingPermissions($milestone_id)) {
                 $this->sendUserDoesNotHavePermissionsErrorCode();
                 break;
             }
             $this->getPriorityManager()->moveArtifactBeforeWithHistoryChangeLogging($this->getId(), $target_id, $milestone_id, $project_id);
             break;
         case 'lesser-priority-than':
             $target_id = (int) $request->get('target-id');
             $milestone_id = (int) $request->get('milestone-id');
             $project_id = $this->getProjectId();
             if (!$this->userHasRankingPermissions($milestone_id)) {
                 $this->sendUserDoesNotHavePermissionsErrorCode();
                 break;
             }
             $this->getPriorityManager()->moveArtifactAfterWithHistoryChangeLogging($this->getId(), $target_id, $milestone_id, $project_id);
             break;
         case 'show-in-overlay':
             $renderer = new Tracker_Artifact_EditOverlayRenderer($this, $this->getEventManager());
             $renderer->display($request, $current_user);
             break;
         case 'get-new-changesets':
             $changeset_id = $request->getValidated('changeset_id', 'uint', 0);
             $changeset_factory = $this->getChangesetFactory();
             $GLOBALS['Response']->sendJSON($changeset_factory->getNewChangesetsFormattedForJson($this, $changeset_id));
             break;
         case 'edit':
             $GLOBALS['Response']->redirect($this->getUri());
             break;
         case 'get-edit-in-place':
             $renderer = new Tracker_Artifact_Renderer_EditInPlaceRenderer($this, $this->getMustacheRenderer());
             $renderer->display($current_user, $request);
             break;
         case 'update-in-place':
             $renderer = new Tracker_Artifact_Renderer_EditInPlaceRenderer($this, $this->getMustacheRenderer());
             $renderer->updateArtifact($request, $current_user);
             break;
         case 'copy-artifact':
             $art_link = $this->fetchDirectLinkToArtifact();
             $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_artifact', 'copy_mode_info', array($art_link)), CODENDI_PURIFIER_LIGHT);
             $renderer = new Tracker_Artifact_CopyRenderer($this->getEventManager(), $this, $this->getFormElementFactory(), $layout);
             $renderer->display($request, $current_user);
             break;
         case 'manage-subscription':
             $artifact_subscriber = new Tracker_ArtifactNotificationSubscriber($this, $this->getDao());
             if ($this->doesUserHaveUnsubscribedFromNotification($current_user)) {
                 $artifact_subscriber->subscribeUser($current_user, $request);
                 break;
             }
             $artifact_subscriber->unsubscribeUser($current_user, $request);
             break;
         default:
             if ($request->isAjax()) {
                 echo $this->fetchTooltip($current_user);
             } else {
                 $renderer = new Tracker_Artifact_ReadOnlyRenderer($this->getEventManager(), $this, $this->getFormElementFactory(), $layout);
                 $renderer->display($request, $current_user);
             }
             break;
     }
 }
 /**
  * Process the form
  *
  * @param Tracker_SemanticManager $sm              The semantic manager
  * @param TrackerManager          $tracker_manager The tracker manager
  * @param Codendi_Request         $request         The request
  * @param User                    $current_user    The user who made the request
  *
  * @return void
  */
 public function process(Tracker_SemanticManager $sm, TrackerManager $tracker_manager, Codendi_Request $request, User $current_user)
 {
     if ($request->exist('update')) {
         if ($request->get('field_id') == '-1') {
             if ($this->getField()) {
                 $this->delete();
             }
         } else {
             if ($field = Tracker_FormElementFactory::instance()->getUsedListFieldById($this->tracker, $request->get('field_id'))) {
                 if ($this->getFieldId() != $request->get('field_id') || $request->get('open_values')) {
                     $this->list_field = $field;
                     $open_values = $request->get('open_values');
                     if ($open_values && is_array($open_values) && isset($open_values[$this->getFieldId()]) && is_array($open_values[$this->getFieldId()])) {
                         $this->open_values = $open_values[$this->getFieldId()];
                         if ($this->save()) {
                             $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'status_now', array($field->getLabel())));
                             $GLOBALS['Response']->redirect($this->getUrl());
                         } else {
                             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'unable_save_status'));
                         }
                     } else {
                         //Display the form to choose the values
                         //nop - see below
                     }
                 }
             } else {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'bad_field_status'));
             }
         }
     }
     $this->displayAdmin($sm, $tracker_manager, $request, $current_user);
 }
 /**
  * Process the form
  *
  * @param Tracker_SemanticManager $sm              The semantic manager
  * @param TrackerManager          $tracker_manager The tracker manager
  * @param Codendi_Request         $request         The request
  * @param PFUser                    $current_user    The user who made the request
  *
  * @return void
  */
 public function process(Tracker_SemanticManager $sm, TrackerManager $tracker_manager, Codendi_Request $request, PFUser $current_user)
 {
     if ($request->exist('update')) {
         if ($field = Tracker_FormElementFactory::instance()->getUsedUserSbFieldById($this->tracker, $request->get('list_field_id'))) {
             $this->list_field = $field;
             if ($this->save()) {
                 $this->sendContributorChangeEvent();
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'contributor_now', array($field->getLabel())));
                 $GLOBALS['Response']->redirect($this->getUrl());
             } else {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'unable_save_contributor'));
             }
         } elseif ($request->get('list_field_id') == self::NO_VALUE) {
             if ($this->delete()) {
                 $this->sendContributorChangeEvent();
                 $GLOBALS['Response']->redirect($this->getUrl());
             } else {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'unable_save_contributor'));
             }
         } else {
             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'bad_field_contributor'));
         }
     }
     $this->displayAdmin($sm, $tracker_manager, $request, $current_user);
 }
 /**
  * Process the form
  *
  * @param Tracker_SemanticManager $semantic_manager The semantic manager
  * @param TrackerManager          $tracker_manager  The tracker manager
  * @param Codendi_Request         $request          The request
  * @param PFUser                  $current_user     The user who made the request
  *
  * @return void
  */
 public function process(Tracker_SemanticManager $semantic_manager, TrackerManager $tracker_manager, Codendi_Request $request, PFUser $current_user)
 {
     if ($request->exist('update')) {
         $field_id = $request->get('initial_effort_field_id');
         $field = Tracker_FormElementFactory::instance()->getUsedPotentiallyContainingNumericValueFieldById($this->tracker, $field_id);
         if ($field) {
             $this->initial_effort_field = $field;
             if ($this->save()) {
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_agiledashboard_admin_semantic', 'initial_effort_now', array($field->getLabel())));
                 $GLOBALS['Response']->redirect($this->getUrl());
             } else {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_agiledashboard_admin_semantic', 'unable_save_initial_effort'));
             }
         } else {
             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_agiledashboard_admin_semantic', 'bad_field_initial_effort'));
         }
     }
     $this->displayAdmin($semantic_manager, $tracker_manager, $request, $current_user);
 }
示例#11
0
 public function processSOAP(Codendi_Request $request)
 {
     $uri = $this->getSoapUri();
     $service_class = 'Statistics_SOAPServer';
     require_once $service_class . '.class.php';
     if ($request->exist('wsdl')) {
         $this->dumpWSDL($uri, $service_class);
     } else {
         $this->instantiateSOAPServer($uri, $service_class);
     }
 }
 /**
  * Process the form
  *
  * @param Tracker_SemanticManager $sm              The semantic manager
  * @param TrackerManager          $tracker_manager The tracker manager
  * @param Codendi_Request         $request         The request
  * @param PFUser                    $current_user    The user who made the request
  *
  * @return void
  */
 public function process(Tracker_SemanticManager $sm, TrackerManager $tracker_manager, Codendi_Request $request, PFUser $current_user)
 {
     if ($request->exist('update')) {
         if ($field = Tracker_FormElementFactory::instance()->getUsedTextFieldById($this->tracker, $request->get('text_field_id'))) {
             $this->text_field = $field;
             if ($this->save()) {
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'description_now', array($field->getLabel())));
                 $GLOBALS['Response']->redirect($this->getUrl());
             } else {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'unable_save_description'));
             }
         } else {
             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'bad_field_description'));
         }
     } else {
         if ($request->exist('delete')) {
             if ($this->delete()) {
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'deleted_description'));
                 $GLOBALS['Response']->redirect($this->getUrl());
             } else {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'unable_save_description'));
             }
         }
     }
     $this->displayAdmin($sm, $tracker_manager, $request, $current_user);
 }
示例#13
0
 private function isFromOverlay(Codendi_Request $request)
 {
     if ($request->existAndNonEmpty('link-artifact-id') && !$request->exist('immediate')) {
         return true;
     }
     return false;
 }
 private function getSelectReportUrl(Codendi_Request $request, Tracker_Report $report)
 {
     $params = array('tracker' => $report->tracker_id);
     if ($request->exist('criteria')) {
         $params['criteria'] = $request->get('criteria');
     }
     return '?' . http_build_query($params);
 }