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; }
public function process(Tracker_IDisplayTrackerLayout $layout, Codendi_Request $request, PFUser $current_user) { $workflow = $this->workflow_factory->getWorkflowByTrackerId($this->tracker->id); $this->processEnabled($workflow, $request->get('is_used')); $k = 0; $field = $this->form_element_factory->getFormElementById($workflow->field_id); $field_values = $field->getBind()->getAllValues(); $currMatrix = array(); $field_value_from = null; //Add an initial state transition foreach ($field_values as $field_value_id_to => $field_value_to) { //$field_value_from=; $transition = '_' . $field_value_id_to; if ($request->existAndNonEmpty($transition)) { $currMatrix[] = array('', $field_value_id_to); $k += $this->addTransition($workflow, $transition, $field_value_from, $field_value_to); } } //Add a transition foreach ($field_values as $field_value_id_from => $field_value_from) { foreach ($field_values as $field_value_id_to => $field_value_to) { $transition = $field_value_id_from . '_' . $field_value_id_to; if ($request->existAndNonEmpty($transition)) { $currMatrix[] = array($field_value_id_from, $field_value_id_to); $k += $this->addTransition($workflow, $transition, $field_value_from, $field_value_to); } } } //Delete a transition $transitions_in_db = $workflow->getTransitions(); $nb_transitions_in_db = count($transitions_in_db); for ($i = 0; $i < $nb_transitions_in_db; $i++) { $field_value_from = $transitions_in_db[$i]->getFieldValueFrom(); $field_value_to = $transitions_in_db[$i]->getFieldValueTo(); //Treatment of the initial state if ($field_value_from == null) { $value_to_search = array('', $field_value_to->getId()); //$field_value_from->getId()=''; } else { $value_to_search = array($field_value_from->getId(), $field_value_to->getId()); } if (!in_array($value_to_search, $currMatrix)) { $this->workflow_factory->deleteTransition($workflow->workflow_id, $field_value_from, $field_value_to); $k++; } } if ($k > 0) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('workflow_admin', 'updated')); } $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => Workflow::FUNC_ADMIN_TRANSITIONS))); }
public function process(Tracker_IDisplayTrackerLayout $layout, Codendi_Request $request, PFUser $current_user) { if ($request->existAndNonEmpty('field_id')) { if ($this->workflow_factory->create((int) $this->tracker->id, $request->get('field_id'))) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('workflow_admin', 'created')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => Workflow::FUNC_ADMIN_TRANSITIONS))); } } }
public function route(Codendi_Request $request) { if ($request->existAndNonEmpty('type_of_search')) { if ($request->isAjax()) { $this->controller->ajaxResults($request); } else { $this->controller->results($request); } } else { $this->controller->index($request); } }
/** * Process the artifact functions * * @param Transition $transition The transition * @param Codendi_Request $request The data from the user * @param PFUser $current_user The current user * * @return void */ public function process(Transition $transition, Codendi_Request $request, PFUser $current_user) { $transition_condition_factory = $this->getConditionFactory(); // Create new condition if ($request->existAndNonEmpty('add_notempty_condition')) { $transition_condition_factory->addCondition($transition, $request->get('add_notempty_condition')); } // Loop over defined actions and update them if relevant foreach ($transition->getConditions() as $condition) { $condition->process($request); } }
/** * Process the artifact functions * * @param Transition $transition The transition * @param Codendi_Request $request The data from the user * @param PFUser $current_user The current user * * @return void */ public function process(Transition $transition, Codendi_Request $request, PFUser $current_user) { $tpaf = $this->getPostActionFactory(); // Create new post-action if ($request->existAndNonEmpty('add_postaction')) { $tpaf->addPostAction($transition, $request->get('add_postaction')); } // Loop over defined actions and update them if relevant foreach ($transition->getAllPostActions() as $post_action) { $post_action->process($request); } }
public function doCreateTracker(Project $project, Codendi_Request $request) { $is_error = false; $new_tracker = null; $name = trim($request->get('name')); $description = trim($request->get('description')); $itemname = trim($request->get('itemname')); $atid_template = $request->getValidated('atid_template', 'uint', 0); // First try XML if ($request->existAndNonEmpty('create_mode') && $request->get('create_mode') == 'xml') { $vFile = new Valid_File('tracker_new_xml_file'); $vFile->required(); if ($request->validFile($vFile)) { try { $user_finder = new XMLImportHelper(UserManager::instance()); $new_tracker = TrackerXmlImport::build($user_finder)->createFromXMLFileWithInfo($project->getID(), $_FILES["tracker_new_xml_file"]["tmp_name"], $name, $description, $itemname); } catch (XML_ParseException $exception) { $this->displayCreateTrackerFromXMLErrors($project, $exception->getErrors(), $exception->getFileLines()); } catch (TrackerFromXmlException $exception) { $GLOBALS['Response']->addFeedback(Feedback::ERROR, $exception->getMessage()); } } } else { if ($request->existAndNonEmpty('create_mode') && $request->get('create_mode') == 'tv3') { $atid = $request->get('tracker_new_tv3'); $user = UserManager::instance()->getCurrentUser(); $new_tracker = $this->getTrackerFactory()->createFromTV3($user, $atid, $project, $name, $description, $itemname); } else { if ($request->existAndNonEmpty('create_mode') && $request->get('create_mode') == 'migrate_from_tv3') { $tracker_id = $request->get('tracker_new_tv3'); if ($this->getTV3MigrationManager()->askForMigration($project, $tracker_id, $name, $description, $itemname)) { $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?group_id=' . $project->group_id); } } else { // Otherwise tries duplicate $duplicate = $this->getTrackerFactory()->create($project->getId(), -1, $atid_template, $name, $description, $itemname); $new_tracker = $duplicate['tracker']; } } } if ($new_tracker) { $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?group_id=' . $project->group_id . '&tracker=' . $new_tracker->id); } else { $tracker_template = $this->getTrackerFactory()->getTrackerById($atid_template); $this->displayCreateTracker($project, $request, $name, $description, $itemname, $tracker_template); } }
public function process(TrackerManager $engine, Codendi_Request $request, User $current_user) { if ($request->get('create')) { if ($request->existAndNonEmpty('field_id')) { if (WorkflowFactory::instance()->create((int) $this->tracker->id, $request->get('field_id'))) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('workflow_admin', 'created')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => 'admin-workflow'))); } } } else { if ($request->get('edit_transition')) { $workflow = WorkflowFactory::instance()->getWorkflowByTrackerId($this->tracker->id); $transition = TransitionFactory::instance()->getTransition($request->get('edit_transition')); $this->displayTransitionDetails($engine, $request, $current_user, $transition); } else { if ($request->get('delete')) { if (WorkflowFactory::instance()->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' => 'admin-workflow'))); } } else { if ($request->get('create_matrix')) { $k = 0; $workflow = WorkflowFactory::instance()->getWorkflowByTrackerId($this->tracker->id); $field = Tracker_FormElementFactory::instance()->getFormElementById($workflow->field_id); $field_values = $field->getBind()->getAllValues(); $currMatrix = array(); $field_value_from = null; //Add an initial state transition foreach ($field_values as $field_value_id_to => $field_value_to) { //$field_value_from=; $transition = '_' . $field_value_id_to; if ($request->existAndNonEmpty($transition)) { $currMatrix[] = array('', $field_value_id_to); $k += $this->addTransition($workflow, $transition, $field_value_from, $field_value_to); } } //Add a transition foreach ($field_values as $field_value_id_from => $field_value_from) { foreach ($field_values as $field_value_id_to => $field_value_to) { $transition = $field_value_id_from . '_' . $field_value_id_to; if ($request->existAndNonEmpty($transition)) { $currMatrix[] = array($field_value_id_from, $field_value_id_to); $k += $this->addTransition($workflow, $transition, $field_value_from, $field_value_to); } } } //Delete a transition $transitions_in_db = $workflow->getTransitions(); $nb_transitions_in_db = count($transitions_in_db); for ($i = 0; $i < $nb_transitions_in_db; $i++) { $field_value_from = $transitions_in_db[$i]->getFieldValueFrom(); $field_value_to = $transitions_in_db[$i]->getFieldValueTo(); //Treatment of the initial state if ($field_value_from == null) { $value_to_search = array('', $field_value_to->getId()); //$field_value_from->getId()=''; } else { $value_to_search = array($field_value_from->getId(), $field_value_to->getId()); } if (!in_array($value_to_search, $currMatrix)) { WorkflowFactory::instance()->deleteTransition($workflow->workflow_id, $field_value_from, $field_value_to); $k++; } } if ($k > 0) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('workflow_admin', 'updated')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => 'admin-workflow'))); } else { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('workflow_admin', 'not_updated')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => 'admin-workflow'))); } } else { if ($request->get('enable_workflow')) { $workflow = WorkflowFactory::instance()->getWorkflowByTrackerId($this->tracker->id); $is_used = $request->get('is_used'); //TODO : use $request if ($is_used == 'on') { $is_used = 1; $feedback = $GLOBALS['Language']->getText('workflow_admin', 'workflow_enabled'); } else { $is_used = 0; $feedback = $GLOBALS['Language']->getText('workflow_admin', 'workflow_disabled'); } if (WorkflowFactory::instance()->updateActivation((int) $workflow->workflow_id, $is_used)) { $GLOBALS['Response']->addFeedback('info', $feedback); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => 'admin-workflow'))); } } else { if ($request->get('workflow_details')) { $transition = $request->get('transition'); //TODO check that the transition belongs to the current tracker // Permissions $ugroups = $request->get('ugroups'); permission_clear_all($this->tracker->group_id, 'PLUGIN_TRACKER_WORKFLOW_TRANSITION', $transition, false); if (TransitionFactory::instance()->addPermissions($ugroups, $transition)) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('workflow_admin', 'permissions_updated')); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('workflow_admin', 'permissions_not_updated')); } // Post actions $tpam = new Transition_PostActionManager(); $tpam->process(TransitionFactory::instance()->getTransition($transition), $request, $current_user); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => (int) $this->tracker->id, 'func' => 'admin-workflow', 'edit_transition' => $request->get('transition')))); } else { $this->displayAdminDefineWorkflow($engine, $request, $current_user); } } } } } } }
private function manageLockNewVersion(PFUser $user, Docman_Item $item, Codendi_Request $request) { $permission_manager = $this->_getDocmanPermissionsManagerInstance($item->getGroupId()); if ($request->existAndNonEmpty('lock_document')) { if (!$permission_manager->getLockFactory()->itemIsLocked($item)) { $permission_manager->getLockFactory()->lock($item); $this->_raiseLockEvent($item, $user); } } else { if ($permission_manager->getLockFactory()->itemIsLocked($item)) { $permission_manager->getLockFactory()->unlock($item); $this->_raiseUnlockEvent($item, $user); } } }
/** * Display tracker creation interface * * @param Project $project * @param String $name * @param String $description * @param String $itemname * @param Tracker $tracker_template */ public function displayCreateTracker(Project $project, Codendi_Request $request, $name = '', $description = '', $itemname = '', Tracker $tracker_template = null) { global $Language; $breadcrumbs = array(array('title' => $GLOBALS['Language']->getText('plugin_tracker_index', 'create_new_tracker'), 'url' => TRACKER_BASE_URL . '/?group_id=' . $project->group_id . '&func=create')); $toolbar = array(); $this->displayHeader($project, 'Trackers', $breadcrumbs, $toolbar); $hp = Codendi_HTMLPurifier::instance(); echo '<h2>' . $Language->getText('plugin_tracker_include_type', 'create_tracker') . '</h2>'; echo '<form name="form_create" method="post" enctype="multipart/form-data" id="tracker_create_new"> <input type="hidden" name="group_id" value="' . $project->getId() . '"> <input type="hidden" name="func" value="docreate"> <table> <tr valign="top"><td style="padding-right:2em; border-right: 1px solid #eee;">'; echo '<p>' . $Language->getText('plugin_tracker_include_type', 'choose_creation') . '</p>'; if ($request->existAndNonEmpty('create_mode') && $request->get('create_mode') == 'xml') { $this->displayCreateTrackerFromXML($project); } else { $this->displayCreateTrackerFromTemplate($project, $tracker_template); } echo '</td><td style="padding-left:2em;">'; echo '<p>' . $Language->getText('plugin_tracker_include_type', 'create_tracker_fill_name') . '</p> <p> <label for="newtracker_name"><b>' . $Language->getText('plugin_tracker_include_artifact', 'name') . '</b>: <font color="red">*</font></label><br /> <input type="text" name="name" id="newtracker_name" value="' . $hp->purify($name, CODENDI_PURIFIER_CONVERT_HTML) . '"> </p> <p> <label for="newtracker_description"><b>' . $Language->getText('plugin_tracker_include_artifact', 'desc') . '</b>: <font color="red">*</font><br /> <textarea id="newtracker_description" name="description" rows="3" cols="50">' . $hp->purify($description, CODENDI_PURIFIER_CONVERT_HTML) . '</textarea> </p> <p> <label for="newtracker_itemname"><b>' . $Language->getText('plugin_tracker_include_type', 'short_name') . '</b>: <font color="red">*</font></label><br /> <input type="text" id="newtracker_itemname" name="itemname" value="' . $hp->purify($itemname, CODENDI_PURIFIER_CONVERT_HTML) . '"><br /> <span style="color:#999;">' . $Language->getText('plugin_tracker_include_type', 'avoid_spaces') . '</span> </p>'; echo '<input type="submit" name="Create" value="' . $Language->getText('global', 'btn_create') . '">'; echo '</td></tr></table></form>'; $this->displayFooter($project); }
private function isFromOverlay(Codendi_Request $request) { if ($request->existAndNonEmpty('link-artifact-id') && !$request->exist('immediate')) { return true; } return false; }