public function route(HTTPRequest $request, Layout $response) { $valid_route = new Valid_WhiteList('func', $this->routes); $valid_route->required(); if ($request->valid($valid_route)) { $route = $request->get('func'); $controller = new OpenId_LoginController($this->logger, new OpenId_AccountManager(new Openid_Dao(), UserManager::instance()), $request, $response); $controller->{$route}(); } else { $response->addFeedback(Feedback::ERROR, 'Invalid request for ' . __CLASS__); $response->redirect('/'); } }
/** * Validate date Reminder Id. * * @param HTTPRequest $request HTTP request * * @return Integer */ public function validateReminderId(HTTPRequest $request) { $validReminderId = new Valid_UInt('reminder_id'); $validReminderId->required(); if ($request->valid($validReminderId)) { return $request->get('reminder_id'); } else { $errorMessage = $GLOBALS['Language']->getText('project_admin_utils', 'tracker_date_reminder_invalid_reminder', array($request->get('reminder_id'))); throw new Tracker_DateReminderException($errorMessage); } }
/** * Validate request values * * @param HTTPRequest $request request containing form values * * @return Array */ function validateRequest($request) { $status = true; $invalid = array(); $valid = new Valid_String('request_summary'); $valid->required(); $summary = trim($request->get('request_summary')); if ($request->valid($valid) && strlen($summary) < self::MAX_SUMMARY_LENGTH && $summary != '') { $params['summary'] = $summary; } else { $status = false; $invalid[] = $GLOBALS['Language']->getText('plugin_requesthelp', 'summary'); } $valid = new Valid_Text('request_description'); $valid->required(); $description = trim($request->get('request_description')); $defaultDescription = $GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_default_description'); if ($request->valid($valid) && strlen($description) < self::MAX_DESCRIPTION_LENGTH && $description != '' && $description != $defaultDescription) { $params['description'] = $description; } else { $status = false; $invalid[] = 'Description'; } $valid = new Valid_UInt('type'); $valid->required(); if ($request->valid($valid)) { $requestType = $request->get('type'); $params['type'] = $requestType; switch ($requestType) { case RequestHelp::TYPE_SUPPORT: $params['text_type'] = $this->_getPluginProperty('support_request'); break; case RequestHelp::TYPE_ENHANCEMENT: $params['text_type'] = $this->_getPluginProperty('enhancement_request'); break; default: $status = false; $invalid[] = 'Type'; break; } } else { $status = false; $invalid[] = 'Type'; } $valid = new Valid_UInt('severity'); $valid->required(); if ($request->valid($valid)) { $severity = $request->get('severity'); $params['severity'] = $severity; switch ($severity) { case RequestHelp::SEVERITY_MINOR: $params['text_severity'] = 'Minor'; break; case RequestHelp::SEVERITY_SERIOUS: $params['text_severity'] = 'Serious'; break; case RequestHelp::SEVERITY_CRITICAL: $params['text_severity'] = 'Critical'; break; default: $status = false; $invalid[] = $GLOBALS['Language']->getText('plugin_requesthelp', 'severity'); break; } } else { $status = false; $invalid[] = $GLOBALS['Language']->getText('plugin_requesthelp', 'severity'); } $cc = array(); $mails = array_map('trim', preg_split('/[,;]/', $request->get('cc'))); $rule = new Rule_Email(); $um = $this->_getUserManager(); $invalidCc = array(); foreach ($mails as $mail) { if ($rule->isValid($mail)) { $cc[] = $mail; } else { if (trim($mail) != '') { $user = $um->findUser($mail); if ($user) { $mail = $user->getUserName(); if ($mail) { $cc[] = $mail; } else { $invalidCc[] = $mail; } } else { $invalidCc[] = $mail; } } } } if (!empty($invalidCc)) { $c = $this->getController(); $c->addWarn($GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_invalid_cc', implode(", ", $invalidCc))); } $params['cc'] = implode(";", $cc); return array('status' => $status, 'params' => $params, 'invalid' => $invalid); }
/** * Process the monitoring request * * @param HTTPRequest $request HTTP request * @param PFUser $currentUser Current user * @param Integer $groupId Id of the project * @param Integer $fileModuleId Id of the package * @param UserManager $um UserManager instance * @param UserHelper $userHelper UserHelper instance * * @return String */ public function processEditMonitoringAction($request, $currentUser, $groupId, $fileModuleId, $um, $userHelper) { $frspf = new FRSPackageFactory(); $package = $frspf->getFRSPackageFromDb($fileModuleId); if ($frspf->userCanAdmin($currentUser, $groupId)) { if ($request->valid(new Valid_WhiteList('action', array('add_monitoring', 'delete_monitoring')))) { $action = $request->get('action'); switch ($action) { case 'add_monitoring': $users = array_map('trim', preg_split('/[,;]/', $request->get('listeners_to_add'))); foreach ($users as $userName) { if (!empty($userName)) { $user = $um->findUser($userName); $this->addUserMonitoring($user, $groupId, $fileModuleId, $package, $frspf, $userHelper); } } break; case 'delete_monitoring': $users = $request->get('delete_user'); $this->stopMonitoringForUsers($users, $groupId, $fileModuleId, $package, $um, $userHelper); break; default: break; } } } }
/** * Scind the notified people for tracker reminder into dedicated arrays. * At least one list should be not empty * * @param HTTPRequest $request HTTP request * * @return Array */ public function scindReminderNotifiedPeople(HTTPRequest $request) { $vArray = new Valid_Array('reminder_notified'); $notified = $roles = $ugroups = array(); if ($request->valid($vArray)) { $people = $request->get('reminder_notified'); if ($people) { foreach ($people as $value) { if ($value[0] == "r") { $roles[] = substr($value, 2); } else { $ugroups[] = substr($value, 2); } } } if (!empty($ugroups) || !empty($roles)) { $notified[] = $ugroups; $notified[] = $roles; return $notified; } } $errorMessage = $GLOBALS['Language']->getText('project_admin_utils', 'tracker_date_reminder_empty_people_param'); throw new Tracker_DateReminderException($errorMessage); }
/** * Handle the HTTP request * * @param HTTPRequest $request HTTP request * * @return Void */ public function handleRequest(HTTPRequest $request) { $validAction = new Valid_WhiteList('action', array('add', 'delete')); if ($request->valid($validAction)) { $action = $request->get('action'); switch ($action) { case 'add': $this->csrf->check(); $validProject = new Valid_String('project'); $validProject->required(); $project = null; if ($request->valid($validProject)) { $project = $request->get('project'); } $validRequester = new Valid_String('requester'); $validRequester->required(); $requester = null; if ($request->valid($validRequester)) { $requester = $request->get('requester'); } $validQuota = new Valid_UInt('quota'); $validQuota->required(); $quota = null; if ($request->valid($validQuota)) { $quota = $request->get('quota'); } $validMotivation = new Valid_Text('motivation'); $validMotivation->required(); $motivation = null; if ($request->valid($validMotivation)) { $motivation = $request->get('motivation'); } $this->projectQuotaManager->addQuota($project, $requester, $quota, $motivation); break; case 'delete': $this->csrf->check(); $list = $request->get('delete_quota'); $projects = array(); $validProjectId = new Valid_UInt(); foreach ($list as $projectId) { if ($validProjectId->validate($projectId)) { $project = $this->projectManager->getProject($projectId); if ($project) { $projects[$project->getId()] = $project->getPublicName(); } } } $this->projectQuotaManager->deleteCustomQuota($projects); break; default: break; } } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_statistics', 'invalid_action')); } }