예제 #1
0
 public function process(Tracker_IDisplayTrackerLayout $layout, Codendi_Request $request, PFUser $current_user)
 {
     if (!$this->tracker->userCanSubmitArtifact($current_user)) {
         $this->logsErrorAndRedirectToTracker('plugin_tracker_admin', 'access_denied');
         return;
     }
     $from_artifact = $this->artifact_factory->getArtifactByIdUserCanView($current_user, $request->get('from_artifact_id'));
     if (!$from_artifact || $from_artifact->getTracker() !== $this->tracker) {
         $this->logsErrorAndRedirectToTracker('plugin_tracker_include_type', 'error_missing_param');
         return;
     }
     $from_changeset = $from_artifact->getChangeset($request->get('from_changeset_id'));
     if (!$from_changeset) {
         $this->logsErrorAndRedirectToTracker('plugin_tracker_include_type', 'error_missing_param');
         return;
     }
     $submitted_values = $request->get('artifact');
     if (!is_array($submitted_values)) {
         $this->logsErrorAndRedirectToTracker('plugin_tracker_include_type', 'error_missing_param');
         return;
     }
     try {
         $this->processCopy($from_changeset, $current_user, $submitted_values);
     } catch (Tracker_XML_Exporter_TooManyChildrenException $exception) {
         $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_artifact', 'copy_too_many_children', array(Tracker_XML_ChildrenCollector::MAX)));
         $this->redirectToArtifact($from_artifact);
     }
 }
예제 #2
0
function register_valid(Codendi_Request $request)
{
    global $Language;
    if (!$request->existAndNonEmpty('Update')) {
        return false;
    }
    if (!$request->existAndNonEmpty('user_id')) {
        $GLOBALS['Response']->addFeedback('error', $Language->getText('admin_user_changepw', 'error_userid'));
        return false;
    }
    if (!$request->existAndNonEmpty('form_pw')) {
        $GLOBALS['Response']->addFeedback('error', $Language->getText('admin_user_changepw', 'error_nopasswd'));
        return false;
    }
    if ($request->get('form_pw') != $request->get('form_pw2')) {
        $GLOBALS['Response']->addFeedback('error', $Language->getText('admin_user_changepw', 'error_passwd'));
        return false;
    }
    $errors = array();
    if (!account_pwvalid($request->get('form_pw'), $errors)) {
        foreach ($errors as $e) {
            $GLOBALS['Response']->addFeedback('error', $e);
        }
        return false;
    }
    // if we got this far, it must be good
    $user_manager = UserManager::instance();
    $user = $user_manager->getUserById($request->get('user_id'));
    $user->setPassword($request->get('form_pw'));
    if (!$user_manager->updateDb($user)) {
        $GLOBALS['Response']->addFeedback(Feedback::ERROR, $Language->getText('admin_user_changepw', 'error_update'));
        return false;
    }
    return true;
}
예제 #3
0
 /**
  * @see Cardwall_OnTop_Config_Command::execute()
  */
 public function execute(Codendi_Request $request)
 {
     if ($request->get('new_column')) {
         $this->dao->create($this->tracker->getId(), $request->get('new_column'));
         $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_cardwall', 'on_top_column_added'));
     }
 }
예제 #4
0
 /**
  * @return Tracker_Artifact_View_View
  */
 private function getRequestedView(Codendi_Request $request)
 {
     if (isset($this->views[$request->get('view')])) {
         return $this->views[$request->get('view')];
     } else {
         list(, $first_view) = each($this->views);
         return $first_view;
     }
 }
