// http://www.codendi.com // // // // Originally written by Laurent Julliard 2004, Codendi Team, Xerox // $project_manager = ProjectManager::instance(); $project = $project_manager->getProject($group_id); $project_svnroot = $project->getSVNRootPath(); $dao = new SVN_AccessFile_DAO(); $path = realpath(dirname(__FILE__) . '/../../../templates/svn/'); $renderer = TemplateRendererFactory::build()->getRenderer($path); $request->valid(new Valid_String('post_changes')); $request->valid(new Valid_String('SUBMIT')); if ($request->isPost() && $request->existAndNonEmpty('post_changes')) { $vAccessFile = new Valid_Text('form_accessfile'); $vAccessFile->setErrorMessage($Language->getText('svn_admin_access_control', 'upd_fail')); if ($request->valid($vAccessFile)) { $saf = new SVNAccessFile(); $form_accessfile = null; //store the custom access file in db if ($request->exist('submit_new_version')) { $form_accessfile = trim($saf->parseGroupLines($project, $request->get('form_accessfile'), true)); $dao->saveNewAccessFileVersionInProject($group_id, $form_accessfile); } else { $form_accessfile = $saf->parseGroupLines($project, $request->get('other_version_content'), true); $version_id = $request->get('version_selected'); $dao->updateAccessFileVersionInProject($group_id, $version_id); } $buffer = svn_utils_read_svn_access_file_defaults($project_svnroot); $buffer .= $form_accessfile;
/** * 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); }
function frs_process_release_form($is_update, $request, $group_id, $title, $url) { global $frspf, $frsrf, $frsff; $pm = ProjectManager::instance(); //get and filter all inputs from $request $release = array(); $res = $request->get('release'); $vName = new Valid_String(); $vPackage_id = new Valid_UInt(); $vStatus_id = new Valid_UInt(); if ($vName->validate($res['name']) && $vPackage_id->validate($res['package_id']) && $vStatus_id->validate($res['status_id'])) { $release['status_id'] = $res['status_id']; $release['name'] = $res['name']; $release['package_id'] = $res['package_id']; } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_update_failed')); $GLOBALS['Response']->redirect('/file/showfiles.php?group_id=' . $group_id); } $um = UserManager::instance(); $user = $um->getCurrentUser(); $vDate = new Valid_String(); if ($vDate->validate($res['date'])) { $release['date'] = $res['date']; } else { $release['date'] = ""; } $vRelease_notes = new Valid_Text(); if ($vRelease_notes->validate($res['release_notes'])) { $release['release_notes'] = $res['release_notes']; } else { $release['release_notes'] = ""; } $vChange_log = new Valid_Text(); if ($vChange_log->validate($res['change_log'])) { $release['change_log'] = $res['change_log']; } else { $release['change_log'] = ""; } if ($request->valid(new Valid_String('js'))) { $js = $request->get('js'); } else { $js = ""; } if ($request->validArray(new Valid_String('ftp_file'))) { $ftp_file = $request->get('ftp_file'); } else { $ftp_file = array(); } if ($request->validArray(new Valid_UInt('file_processor'))) { $file_processor = $request->get('file_processor'); } else { $file_processor = array(); } if ($request->validArray(new Valid_UInt('file_type'))) { $file_type = $request->get('file_type'); } else { $file_type = array(); } if ($request->validArray(new Valid_String('reference_md5'))) { $reference_md5 = $request->get('reference_md5'); } else { $reference_md5 = array(); } if ($request->validArray(new Valid_String('comment'))) { $comment = $request->get('comment'); } else { $comment = array(); } if ($request->validArray(new Valid_UInt('ftp_file_processor'))) { $ftp_file_processor = $request->get('ftp_file_processor'); } else { $ftp_file_processor = array(); } if ($request->validArray(new Valid_UInt('ftp_file_type'))) { $ftp_file_type = $request->get('ftp_file_type'); } else { $ftp_file_type = array(); } if ($request->validArray(new Valid_String('ftp_reference_md5'))) { $ftp_reference_md5 = $request->get('ftp_reference_md5'); } else { $ftp_reference_md5 = array(); } if ($request->valid(new Valid_String('release_news_subject'))) { $release_news_subject = $request->get('release_news_subject'); } else { $release_news_subject = ""; } if ($request->valid(new Valid_Text('release_news_details'))) { $release_news_details = $request->get('release_news_details'); } else { $release_news_details = ""; } if ($request->valid(new Valid_WhiteList('private_news', array(0, 1)))) { $private_news = $request->get('private_news'); } else { $private_news = 0; } if ($request->validArray(new Valid_UInt('ugroups'))) { $ugroups = $request->get('ugroups'); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_update_failed')); $GLOBALS['Response']->redirect('/file/showfiles.php?group_id=' . $group_id); } if ($request->valid(new Valid_WhiteList('release_submit_news', array(0, 1)))) { $release_submit_news = (int) $request->get('release_submit_news'); } else { $release_submit_news = 0; } if ($request->valid(new Valid_WhiteList('notification', array(0, 1)))) { $notification = $request->get('notification'); } else { $notification = 0; } if ($is_update) { if ($request->validArray(new Valid_UInt('release_files_to_delete'))) { $release_files_to_delete = $request->get('release_files_to_delete'); } else { $release_files_to_delete = array(); } if ($request->validArray(new Valid_UInt('release_files'))) { $release_files = $request->get('release_files'); } else { $release_files = array(); } if ($request->validArray(new Valid_UInt('release_file_processor'))) { $release_file_processor = $request->get('release_file_processor'); } else { $release_file_processor = array(); } if ($request->validArray(new Valid_UInt('release_file_type'))) { $release_file_type = $request->get('release_file_type'); } else { $release_file_type = array(); } if ($request->validArray(new Valid_String('release_reference_md5'))) { $release_reference_md5 = $request->get('release_reference_md5'); } else { $release_reference_md5 = array(); } if ($request->validArray(new Valid_UInt('new_release_id'))) { $new_release_id = $request->get('new_release_id'); } else { $new_release_id = array(); } if ($request->validArray(new Valid_String('release_time'))) { $release_time = $request->get('release_time'); } else { $release_time = array(); } if ($request->validArray(new Valid_String('reference_md5'))) { $reference_md5 = $request->get('reference_md5'); } else { $reference_md5 = array(); } if ($request->validArray(new Valid_Text('release_comment'))) { $release_comment = $request->get('release_comment'); } else { $release_comment = array(); } if ($request->valid(new Valid_UInt('id'))) { $release['release_id'] = $request->get('id'); } else { exit; } } $validator = new frsValidator(); if ($is_update) { $valid = $validator->isValidForUpdate($release, $group_id); } else { $valid = $validator->isValidForCreation($release, $group_id); } if ($valid) { //uplaod release_notes and change_log if needed $data_uploaded = false; if (isset($_FILES['uploaded_change_log']) && !$_FILES['uploaded_change_log']['error']) { $code = addslashes(fread(fopen($_FILES['uploaded_change_log']['tmp_name'], 'r'), file_utils_get_size($_FILES['uploaded_change_log']['tmp_name']))); if (strlen($code) > 0 && strlen($code) < $GLOBALS['sys_max_size_upload']) { //size is fine $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'data_uploaded')); $data_uploaded = true; $release['change_log'] = $code; } else { //too big or small $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('file_admin_editreleases', 'length_err', $GLOBALS['sys_max_size_upload'])); } } if (isset($_FILES['uploaded_release_notes']) && !$_FILES['uploaded_release_notes']['error']) { $code = addslashes(fread(fopen($_FILES['uploaded_release_notes']['tmp_name'], 'r'), file_utils_get_size($_FILES['uploaded_release_notes']['tmp_name']))); if (strlen($code) > 0 && strlen($code) < $GLOBALS['sys_max_size_upload']) { //size is fine if (!$data_uploaded) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'data_uploaded')); } $release['release_notes'] = $code; } else { //too big or small $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('file_admin_editreleases', 'length_err', $GLOBALS['sys_max_size_upload'])); } } if ($is_update) { // make sure that we don't change the date by error because of timezone reasons. // eg: release created in India (GMT +5:30) at 2004-06-03. // MLS in Los Angeles (GMT -8) changes the release notes // the release_date that we showed MLS is 2004-06-02. // with mktime(0,0,0,2,6,2004); we will change the unix time in the database // and the people in India will discover that their release has been created on 2004-06-02 $rel =& $frsrf->getFRSReleaseFromDb($release['release_id']); if (format_date('Y-m-d', $rel->getReleaseDate()) == $release['date']) { // the date didn't change => don't update it $unix_release_time = $rel->getReleaseDate(); } else { $date_list = split("-", $release['date'], 3); $unix_release_time = mktime(0, 0, 0, $date_list[1], $date_list[2], $date_list[0]); } } else { //parse the date $date_list = split("-", $release['date'], 3); $unix_release_time = mktime(0, 0, 0, $date_list[1], $date_list[2], $date_list[0]); } //now we create or update the release $array = array('release_date' => $unix_release_time, 'name' => $release['name'], 'status_id' => $release['status_id'], 'package_id' => $release['package_id'], 'notes' => $release['release_notes'], 'changes' => $release['change_log']); if ($is_update) { $array['release_id'] = $release['release_id']; } if ($is_update) { $res = $frsrf->update($array); if (!$res) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_update_failed')); //insert failed - go back to definition screen } else { //release added - now show the detail page for this new release $release_id = $array['release_id']; $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_updated', $release['name'])); } } else { $res = $frsrf->create($array); if (!$res) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language'] > getText('file_admin_editreleases', 'add_rel_fail')); //insert failed - go back to definition screen } else { //release added - now show the detail page for this new release $release_id = $res; $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_added')); } } if ($res) { // extract cross references $reference_manager =& ReferenceManager::instance(); $reference_manager->extractCrossRef($release['release_notes'], $release_id, ReferenceManager::REFERENCE_NATURE_RELEASE, $group_id); $reference_manager->extractCrossRef($release['change_log'], $release_id, ReferenceManager::REFERENCE_NATURE_RELEASE, $group_id); //set the release permissions list($return_code, $feedbacks) = permission_process_selection_form($group_id, 'RELEASE_READ', $release_id, $ugroups); if (!$return_code) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editpackages', 'perm_update_err')); $GLOBALS['Response']->addFeedback('error', $feedbacks); } //submit news if requested if ($release_id && user_ismember($group_id, 'A') && $release_submit_news) { news_submit($group_id, $release_news_subject, $release_news_details, $private_news, 3); } // Send notification if ($notification) { $rel = $frsrf->getFRSReleaseFromDb($release_id); $count = $frsrf->emailNotification($rel); if ($count === false) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'mail_failed', array($GLOBALS['sys_email_admin']))); } else { if ($count > 0) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'email_sent', $count)); } } } $group = $pm->getProject($group_id); $group_unix_name = $group->getUnixName(false); $project_files_dir = $GLOBALS['ftp_frs_dir_prefix'] . '/' . $group_unix_name; if ($is_update) { $files =& $rel->getFiles(); //remove files foreach ($release_files_to_delete as $rel_file) { $res =& $frsff->getFRSFileFromDb($rel_file); $fname = $res->getFileName(); $res = $frsff->delete_file($group_id, $rel_file); if ($res == 0) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'f_not_yours', basename($fname))); } else { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'file_deleted', basename($fname))); } } //update files $index = 0; foreach ($release_files as $rel_file) { if (!$release_files_to_delete || !in_array($rel_file, $release_files_to_delete)) { $package_id = $release['package_id']; $fname = $files[$index]->getFileName(); $list = split('/', $fname); $fname = $list[sizeof($list) - 1]; if ($new_release_id[$index] != $release_id) { //changing to a different release for this file //see if the new release is valid for this project $res2 = $frsrf->getFRSReleaseFromDb($new_release_id[$index], $group_id); if (!$res2 || count($res2) < 1) { //release not found for this project $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_not_yours', $fname)); } else { $package_id = $res2->getPackageID(); } } if ($new_release_id[$index] == $release_id || $res2) { if (!ereg("[0-9]{4}-[0-9]{2}-[0-9]{2}", $release_time[$index])) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('file_admin_editreleases', 'data_not_parsed_file', $fname)); } else { $res2 =& $frsff->getFRSFileFromDb($rel_file); if (format_date('Y-m-d', $res2->getReleaseTime()) == $release_time[$index]) { $unix_release_time = $res2->getReleaseTime(); } else { $date_list = split("-", $release_time[$index], 3); $unix_release_time = mktime(0, 0, 0, $date_list[1], $date_list[2], $date_list[0]); } $array = array('release_id' => $new_release_id[$index], 'release_time' => $unix_release_time, 'type_id' => $release_file_type[$index], 'processor_id' => $release_file_processor[$index], 'file_id' => $rel_file, 'comment' => $release_comment[$index], 'filename' => 'p' . $package_id . '_r' . $new_release_id[$index] . '/' . $fname, 'filepath' => 'p' . $package_id . '_r' . $new_release_id[$index] . '/' . $fname . '_' . $unix_release_time); if ($release_reference_md5[$index] && $release_reference_md5[$index] != '') { $array['reference_md5'] = $release_reference_md5[$index]; } $res = $frsff->update($array); if ($res) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'file_updated', $fname)); } } } } $index++; } } //add new files //files processing $http_files_list = array(); $processor_type_list = array(); $file_type_list = array(); $http_files_processor_type_list = array(); $ftp_files_processor_type_list = array(); if (isset($js) && $js == 'no_js') { //if javascript is not allowed, there is maximum one file to upload // TODO : fix warnings due to array instead of string for "file_processor", "file_type" & "reference_md5" if ($ftp_file[0] != -1) { $ftp_files_processor_type_list[] = array('name' => $ftp_file[0], 'processor' => $file_processor, 'type' => $file_type, 'reference_md5' => $reference_md5, 'comment' => $comment); } else { if (trim($_FILES['file']['name'][0]) != '') { $http_files_processor_type_list[] = array('error' => $_FILES['file']['error'][0], 'name' => stripslashes($_FILES['file']['name'][0]), 'tmp_name' => $_FILES['file']['tmp_name'][0], 'processor' => $file_processor, 'type' => $file_type, 'reference_md5' => $reference_md5, 'comment' => $comment); } } } else { //get http files with the associated processor type and file type in allowed javascript case $nb_files = isset($_FILES['file']) ? count($_FILES['file']['name']) : 0; for ($i = 0; $i < $nb_files; $i++) { if (trim($_FILES['file']['name'][$i]) != '') { $http_files_processor_type_list[] = array('error' => $_FILES['file']['error'][$i], 'name' => stripslashes($_FILES['file']['name'][$i]), 'tmp_name' => $_FILES['file']['tmp_name'][$i], 'processor' => $file_processor[$i], 'type' => $file_type[$i], 'reference_md5' => $reference_md5[$i], 'comment' => $comment[$i]); } } //remove hidden ftp_file input (if the user let the select boxe on --choose file) $tmp_file_list = array(); $index = 0; foreach ($ftp_file as $file) { if (trim($file) != '') { $ftp_files_processor_type_list[] = array('name' => $file, 'processor' => $ftp_file_processor[$index], 'type' => $ftp_file_type[$index], 'reference_md5' => $ftp_reference_md5[$index]); $index++; } } } if (count($http_files_processor_type_list) > 0 || count($ftp_files_processor_type_list) > 0) { //see if this release belongs to this project $res1 =& $frsrf->getFRSReleaseFromDb($release_id, $group_id); if (!$res1 || count($res1) < 1) { //release not found for this project $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_not_yours')); } else { $now = time(); $addingFiles = false; //iterate and add the http files to the frs_file table foreach ($http_files_processor_type_list as $file) { $filename = $file['name']; if (isset($file['error'])) { switch ($file['error']) { case UPLOAD_ERR_OK: // all is OK break; case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'error_upload_size', $file['error'])); break; case UPLOAD_ERR_PARTIAL: $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'error_upload_partial', $file['error'])); break; case UPLOAD_ERR_NO_FILE: $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'error_upload_nofile', $file['error'])); break; default: $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'error_upload_unknown', $file['error'])); } } if (is_uploaded_file($file['tmp_name'])) { $uploaddir = $frsff->getSrcDir($request->getProject()); $uploadfile = $uploaddir . "/" . basename($filename); if (!file_exists($uploaddir) || !is_writable($uploaddir) || !move_uploaded_file($file['tmp_name'], $uploadfile)) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'not_add_file') . ": " . basename($filename)); } else { $newFile = new FRSFile(); $newFile->setRelease($res1); $newFile->setFileName($filename); $newFile->setProcessorID($file['processor']); $newFile->setTypeID($file['type']); $newFile->setReferenceMd5($file['reference_md5']); $newFile->setUserId($user->getId()); $newFile->setComment($file['comment']); try { $frsff->createFile($newFile); $addingFiles = true; } catch (Exception $e) { $GLOBALS['Response']->addFeedback('error', $e->getMessage()); } } } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'not_add_file') . ": " . basename($filename)); } } //iterate and add the ftp files to the frs_file table foreach ($ftp_files_processor_type_list as $file) { $filename = $file['name']; $newFile = new FRSFile(); $newFile->setRelease($res1); $newFile->setFileName($filename); $newFile->setProcessorID($file['processor']); $newFile->setTypeID($file['type']); $newFile->setReferenceMd5($file['reference_md5']); $newFile->setUserId($user->getId()); try { $frsff->createFile($newFile, ~FRSFileFactory::COMPUTE_MD5); $addingFiles = true; $em = EventManager::instance(); $em->processEvent(Event::COMPUTE_MD5SUM, array('fileId' => $newFile->getFileID())); $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'offline_md5', $filename)); } catch (Exception $e) { $GLOBALS['Response']->addFeedback('error', $e->getMessage()); } } } if ($addingFiles) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'add_files')); } } //redirect to files $GLOBALS['Response']->redirect('/file/?group_id=' . $group_id); } } else { $GLOBALS['Response']->addFeedback('error', $validator->getErrors()); } frs_display_release_form($is_update, $release, $group_id, $title, $url); }
} else { $addedUgroups[] = $ugroupName; } } //update group history group_add_history('membership_request_updated', implode(',', $oldUgroups) . ' :: ' . implode(',', $newUgroups), $group_id); $GLOBALS['Response']->addFeedback('info', $Language->getText('project_admin_index', 'member_request_delegation_ugroups_msg', implode(', ', $addedUgroups))); } } else { $GLOBALS['Response']->addFeedback('error', $Language->getText('project_admin_index', 'member_request_delegation_ugroups_error')); } break; case 'member_req_notif_message': $updatedMessage = true; // Validate the text $vMessage = new Valid_Text('text'); $vMessage->required(); $message = trim($request->get('text')); $dar = $pm->getMessageToRequesterForAccessProject($group_id); if ($dar && !$dar->isError() && $dar->rowCount() == 1) { $row = $dar->current(); if (!strcmp($row['msg_to_requester'], $message)) { $updatedMessage = false; } } if ($request->valid($vMessage) & !empty($message) & $updatedMessage) { if ($pm->setMessageToRequesterForAccessProject($group_id, $message)) { $GLOBALS['Response']->addFeedback('info', $Language->getText('project_admin_index', 'member_request_delegation_msg_info')); } } else { $GLOBALS['Response']->addFeedback('error', $Language->getText('project_admin_index', 'member_request_delegation_msg_error'));
/** * Display form to fill a request * * @param Array $params params of the hook * * @return Void */ function displayForm($params = null) { $um = UserManager::instance(); $user = $um->getCurrentUser(); $ignoreLabs = $this->getController()->getPlugin()->getProperty('ignore_labs'); if ($user->isLoggedIn() && ($ignoreLabs || $user->useLabFeatures())) { $type = RequestHelp::TYPE_SUPPORT; $severity = RequestHelp::SEVERITY_MINOR; $summary = ''; $description = $GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_default_description'); $cc = ''; if (is_array($params)) { $valid = new Valid_UInt(); if (isset($params['type']) && $valid->validate($params['type'])) { $type = $params['type']; } if (isset($params['severity']) && $valid->validate($params['severity'])) { $severity = $params['severity']; } $valid = new Valid_String(); if (isset($params['summary']) && $valid->validate($params['summary'])) { $summary = $params['summary']; } $valid = new Valid_Text(); if (isset($params['description']) && $valid->validate($params['description'])) { $description = $params['description']; } $valid = new Valid_String(); if (isset($params['cc']) && $valid->validate($params['cc'])) { $cc = $params['cc']; } } $p = PluginManager::instance()->getPluginByName('requesthelp'); echo '<fieldset class="requesthelp_fieldset"> <legend><b>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_explain_label') . '</b></legend> <form name="request" class="requesthelp_cssform" action="' . $p->getPluginPath() . '/" method="post" enctype="multipart/form-data"> <table> <tr>'; echo '<td><b><a class="tooltip" href="#" title="' . $GLOBALS['Language']->getText('plugin_requesthelp', 'tooltip_type') . '">Type:</a></b> <span class="highlight"><big>*</big></b></span></td><td><select name="type"><option value="' . RequestHelp::TYPE_SUPPORT . '" '; if ($type == RequestHelp::TYPE_SUPPORT) { echo 'selected'; } echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Support_request') . '</option> <option value="' . RequestHelp::TYPE_ENHANCEMENT . '" '; if ($type == RequestHelp::TYPE_ENHANCEMENT) { echo 'selected'; } echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Enhancement_request') . '</option> </select>'; echo '</td><td align="right"><b><a class="tooltip" href="#" title="' . $GLOBALS['Language']->getText('plugin_requesthelp', 'tooltip_severity') . '">' . $GLOBALS['Language']->getText('plugin_requesthelp', 'severity') . ':</a></b> <span class="highlight"><big>*</big></b></span> <select name="severity"> <option value="' . RequestHelp::SEVERITY_MINOR . '" '; if ($severity == RequestHelp::SEVERITY_MINOR) { echo 'selected'; } echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Minor') . '</option> <option value="' . RequestHelp::SEVERITY_SERIOUS . '" '; if ($severity == RequestHelp::SEVERITY_SERIOUS) { echo 'selected'; } echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Serious') . '</option> <option value="' . RequestHelp::SEVERITY_CRITICAL . '" '; if ($severity == RequestHelp::SEVERITY_CRITICAL) { echo 'selected'; } echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Critical') . '</option> </select> </td> </tr>'; echo '<tr><td><b><a class="tooltip" href="#" title="' . $GLOBALS['Language']->getText('plugin_requesthelp', 'tooltip_summary') . '">' . $GLOBALS['Language']->getText('plugin_requesthelp', 'summary') . ':</a></b> <span class="highlight"><big>*</big></span></td> <td colspan="3"><input type="text" name="request_summary" value="' . $summary . '" /></td></tr>'; echo '<tr><td><b><a class="tooltip" href="#" title="' . $GLOBALS['Language']->getText('plugin_requesthelp', 'tooltip_description') . '"><span class="requesthelp_totop">Description:</span></a></b> <span class="highlight"><span class="requesthelp_totop"><big>*</big></b></span></span></td><td colspan="3"><textarea id="request_description" name="request_description">' . $description . '</textarea></td></tr> <tr><td></td><td colspan="3"><i><b><u>Note</u>: </b>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_cc_note') . '</i></td></tr> <tr><td><label>CC :</label></td><td colspan="3"><input id="requesthelp_cc" type="text" name="cc" value="' . $cc . '" /></td></tr> <tr><td><input name="action" type="hidden" value="submit_ticket" /></td><td><input name="submit" type="submit" value="Submit" /></td></tr> </table> </form> </fieldset>'; $js = "\$('request_description').defaultValueActsAsHint();\n options = new Array();\n options['defaultValueActsAsHint'] = false;\n new UserAutoCompleter('requesthelp_cc', '" . util_get_dir_image_theme() . "', true, options);"; $GLOBALS['Response']->includeFooterJavascriptSnippet($js); } }
$valid = new Valid_Text('body'); $valid->required(); if ($request->valid($valid)) { $body = $request->get('body'); } $csrf_token = new CSRFSynchronizerToken('sendmessage.php'); $purifier = Codendi_HTMLPurifier::instance(); if (isset($send_mail)) { if (!$subject || !$body || !$email) { /* force them to enter all vars */ exit_missing_param(); } $csrf_token->check(); $valid = new Valid_Text('cc'); $valid->required(); if ($request->valid($valid)) { $cc = $request->get('cc'); } $mailMgr = new MailManager(); $mail = $mailMgr->getMailByType(); if (isset($touser)) { //Return the user given its user_id $to = $um->getUserById($touser); if (!$to) { exit_error($Language->getText('include_exit', 'error'), $Language->getText('sendmessage', 'err_nouser')); } $mail->setToUser(array($to)); $dest = $to->getRealName(); } else {
public function _dispatchActionAndView($action, $repoId, $repositoryName, $user) { $pane = $this->request->get('pane'); switch ($action) { #CREATE REF case 'create': $this->addView('create'); break; #admin #admin case 'view': $this->addAction('getRepositoryDetails', array($this->groupId, $repoId)); $this->addView('view'); break; #ADD REF #ADD REF case 'add': $this->addAction('createReference', array($this->groupId, $repositoryName)); $this->addView('index'); break; #DELETE a repository #DELETE a repository case 'del': $this->addAction('deleteRepository', array($this->groupId, $repoId)); $this->addView('index'); break; #EDIT #EDIT case 'edit': $repository = $this->factory->getRepositoryById($repoId); if (empty($repository)) { $this->addError($this->getText('actions_params_error')); $this->redirect('/plugins/git/?action=index&group_id=' . $this->groupId); return false; } if ($this->isAPermittedAction('clone') && $this->request->get('clone')) { $valid = new Valid_UInt('parent_id'); $valid->required(); if ($this->request->valid($valid)) { $parentId = (int) $this->request->get('parent_id'); } $this->addAction('cloneRepository', array($this->groupId, $repositoryName, $parentId)); $this->addAction('getRepositoryDetails', array($this->groupId, $parentId)); $this->addView('view'); } else { if ($this->isAPermittedAction('save') && $this->request->get('save')) { $repoDesc = null; if ($this->request->exist('repo_desc')) { $repoDesc = GitRepository::DEFAULT_DESCRIPTION; $valid = new Valid_Text('repo_desc'); $valid->required(); if ($this->request->valid($valid)) { $repoDesc = $this->request->get('repo_desc'); } } $repoAccess = null; $valid = new Valid_String('repo_access'); $valid->required(); if ($this->request->valid($valid) || is_array($this->request->get('repo_access'))) { $repoAccess = $this->request->get('repo_access'); } $this->addAction('save', array($this->groupId, $repoId, $repoAccess, $repoDesc, $pane)); $this->addView('view'); } else { $this->addError($this->getText('controller_access_denied')); $this->redirect('/plugins/git/?group_id=' . $this->groupId); } } break; #repo_management #repo_management case 'repo_management': $repository = $this->factory->getRepositoryById($repoId); if (empty($repository)) { $this->addError($this->getText('actions_repo_not_found')); $this->redirect('/plugins/git/?action=index&group_id=' . $this->groupId); return false; } $this->addAction('repoManagement', array($repository)); $this->addView('repoManagement'); break; case 'mail': $this->processRepoManagementNotifications($pane, $repoId, $repositoryName, $user); break; #fork #fork case 'fork': $this->addAction('repoManagement', array($this->groupId, $repoId)); $this->addView('forkRepositories'); break; #confirm_private #confirm_private case 'confirm_private': if ($this->isAPermittedAction('confirm_deletion') && $this->request->get('confirm_deletion')) { $repository = $this->factory->getRepositoryById($repoId); $this->addAction('confirmDeletion', array($this->groupId, $repository)); $this->addView('confirm_deletion', array(0 => array('repo_id' => $repoId))); } else { if ($this->isAPermittedAction('save') && $this->request->get('save')) { $valid = new Valid_Text('repo_desc'); $valid->required(); if ($this->request->valid($valid)) { $repoDesc = $this->request->get('repo_desc'); } $valid = new Valid_String('repo_access'); $valid->required(); if ($this->request->valid($valid)) { $repoAccess = $this->request->get('repo_access'); } $this->addAction('confirmPrivate', array($this->groupId, $repoId, $repoAccess, $repoDesc)); $this->addView('confirmPrivate'); } } break; #SET TO PRIVATE #SET TO PRIVATE case 'set_private': $this->addAction('setPrivate', array($this->groupId, $repoId)); $this->addView('view'); break; case 'fork_repositories': $this->addAction('getProjectRepositoryList', array($this->groupId)); $this->addView('forkRepositories'); break; case 'admin-git-admins': if ($this->request->get('submit')) { $valid = new Valid_Numeric(GitPresenters_AdminGitAdminsPresenter::GIT_ADMIN_SELECTBOX_NAME); $project = $this->projectManager->getProject($this->groupId); if ($this->request->validArray($valid)) { $select_project_ids = $this->request->get(GitPresenters_AdminGitAdminsPresenter::GIT_ADMIN_SELECTBOX_NAME); if ($select_project_ids) { $this->addAction('updateGitAdminGroups', array($project, $user, $select_project_ids)); } else { $this->addError($this->getText('no_data_retrieved')); } } else { $this->addError($this->getText('not_valid_request')); } } $this->addView('adminGitAdminsView', array($this->areMirrorsEnabledForProject())); break; case 'admin': case 'admin-gerrit-templates': $project = $this->projectManager->getProject($this->groupId); if ($this->request->get('save')) { $template_content = $this->request->getValidated('git_admin_config_data', 'text'); if ($this->request->getValidated('git_admin_template_id', 'uint')) { $template_id = $this->request->get('git_admin_template_id'); $this->addAction('updateTemplate', array($project, $user, $template_content, $template_id)); } else { $template_name = $this->request->getValidated('git_admin_file_name', 'string'); $this->addAction('createTemplate', array($project, $user, $template_content, $template_name)); } } if ($this->request->get('delete')) { if ($this->request->getValidated('git_admin_template_id', 'uint')) { $template_id = $this->request->get('git_admin_template_id'); $this->addAction('deleteGerritTemplate', array($template_id, $project, $user)); } } if ($this->permissions_manager->userIsGitAdmin($user, $project)) { $this->addAction('generateGerritRepositoryAndTemplateList', array($project, $user)); $this->addView('adminGerritTemplatesView', array($this->areMirrorsEnabledForProject())); } else { $this->addError($this->getText('controller_access_denied')); $this->redirect('/plugins/git/?action=index&group_id=' . $this->groupId); return false; } break; case 'admin-mass-update': if ($this->request->get('save-mass-change') || $this->request->get('go-to-mass-change')) { $this->checkSynchronizerToken('/plugins/git/?group_id=' . (int) $this->groupId . '&action=admin-mass-update'); $repositories = $this->getRepositoriesFromIds($this->request->get('repository_ids')); if (!$repositories) { $this->addError($this->getText('actions_repo_not_found')); $this->redirect('/plugins/git/?action=index&group_id=' . $this->groupId); } } if ($this->request->get('go-to-mass-change')) { $this->addAction('setSelectedRepositories', array($repositories)); $this->addView('adminMassUpdateView'); return; } if ($this->request->get('save-mass-change')) { $this->addAction('updateMirroring', array($this->request->getProject(), $repositories, $this->request->get('selected_mirror_ids'))); } $this->addView('adminMassUpdateSelectRepositoriesView'); break; case 'admin-default-settings': $this->addView('adminDefaultSettings', array($this->areMirrorsEnabledForProject())); break; case 'fetch_git_config': $project = $this->projectManager->getProject($this->groupId); $this->setDefaultPageRendering(false); $this->addAction('fetchGitConfig', array($repoId, $user, $project)); break; case 'fetch_git_template': $project = $this->projectManager->getProject($this->groupId); $template_id = $this->request->getValidated('template_id', 'uint'); $this->setDefaultPageRendering(false); $this->addAction('fetchGitTemplate', array($template_id, $user, $project)); break; case 'fork_repositories_permissions': $scope = self::SCOPE_PERSONAL; $valid = new Valid_UInt('repos'); $valid->required(); if ($this->request->validArray($valid)) { $repos = $this->request->get('repos'); } $valid = new Valid_UInt('to_project'); if ($this->request->valid($valid)) { $toProject = $this->request->get('to_project'); } $valid = new Valid_String('path'); $valid->required(); $path = ''; if ($this->request->valid($valid)) { $path = $this->request->get('path'); } $valid = new Valid_String('choose_destination'); $valid->required(); if ($this->request->valid($valid)) { $scope = $this->request->get('choose_destination'); } if (!empty($repos)) { $this->addAction('forkRepositoriesPermissions', array($repos, $toProject, $path, $scope)); $this->addView('forkRepositoriesPermissions'); } else { $this->addError($this->getText('actions_params_error')); $this->addAction('getProjectRepositoryList', array($this->groupId)); $this->addView('forkRepositories'); } break; case 'do_fork_repositories': try { if ($this->request->get('choose_destination') == self::SCOPE_PERSONAL) { if ($this->user->isMember($this->groupId)) { $this->_doDispatchForkRepositories($this->request, $user); } else { $this->addError($this->getText('controller_access_denied')); } } else { $this->_doDispatchForkCrossProject($this->request, $user); } } catch (MalformedPathException $e) { $this->addError($this->getText('fork_malformed_path')); } $this->addAction('getProjectRepositoryList', array($this->groupId)); $this->addView('forkRepositories'); break; case "view_last_git_pushes": $vGroupId = new Valid_GroupId(); $vGroupId->required(); if ($this->request->valid($vGroupId)) { $groupId = $this->request->get('group_id'); } $vWeeksNumber = new Valid_UInt('weeks_number'); if ($this->request->valid($vWeeksNumber)) { $weeksNumber = $this->request->get('weeks_number'); } if (empty($weeksNumber) || $weeksNumber > Git_LastPushesGraph::MAX_WEEKSNUMBER) { $weeksNumber = 12; } $imageRenderer = new Git_LastPushesGraph($groupId, $weeksNumber); $imageRenderer->display(); break; case 'migrate_to_gerrit': if (ForgeConfig::get('sys_auth_type') !== ForgeConfig::AUTH_TYPE_LDAP) { $this->redirect('/plugins/git/?group_id=' . $this->groupId); break; } $repo = $this->factory->getRepositoryById($repoId); $remote_server_id = $this->request->getValidated('remote_server_id', 'uint'); $gerrit_template_id = $this->getValidatedGerritTemplateId($repo); if (empty($repo) || empty($remote_server_id) || empty($gerrit_template_id)) { $this->addError($this->getText('actions_params_error')); $this->redirect('/plugins/git/?group_id=' . $this->groupId); } else { try { $project_exists = $this->gerritProjectAlreadyExists($remote_server_id, $repo); if ($project_exists) { $this->addError($this->getText('gerrit_project_exists')); } else { $this->addAction('migrateToGerrit', array($repo, $remote_server_id, $gerrit_template_id)); } } catch (Git_Driver_Gerrit_Exception $e) { $this->addError($this->getText('gerrit_server_down')); } $this->addAction('redirectToRepoManagementWithMigrationAccessRightInformation', array($this->groupId, $repoId, $pane)); } break; case 'disconnect_gerrit': $repo = $this->factory->getRepositoryById($repoId); if (empty($repo)) { $this->addError($this->getText('actions_params_error')); $this->redirect('/plugins/git/?group_id=' . $this->groupId); } else { $this->addAction('disconnectFromGerrit', array($repo)); $this->addAction('redirectToRepoManagement', array($this->groupId, $repoId, $pane)); } break; case 'delete_gerrit_project': $repo = $this->factory->getRepositoryById($repoId); $server = $this->gerrit_server_factory->getServerById($repo->getRemoteServerId()); $project_gerrit_name = $this->driver_factory->getDriver($server)->getGerritProjectName($repo); try { $this->driver_factory->getDriver($server)->deleteProject($server, $project_gerrit_name); } catch (ProjectDeletionException $exception) { $this->addError($this->getText('project_deletion_not_possible', array($project_gerrit_name, $exception->getMessage()))); } catch (Git_Driver_Gerrit_Exception $e) { $this->addError($this->getText('gerrit_server_down')); } $migrate_access_right = $this->request->existAndNonEmpty('migrate_access_right'); $this->addAction('redirectToRepoManagementWithMigrationAccessRightInformation', array($this->groupId, $repoId, $pane)); break; case 'update_mirroring': $repository = $this->factory->getRepositoryById($repoId); if (!$repository) { $this->addError($this->getText('actions_repo_not_found')); } $selected_mirror_ids = $this->request->get('selected_mirror_ids'); if (is_array($selected_mirror_ids)) { $this->addAction('updateMirroring', array($this->request->getProject(), array($repository), $selected_mirror_ids)); } else { $this->addError($this->getText('actions_mirror_ids_not_valid')); } $this->addAction('redirectToRepoManagement', array($this->groupId, $repository->getId(), $pane)); break; case 'update_default_mirroring': $project = $this->request->getProject(); $selected_mirror_ids = $this->request->get('selected_mirror_ids'); if (is_array($selected_mirror_ids)) { $this->addAction('updateDefaultMirroring', array($project, $selected_mirror_ids)); } else { $this->addError($this->getText('actions_mirror_ids_not_valid')); } $this->addView('adminDefaultSettings', array($this->areMirrorsEnabledForProject())); break; case 'restore': $this->addAction('restoreRepository', array($repoId, $this->groupId)); break; #LIST #LIST default: $user_id = null; $valid = new Valid_UInt('user'); $valid->required(); if ($this->request->valid($valid)) { $user_id = $this->request->get('user'); $this->addData(array('user' => $user_id)); } $this->addAction('getProjectRepositoryList', array($this->groupId, $user_id)); $this->addView('index'); break; } }
public function _dispatchActionAndView($action, $repoId, $repositoryName, $user) { switch ($action) { #CREATE REF case 'create': $this->addView('create'); break; #admin #admin case 'view': $this->addAction('getRepositoryDetails', array($this->groupId, $repoId)); $this->addView('view'); break; #ADD REF #ADD REF case 'add': $this->addAction('createReference', array($this->groupId, $repositoryName)); $this->addView('index'); break; #DELETE a repository #DELETE a repository case 'del': $this->addAction('deleteRepository', array($this->groupId, $repoId)); $this->addView('index'); break; #EDIT #EDIT case 'edit': if ($this->isAPermittedAction('clone') && $this->request->get('clone')) { $valid = new Valid_UInt('parent_id'); $valid->required(); if ($this->request->valid($valid)) { $parentId = (int) $this->request->get('parent_id'); } $this->addAction('cloneRepository', array($this->groupId, $repositoryName, $parentId)); $this->addAction('getRepositoryDetails', array($this->groupId, $parentId)); $this->addView('view'); } else { if ($this->isAPermittedAction('confirm_deletion') && $this->request->get('confirm_deletion')) { $this->addAction('confirmDeletion', array($this->groupId, $repoId)); $this->addView('confirm_deletion', array(0 => array('repo_id' => $repoId))); } else { if ($this->isAPermittedAction('save') && $this->request->get('save')) { $valid = new Valid_Text('repo_desc'); $valid->required(); if ($this->request->valid($valid)) { $repoDesc = $this->request->get('repo_desc'); } $valid = new Valid_String('repo_access'); $valid->required(); if ($this->request->valid($valid) || is_array($this->request->get('repo_access'))) { $repoAccess = $this->request->get('repo_access'); } $this->addAction('save', array($this->groupId, $repoId, $repoAccess, $repoDesc)); $this->addView('view'); } else { $this->addError($this->getText('controller_access_denied')); $this->redirect('/plugins/git/?group_id=' . $this->groupId); } } } break; #repo_management #repo_management case 'repo_management': $this->addAction('repoManagement', array($this->groupId, $repoId)); $this->addView('repoManagement'); break; #mail prefix #mail prefix case 'mail_prefix': $valid = new Valid_String('mail_prefix'); $valid->required(); if ($this->request->valid($valid)) { $mailPrefix = $this->request->get('mail_prefix'); } else { $mailPrefix = ''; } $this->addAction('notificationUpdatePrefix', array($this->groupId, $repoId, $mailPrefix)); $this->addView('repoManagement'); break; #add mail #add mail case 'add_mail': $validMails = array(); $mails = array_map('trim', preg_split('/[,;]/', $this->request->get('add_mail'))); $rule = new Rule_Email(); $um = UserManager::instance(); foreach ($mails as $mail) { if ($rule->isValid($mail)) { $validMails[] = $mail; } else { $user = $um->findUser($mail); if ($user) { $mail = $user->getEmail(); if ($mail) { $validMails[] = $mail; } else { $this->addError($this->getText('no_user_mail', array($mail))); } } else { $this->addError($this->getText('no_user', array($mail))); } } } $this->addAction('notificationAddMail', array($this->groupId, $repoId, $validMails)); $this->addView('repoManagement'); break; #remove mail #remove mail case 'remove_mail': $mails = array(); $valid = new Valid_Email('mail'); $valid->required(); if ($this->request->validArray($valid)) { $mails = $this->request->get('mail'); } if (count($mails) > 0) { $this->addAction('notificationRemoveMail', array($this->groupId, $repoId, $mails)); $this->addView('repoManagement'); } else { $this->addAction('repoManagement', array($this->groupId, $repoId)); $this->addView('repoManagement'); } break; #fork #fork case 'fork': $this->addAction('repoManagement', array($this->groupId, $repoId)); $this->addView('forkRepositories'); break; #confirm_private #confirm_private case 'confirm_private': if ($this->isAPermittedAction('confirm_deletion') && $this->request->get('confirm_deletion')) { $this->addAction('confirmDeletion', array($this->groupId, $repoId)); $this->addView('confirm_deletion', array(0 => array('repo_id' => $repoId))); } else { if ($this->isAPermittedAction('save') && $this->request->get('save')) { $valid = new Valid_Text('repo_desc'); $valid->required(); if ($this->request->valid($valid)) { $repoDesc = $this->request->get('repo_desc'); } $valid = new Valid_String('repo_access'); $valid->required(); if ($this->request->valid($valid)) { $repoAccess = $this->request->get('repo_access'); } $this->addAction('confirmPrivate', array($this->groupId, $repoId, $repoAccess, $repoDesc)); $this->addView('confirmPrivate'); } } break; #SET TO PRIVATE #SET TO PRIVATE case 'set_private': $this->addAction('setPrivate', array($this->groupId, $repoId)); $this->addView('view'); break; case 'fork_repositories': $this->addAction('getProjectRepositoryList', array($this->groupId)); $this->addView('forkRepositories'); break; case 'do_fork_repositories': try { if ($this->request->get('choose_destination') == 'personal') { $this->_doDispatchForkRepositories($this->request, $user); } else { $this->_doDispatchForkCrossProject($this->request, $user); } } catch (MalformedPathException $e) { $this->addError($this->getText('fork_malformed_path')); } $this->addAction('getProjectRepositoryList', array($this->groupId)); $this->addView('forkRepositories'); break; case "view_last_git_pushes": $vGroupId = new Valid_GroupId(); $vGroupId->required(); if ($this->request->valid($vGroupId)) { $groupId = $this->request->get('group_id'); } $vWeeksNumber = new Valid_UInt('weeks_number'); if ($this->request->valid($vWeeksNumber)) { $weeksNumber = $this->request->get('weeks_number'); } if (empty($weeksNumber) || $weeksNumber > Git_LastPushesGraph::MAX_WEEKSNUMBER) { $weeksNumber = 12; } $imageRenderer = new Git_LastPushesGraph($groupId, $weeksNumber); $imageRenderer->display(); break; #LIST #LIST default: $user_id = null; $valid = new Valid_UInt('user'); $valid->required(); if ($this->request->valid($valid)) { $user_id = $this->request->get('user'); $this->addData(array('user' => $user_id)); } $this->addAction('getProjectRepositoryList', array($this->groupId, $user_id)); $this->addView('index'); break; } }
function validate($value) { $this->addRule(new Rule_NoCr()); return parent::validate($value); }
if ($request->valid($vMonitor) && $request->valid($vThreadId)) { if (user_isloggedin()) { if (!user_monitor_forum($forum_id, user_getid())) { if (!forum_thread_add_monitor($forum_id, $request->get('thread_id'), user_getid())) { $feedback .= $Language->getText('forum_forum_utils', 'insert_err'); } } } } // Note: there is a 'msg_id' send but not used here. $vFollowUp = new Valid_UInt('is_followup_to'); $vFollowUp->required(); $vSubject = new Valid_String('subject'); $vSubject->required(); $vSubject->setErrorMessage($GLOBALS['Language']->getText('forum_forum_utils', 'include_body_and_subject')); $vBody = new Valid_Text('body'); $vBody->required(); $vBody->setErrorMessage($GLOBALS['Language']->getText('forum_forum_utils', 'include_body_and_subject')); if ($request->valid($vThreadId) && $request->valid($vFollowUp) && $request->valid($vSubject) && $request->valid($vBody)) { post_message($request->get('thread_id'), $request->get('is_followup_to'), $request->get('subject'), $request->get('body'), $forum_id); } } /* set up some defaults if they aren't provided */ // Offset if ($request->valid(new Valid_UInt('offset'))) { $offset = $request->get('offset'); } else { $offset = 0; }
/** * 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')); } }
* * You should have received a copy of the GNU General Public License * along with Codendi. If not, see <http://www.gnu.org/licenses/>. */ require_once 'pre.php'; require_once 'common/include/HTTPRequest.class.php'; require_once dirname(__FILE__) . '/../include/Docman_Error_PermissionDenied.class.php'; $request = HTTPRequest::instance(); $func = $request->getValidated('func', new Valid_WhiteList('func', array('docman_access_request'))); if ($request->isPost() && $request->exist('Submit') && $request->existAndNonEmpty('func') && $func == 'docman_access_request') { $defaultMsg = $GLOBALS['Language']->getText('project_admin_index', 'member_request_delegation_msg_to_requester'); $pm = ProjectManager::instance(); $dar = $pm->getMessageToRequesterForAccessProject($request->get('groupId')); if ($dar && !$dar->isError() && $dar->rowCount() == 1) { $row = $dar->current(); if ($row['msg_to_requester'] != "member_request_delegation_msg_to_requester") { $defaultMsg = $row['msg_to_requester']; } } $sendMail = new Docman_Error_PermissionDenied(); $vMessage = new Valid_Text('msg_docman_access'); $vMessage->required(); if ($request->valid($vMessage) && trim($request->get('msg_docman_access')) != $defaultMsg) { $messageToAdmin = $request->get('msg_docman_access'); } else { exit_error($Language->getText('plugin_docman', 'error'), $Language->getText('plugin_docman', 'invalid_msg')); } $sendMail->processMail($messageToAdmin); exit; } $HTML->header(array('title' => $Language->getText('sendmessage', 'title', array($to_msg))));