예제 #5
0
 /**
  * @see Cardwall_OnTop_Config_Command::execute()
  */
 public function execute(Codendi_Request $request)
 {
     if ($request->get('add_mapping_on')) {
         $new_mapping_tracker = $this->tracker_factory->getTrackerById($request->get('add_mapping_on'));
         if ($new_mapping_tracker && $this->dao->create($this->tracker->getId(), $new_mapping_tracker->getId(), null)) {
             $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_cardwall', 'on_top_mapping_added', array($new_mapping_tracker->getName())));
         }
     }
 }
 private function linkArtifact(PFUser $current_user, Tracker_Artifact $new_artifact)
 {
     $artifact_link_id = $this->request->get('artifact-link-id');
     $source_artifact = $this->tracker_artifact_factory->getArtifactById($artifact_link_id);
     if (!$source_artifact) {
         return;
     }
     $source_artifact->linkArtifact($new_artifact->getId(), $current_user);
 }
 private function getSourceArtifact()
 {
     $source_artifact = null;
     if ($this->request->get('func') == 'new-artifact-link') {
         $source_artifact = $this->artifact_factory->getArtifactById($this->request->get('id'));
     } elseif ($this->request->get('child_milestone')) {
         $source_artifact = $this->artifact_factory->getArtifactById($this->request->get('child_milestone'));
     }
     return $source_artifact;
 }
예제 #8
0
 public function display()
 {
     $git_php_viewer = new GitViews_GitPhpViewer($this->repository, $this->controller->getPlugin()->getConfigurationParameter('gitphp_path'));
     if ($this->request->get('noheader') == 1) {
         $view = new GitViews_ShowRepo_Download($git_php_viewer);
     } else {
         $view = new GitViews_ShowRepo_Content($this->repository, $git_php_viewer, $this->request->getCurrentUser(), $this->controller, $this->url_manager, $this->driver_factory, $this->gerrit_usermanager, $this->mirror_data_mapper, $this->gerrit_servers, $this->controller->getPlugin()->getThemePath());
     }
     $view->display();
 }
예제 #9
0
 public function route()
 {
     if (!$this->request->getCurrentUser()->isSuperUser()) {
         $this->controller->notSiteAdmin();
     } elseif ($this->request->get('update')) {
         $this->controller->update();
     } else {
         $this->controller->index();
     }
 }
예제 #10
0
 /**
  * @see Cardwall_OnTop_Config_Command::execute()
  */
 public function execute(Codendi_Request $request)
 {
     if ($request->get('column')) {
         foreach ($request->get('column') as $id => $column_definition) {
             $column_label = $column_definition['label'];
             if (!empty($column_label) && $this->dao->save($this->tracker->getId(), $id, $column_label)) {
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_cardwall', 'on_top_column_changed', array($column_label)));
             }
         }
     }
 }
예제 #11
0
 /**
  * Returns true when the $request contains sufficent data to create a valid
  * Planning.
  * 
  * Existing planning update validation is not implemented yet.
  * 
  * @param Codendi_Request $request
  * 
  * @return bool
  */
 public function isValid(Codendi_Request $request)
 {
     $group_id = $request->get('group_id');
     $planning_id = $request->get('planning_id');
     $planning_parameters = $request->get('planning');
     if (!$planning_parameters) {
         $planning_parameters = array();
     }
     $planning_parameters = PlanningParameters::fromArray($planning_parameters);
     return $this->nameIsPresent($planning_parameters) && $this->backlogTrackerIdIsPresentAndIsAPositiveIntegers($planning_parameters) && $this->planningTrackerIdIsPresentAndIsAPositiveInteger($planning_parameters) && $this->planningTrackerIsNotThePlanningTrackerOfAnotherPlanningInTheSameProject($group_id, $planning_id, $planning_parameters);
 }
 /**
  * @see Cardwall_OnTop_Config_Command::execute()
  */
 public function execute(Codendi_Request $request)
 {
     if (is_array($request->get('custom_mapping'))) {
         foreach ($request->get('custom_mapping') as $mapping_tracker_id => $is_custom) {
             $mapping_tracker = $this->tracker_factory->getTrackerById($mapping_tracker_id);
             if ($this->canDelete($is_custom, $mapping_tracker) && $this->delete($mapping_tracker)) {
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_cardwall', 'on_top_mapping_removed', array($mapping_tracker->getName())));
             }
         }
     }
 }
예제 #13
0
 public function __construct(Codendi_Request $request)
 {
     $this->project = $request->getProject();
     $this->words = $request->get('words');
     $this->offset = intval($request->getValidated('offset', 'uint', 0));
     $this->exact = $request->getValidated('exact', 'uint', false);
     $this->trackerv3id = $request->getValidated('atid', 'uint', 0);
     $this->forum_id = $request->getValidated('forum_id', 'uint', 0);
     $this->is_ajax = $request->isAjax();
     $this->type_of_search = $request->get('type_of_search');
 }
예제 #14
0
 protected function getRedirectUrlAfterArtifactUpdate(Codendi_Request $request)
 {
     $stay = $request->get('submit_and_stay');
     $from_aid = $request->get('from_aid');
     $redirect = new Tracker_Artifact_Redirect();
     $redirect->mode = Tracker_Artifact_Redirect::STATE_SUBMIT;
     $redirect->base_url = TRACKER_BASE_URL;
     $redirect->query_parameters = $this->calculateRedirectParams($stay, $from_aid);
     if ($stay) {
         $redirect->mode = Tracker_Artifact_Redirect::STATE_STAY_OR_CONTINUE;
     }
     return $redirect;
 }
 private function getScrumTitle()
 {
     $old_scrum_title = $this->config_manager->getScrumTitle($this->project_id);
     $scrum_title = trim($this->request->get('scrum-title-admin'));
     if ($scrum_title !== $old_scrum_title) {
         $this->response->scrumTitleChanged();
     }
     if ($scrum_title == '') {
         $this->response->emptyScrumTitle();
         $scrum_title = $old_scrum_title;
     }
     return $scrum_title;
 }
 private function getKanbanTitle()
 {
     $old_kanban_title = $this->config_manager->getKanbanTitle($this->project_id);
     $kanban_title = trim($this->request->get('kanban-title-admin'));
     if ($kanban_title !== $old_kanban_title) {
         $this->response->kanbanTitleChanged();
     }
     if ($kanban_title == '') {
         $this->response->emptyKanbanTitle();
         $kanban_title = $old_kanban_title;
     }
     return $kanban_title;
 }
예제 #17
0
 public function __construct(GitRepository $repository, Codendi_Request $request, Git_Driver_Gerrit_GerritDriverFactory $driver_factory, array $gerrit_servers, array $gerrit_config_templates, Git_Mirror_MirrorDataMapper $mirror_data_mapper)
 {
     $this->repository = $repository;
     $this->request = $request;
     $this->driver_factory = $driver_factory;
     $this->gerrit_servers = $gerrit_servers;
     $this->gerrit_config_templates = $gerrit_config_templates;
     $this->mirror_data_mapper = $mirror_data_mapper;
     $this->panes = $this->buildPanes($repository);
     $this->current_pane = 'settings';
     if (isset($this->panes[$request->get('pane')])) {
         $this->current_pane = $request->get('pane');
     }
 }
예제 #18
0
 protected function getCrossSearchCriteriaFromRequest()
 {
     $criteria_vars = array('criteria', 'semantic_criteria', 'artifact_criteria');
     $criteria = array();
     foreach ($criteria_vars as $criterion_name) {
         $criterion_value = $this->request->get($criterion_name);
         if ($criterion_value === false) {
             $criteria[$criterion_name] = array();
         } else {
             $criteria[$criterion_name] = $criterion_value;
         }
     }
     return new Tracker_CrossSearch_Query($criteria['criteria'], $criteria['semantic_criteria'], $criteria['artifact_criteria']);
 }
예제 #19
0
 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'));
 }
예제 #20
0
 public function process(TrackerManager $engine, Codendi_Request $request, PFUser $current_user)
 {
     $workflow_factory = WorkflowFactory::instance();
     if ($request->get('func') == Workflow::FUNC_ADMIN_RULES) {
         $token = new CSRFSynchronizerToken(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => Workflow::FUNC_ADMIN_RULES)));
         $rule_date_factory = new Tracker_Rule_Date_Factory(new Tracker_Rule_Date_Dao(), Tracker_FormElementFactory::instance());
         $action = new Tracker_Workflow_Action_Rules_EditRules($this->tracker, $rule_date_factory, $token);
     } elseif ($request->get('func') == Workflow::FUNC_ADMIN_CROSS_TRACKER_TRIGGERS) {
         $token = new CSRFSynchronizerToken(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => Workflow::FUNC_ADMIN_CROSS_TRACKER_TRIGGERS)));
         $renderer = TemplateRendererFactory::build()->getRenderer(TRACKER_BASE_DIR . '/../templates');
         $action = new Tracker_Workflow_Action_Triggers_EditTriggers($this->tracker, $token, $renderer, $workflow_factory->getTriggerRulesManager());
     } else {
         if ($request->get('func') == Workflow::FUNC_ADMIN_GET_TRIGGERS_RULES_BUILDER_DATA) {
             $action = new Tracker_Workflow_Action_Triggers_GetTriggersRulesBuilderData($this->tracker, Tracker_FormElementFactory::instance());
         } else {
             if ($request->get('func') == Workflow::FUNC_ADMIN_ADD_TRIGGER) {
                 $action = new Tracker_Workflow_Action_Triggers_AddTrigger($this->tracker, Tracker_FormElementFactory::instance(), $workflow_factory->getTriggerRulesManager());
             } else {
                 if ($request->get('func') == Workflow::FUNC_ADMIN_DELETE_TRIGGER) {
                     $action = new Tracker_Workflow_Action_Triggers_DeleteTrigger($this->tracker, $workflow_factory->getTriggerRulesManager());
                 } else {
                     if ($request->get('create')) {
                         $action = new Tracker_Workflow_Action_Transitions_Create($this->tracker, $workflow_factory);
                     } else {
                         if ($request->get('edit_transition')) {
                             $action = new Tracker_Workflow_Action_Transitions_EditTransition($this->tracker, TransitionFactory::instance(), new Transition_PostActionFactory());
                         } else {
                             if ($request->get('delete')) {
                                 $action = new Tracker_Workflow_Action_Transitions_Delete($this->tracker, $workflow_factory);
                             } else {
                                 if ($request->get('transitions')) {
                                     $action = new Tracker_Workflow_Action_Transitions_CreateMatrix($this->tracker, $workflow_factory, Tracker_FormElementFactory::instance());
                                 } else {
                                     if ($request->get('workflow_details')) {
                                         $action = new Tracker_Workflow_Action_Transitions_Details($this->tracker, TransitionFactory::instance());
                                     } else {
                                         $action = new Tracker_Workflow_Action_Transitions_DefineWorkflow($this->tracker, WorkflowFactory::instance(), Tracker_FormElementFactory::instance());
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     $action->process($engine, $request, $current_user);
 }
예제 #21
0
 private function getCurrentCommitSha1()
 {
     if ($this->request->exist(self::OLD_COMMIT_TREE)) {
         return $this->request->get(self::OLD_COMMIT_TREE);
     }
     return 'HEAD';
 }
예제 #22
0
 public function index(Codendi_Request $request)
 {
     if (!$request->get('type_of_search')) {
         $request->set('type_of_search', Search_SearchProject::NAME);
     }
     $this->results($request);
 }
 /**
  * @see Cardwall_OnTop_Config_Command::execute()
  */
 public function execute(Codendi_Request $request)
 {
     if (!is_array($request->get('mapping_field'))) {
         return;
     }
     $mapping_fields = $this->getMappingFields();
     foreach ($request->get('mapping_field') as $mapping_tracker_id => $mapping_tracker_info) {
         if (!isset($mapping_tracker_info['field'])) {
             continue;
         }
         $field_id = (int) $mapping_tracker_info['field'];
         $mapping_tracker = $this->tracker_factory->getTrackerById($mapping_tracker_id);
         $field = $this->form_element_factory->getFieldById($field_id);
         $this->save($mapping_tracker_info, $mapping_fields, $mapping_tracker, $field);
     }
 }
예제 #24
0
 public function process(Tracker_IDisplayTrackerLayout $layout, Codendi_Request $request, PFUser $current_user)
 {
     if ($this->workflow_factory->deleteWorkflow($request->get('delete'))) {
         $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('workflow_admin', 'deleted'));
         $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => Workflow::FUNC_ADMIN_TRANSITIONS)));
     }
 }
예제 #25
0
 /**
  * @see Cardwall_OnTop_Config_Command::execute()
  */
 public function execute(Codendi_Request $request)
 {
     if ($request->get('column')) {
         $deleted_columns = 0;
         foreach ($request->get('column') as $id => $column_definition) {
             if (empty($column_definition['label'])) {
                 $this->value_dao->deleteForColumn($this->tracker->getId(), $id);
                 $this->dao->delete($this->tracker->getId(), $id);
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_cardwall', 'on_top_column_removed'));
                 $deleted_columns++;
             }
         }
         if (count($request->get('column')) === $deleted_columns) {
             $this->field_dao->deleteCardwall($this->tracker->getId());
         }
     }
 }
예제 #26
0
 /**
  * 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->get('add-field') && (int) $request->get('field')) {
         //retrieve the field if used
         $f = Tracker_FormElementFactory::instance()->getUsedFormElementById($request->get('field'));
         //store the new field
         $this->getDao()->add($this->tracker->id, $f->id, 'end');
     } else {
         if ((int) $request->get('remove')) {
             //retrieve the field if used
             $f = Tracker_FormElementFactory::instance()->getUsedFormElementById($request->get('remove'));
             //store the new field
             $this->getDao()->remove($this->tracker->id, $f->id);
         }
     }
     $this->displayAdmin($sm, $tracker_manager, $request, $current_user);
 }
예제 #27
0
 protected function enhanceRedirect(Codendi_Request $request)
 {
     $from_aid = $request->get('from_aid');
     if ($from_aid != null) {
         $this->redirect->query_parameters['from_aid'] = $from_aid;
     }
     parent::enhanceRedirect($request);
 }
 public function update(Codendi_Request $request, Response $response)
 {
     $emailgateway_mode = $request->get('emailgateway_mode');
     if ($emailgateway_mode && $this->config->setEmailgatewayMode($emailgateway_mode)) {
         $response->addFeedback(Feedback::INFO, $GLOBALS['Language']->getText('admin_main', 'successfully_updated'));
     }
     $response->redirect($_SERVER['REQUEST_URI']);
 }
예제 #29
0
 private function getControllerFromRequest(Codendi_Request $request)
 {
     if ($request->get('pane') == 'gerrit_servers_admin') {
         return new Git_AdminGerritController($this->csrf, $this->gerrit_server_factory);
     } else {
         return new Git_AdminMirrorController($this->csrf, $this->git_mirror_mapper, $this->git_mirror_resource_restrictor, $this->project_manager, $this->git_mirror_manifest_manager, $this->git_system_event_manager);
     }
 }
예제 #30
0
 /**
  * @see Cardwall_OnTop_Config_Command::execute()
  */
 public function execute(Codendi_Request $request)
 {
     if ($request->get('column')) {
         foreach ($request->get('column') as $id => $column_definition) {
             $column_label = $column_definition['label'];
             $column_bg_red = 255;
             $column_bg_green = 255;
             $column_bg_blue = 255;
             if (!empty($column_definition['bgcolor'])) {
                 list($column_bg_red, $column_bg_green, $column_bg_blue) = ColorHelper::HexatoRGB($column_definition['bgcolor']);
             }
             if (!empty($column_label) && $this->dao->save($this->tracker->getId(), $id, $column_label, $column_bg_red, $column_bg_green, $column_bg_blue)) {
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_cardwall', 'on_top_column_changed', array($column_label)));
             }
         }
     }
 }