$feedback .= " " . $Language->getText('file_admin_manageprocessors', 'proc_fill', $Language->getText('file_file_utils', 'proc_rank')); } else { if ($procname == "") { $feedback .= " " . $Language->getText('file_admin_manageprocessors', 'proc_fill', $Language->getText('file_file_utils', 'proc_name')); } else { file_utils_add_proc($procname, $procrank); } } } else { $feedback .= $Language->getText('file_file_utils', 'add_proc_fail'); } } $vProcId = new Valid_UInt('proc_id'); $vProcId->required(); $vUpdate = new Valid_String('update'); $vProcessName = new Valid_String('processname'); $vProcessName->required(); $vProcessRank = new Valid_UInt('processrank'); $vProcessRank->required(); if ($request->isPost() && $request->existAndNonEmpty('update')) { # update a processor if ($request->valid($vProcessName) && $request->valid($vProcessRank) && $request->valid($vProcId) && $request->valid($vUpdate)) { $proc_id = $request->get('proc_id'); $processname = $request->get('processname'); $processrank = $request->get('processrank'); if ($processrank == "") { $feedback .= " " . $Language->getText('file_admin_manageprocessors', 'proc_fill', $Language->getText('file_file_utils', 'proc_rank')); } else { if ($processname == "") { $feedback .= " " . $Language->getText('file_admin_manageprocessors', 'proc_fill', $Language->getText('file_file_utils', 'proc_name')); } else {
function validate($value) { $this->addRule(new Rule_Widget_Owner()); return parent::validate($value); }
} else { if (user_ismember($GLOBALS['sys_news_group'], 'A')) { /* News uber-user admin pages Show all waiting news items except those already rejected. Admin members of project #$sys_news_group (news project) can edit/change/approve news items */ if ($request->get('post_changes') && $request->get('approve')) { $validStatus = new Valid_WhiteList('status', array(0, 1, 2)); if ($request->valid($validStatus)) { $status = $request->get('status'); } else { $status = 0; } $validSummary = new Valid_String('summary'); $validSummary->setErrorMessage('Summary is required'); $validSummary->required(); $validDetails = new Valid_Text('details'); if ($request->valid($validSummary) && $request->valid($validDetails)) { if ($status == 1) { /* Update the db so the item shows on the home page */ $sql = "UPDATE news_bytes SET is_approved='1', date='" . time() . "', " . "summary='" . db_es(htmlspecialchars($request->get('summary'))) . "', details='" . db_es(htmlspecialchars($request->get('details'))) . "' WHERE id=" . db_ei($id); $result = db_query($sql); if (!$result || db_affected_rows($result) < 1) { $GLOBALS['Response']->addFeedback('error', $Language->getText('news_admin_index', 'update_err')); } else { $GLOBALS['Response']->addFeedback('info', $Language->getText('news_admin_index', 'newsbyte_updated')); }
private function linkLDAPGroup($ldapUserGroupManager) { $vBindWithGroup = new Valid_String('bind_with_group'); $vBindWithGroup->required(); $this->bindOption = $this->getBindOption(); $this->synchro = $this->getSynchro(); if ($this->request->valid($vBindWithGroup)) { if ($this->request->existAndNonEmpty('confirm')) { // // Perform ProjectUGroup <-> LDAP Group synchro // $ldapUserGroupManager->bindWithLdap($this->bindOption, $this->synchro); $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('project_ugroup_binding', 'link_ldap_group', array($this->request->get('bind_with_group')))); $this->redirect(); } elseif ($this->request->exist('cancel')) { // Display the screen below! continue; } else { if ($ldapUserGroupManager->getGroupDn()) { $view = new Project_Admin_UGroup_View_UGroupAction($this->ugroup, $this->ugroup_binding, $ldapUserGroupManager, $this->request, $this->bindOption, $this->synchro); $this->render($view); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('project_ugroup_binding', 'ldap_group_error', array($this->request->get('bind_with_group')))); $this->edit_directory_group($this->bindOption, $this->synchro); } } } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('project_ugroup_binding', 'ldap_group_empty')); $this->edit_directory_group(); } }
$vRevId2 = new Valid_UInt('_rev_id'); $vRevId2->required(); if ($request->valid($vRevId2)) { $_rev_id = $request->get('_rev_id'); } else { $_rev_id = ''; } } $vCommiter = new Valid_String('_commiter'); $vCommiter->required(); if ($request->valid($vCommiter)) { $_commiter = $request->get('_commiter'); } else { $_commiter = ''; } $vSrch = new Valid_String('_srch'); $vSrch->required(); if ($request->valid($vSrch)) { $_srch = $request->get('_srch'); } else { $_srch = ''; } $vPv = new Valid_Pv(); $vPv->required(); if ($request->valid($vPv)) { $pv = $request->get('pv'); } else { $pv = 0; } // No treatment $request->valid(new Valid_String('SUBMIT'));
<?php // // SourceForge: Breaking Down the Barriers to Open Source Development // Copyright 1999-2000 (c) The SourceForge Crew // http://sourceforge.net // // require_once 'pre.php'; require_once 'viewvc_utils.php'; require_once 'www/svn/svn_utils.php'; if (user_isloggedin()) { $vRoot = new Valid_String('root'); $vRoot->required(); if (!$request->valid($vRoot)) { exit_no_group(); } $root = $request->get('root'); $group_id = group_getid_by_name($root); if ($group_id === false) { exit_no_group(); } $vRootType = new Valid_WhiteList('roottype', array('svn')); $vRootType->setErrorMessage($Language->getText('svn_viewvc', 'bad_roottype')); $vRootType->required(); if ($request->valid($vRootType)) { if (!svn_utils_check_access(user_getname(), $root, viewvc_utils_getfile("/svn/viewvc.php"))) { exit_error($Language->getText('svn_viewvc', 'access_denied'), $Language->getText('svn_viewvc', 'acc_den_comment', session_make_url("/project/memberlist.php?group_id={$group_id}"))); } viewvc_utils_track_browsing($group_id, 'svn'); $display_header_footer = viewvc_utils_display_header();
require_once 'pre.php'; require_once 'bookmarks.php'; require_once 'my_utils.php'; $request = HTTPRequest::instance(); $vId = new Valid_UInt('bookmark_id'); $vId->setErrorMessage('bookmark_id is required'); $vId->required(); if (!$request->valid($vId)) { $GLOBALS['Response']->redirect('/my'); } else { $bookmark_id = (int) $request->get('bookmark_id'); } $vUrl = new Valid_String('bookmark_url'); $vUrl->setErrorMessage('Url is required'); $vUrl->required(); $vTitle = new Valid_String('bookmark_title'); $vTitle->setErrorMessage('Title is required'); $vTitle->required(); $bookmark_url_id = '/my/bookmark_edit.php?bookmark_id=' . $bookmark_id; $csrf_token = new CSRFSynchronizerToken($bookmark_url_id); if ($request->isPost() && $request->valid($vUrl) && $request->valid($vTitle)) { $csrf_token->check(); $bookmark_url = $request->get('bookmark_url'); $bookmark_title = $request->get('bookmark_title'); my_check_bookmark_URL($bookmark_url, $bookmark_url_id); bookmark_edit($bookmark_id, $bookmark_url, $bookmark_title); $GLOBALS['Response']->redirect('/my'); } $purifier = Codendi_HTMLPurifier::instance(); $HTML->header(array("title" => $Language->getText('bookmark_edit', 'title'))); print "<H3>" . $Language->getText('bookmark_edit', 'title') . "</H3>\n";
* * Codendi is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * 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/event/EventManager.class.php'); require_once 'common/project/ProjectManager.class.php'; // // Input treatment // $vName = new Valid_String('name'); $vName->required(); if ($request->valid($vName)) { $name = $request->get('name'); } else { // Finish script, no output exit; } // Number of user to display $limit = 15; $list = array(); $isMember = false; $isAdmin = false; $user = UserManager::instance()->getCurrentUser(); if ($user->isRestricted()) { $isMember = true;
public function process(Tracker_IDisplayTrackerLayout $layout, $request, $current_user) { //TODO: log the admin actions (add a formElement, ...) ? $hp = Codendi_HTMLPurifier::instance(); $func = (string) $request->get('func'); switch ($func) { case 'new-artifact': if ($this->userCanSubmitArtifact($current_user)) { $this->displaySubmit($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'get-create-in-place': if ($this->userCanSubmitArtifact($current_user)) { $artifact_link_id = $request->get('artifact-link-id'); $render_with_javascript = $request->get('fetch-js') == 'false' ? false : true; $renderer = new Tracker_Artifact_Renderer_CreateInPlaceRenderer($this, TemplateRendererFactory::build()->getRenderer(dirname(TRACKER_BASE_DIR) . '/templates')); $renderer->display($artifact_link_id, $render_with_javascript); } else { $GLOBALS['Response']->send400JSONErrors(); } break; case 'new-artifact-link': $link = $request->get('id'); if ($this->userCanSubmitArtifact($current_user)) { $this->displaySubmit($layout, $request, $current_user, $link); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); } break; case 'delete': if ($this->userCanDeleteTracker($current_user)) { if ($this->getTrackerFactory()->markAsDeleted($this->id)) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin_index', 'delete_success', $hp->purify($this->name, CODENDI_PURIFIER_CONVERT_HTML))); $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin_index', 'tracker_deleted', $GLOBALS['sys_email_admin']), CODENDI_PURIFIER_FULL); $reference_manager = ReferenceManager::instance(); $ref = $reference_manager->loadReferenceFromKeywordAndNumArgs(strtolower($this->getItemName()), $this->getGroupId(), 1); if ($ref) { if ($reference_manager->deleteReference($ref)) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('project_reference', 't_r_deleted')); } } EventManager::instance()->processEvent(TRACKER_EVENT_TRACKER_DELETE, array('tracker' => $this)); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_index', 'deletion_failed', $hp->purify($this->name, CODENDI_PURIFIER_CONVERT_HTML))); } } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); } $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?group_id=' . $this->group_id); break; case 'admin': if ($this->userIsAdmin($current_user)) { $this->displayAdmin($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-editoptions': if ($this->userIsAdmin($current_user)) { if ($request->get('update')) { $this->editOptions($request); } $this->displayAdminOptions($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-perms': if ($this->userIsAdmin($current_user)) { $this->displayAdminPerms($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-perms-tracker': if ($this->userIsAdmin($current_user)) { $this->getPermissionController()->process($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-perms-fields': if ($this->userIsAdmin($current_user)) { if ($request->exist('update')) { if ($request->exist('permissions') && is_array($request->get('permissions'))) { plugin_tracker_permission_process_update_fields_permissions($this->getGroupId(), $this->getId(), Tracker_FormElementFactory::instance()->getUsedFields($this), $request->get('permissions')); $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('project_admin_userperms', 'perm_upd')); } } $this->displayAdminPermsFields($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-formElements': if ($this->userIsAdmin($current_user)) { if (is_array($request->get('add-formElement'))) { list($formElement_id, ) = each($request->get('add-formElement')); if (Tracker_FormElementFactory::instance()->addFormElement($formElement_id)) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin_index', 'field_added')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . (int) $this->getId() . '&func=admin-formElements'); } } else { if (is_array($request->get('create-formElement'))) { list($type, ) = each($request->get('create-formElement')); if ($request->get('docreate-formElement') && is_array($request->get('formElement_data'))) { try { $this->createFormElement($type, $request->get('formElement_data'), $current_user); } catch (Exception $e) { $GLOBALS['Response']->addFeedback('error', $e->getMessage()); } $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?' . http_build_query(array('tracker' => $this->getId(), 'func' => $func))); } else { Tracker_FormElementFactory::instance()->displayAdminCreateFormElement($layout, $request, $current_user, $type, $this); exit; } } } $this->displayAdminFormElements($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-formElement-update': case 'admin-formElement-remove': case 'admin-formElement-delete': if ($this->userIsAdmin($current_user)) { if ($formElement = Tracker_FormElementFactory::instance()->getFormElementById((int) $request->get('formElement'))) { $formElement->process($layout, $request, $current_user); } else { $this->displayAdminFormElements($layout, $request, $current_user); } } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-semantic': if ($this->userIsAdmin($current_user)) { $this->getTrackerSemanticManager()->process($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-notifications': if ($this->userIsAdmin($current_user)) { $this->getDateReminderManager()->processReminder($layout, $request, $current_user); $this->getNotificationsManager()->process($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'notifications': // you just need to be registered to have access to this part if ($current_user->isLoggedIn()) { $this->getDateReminderManager()->processReminder($layout, $request, $current_user); $this->getNotificationsManager()->process($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'display_reminder_form': print $this->getDateReminderManager()->getDateReminderRenderer()->getNewDateReminderForm(); break; case 'admin-canned': // TODO : project members can access this part ? if ($this->userIsAdmin($current_user)) { $this->getCannedResponseManager()->process($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case Workflow::FUNC_ADMIN_RULES: case Workflow::FUNC_ADMIN_CROSS_TRACKER_TRIGGERS: case Workflow::FUNC_ADMIN_TRANSITIONS: case Workflow::FUNC_ADMIN_GET_TRIGGERS_RULES_BUILDER_DATA: case Workflow::FUNC_ADMIN_ADD_TRIGGER: case Workflow::FUNC_ADMIN_DELETE_TRIGGER: if ($this->userIsAdmin($current_user)) { $this->getWorkflowManager()->process($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-csvimport': $session = new Codendi_Session(); if ($this->userIsAdmin($current_user)) { if ($request->exist('action') && $request->get('action') == 'import_preview' && array_key_exists('csv_filename', $_FILES)) { // display preview before importing artifacts $this->displayImportPreview($layout, $request, $current_user, $session); } elseif ($request->exist('action') && $request->get('action') == 'import') { $csv_header = $session->get('csv_header'); $csv_body = $session->get('csv_body'); if ($this->importFromCSV($layout, $request, $current_user, $csv_header, $csv_body)) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin_import', 'import_succeed')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin_import', 'import_failed')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } } $this->displayAdminCSVImport($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-export': if ($this->userIsAdmin($current_user)) { // TODO: change directory $xml_element = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><tracker />'); $this->sendXML($this->exportToXML($xml_element)); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-dependencies': if ($this->userIsAdmin($current_user)) { $this->getGlobalRulesManager()->process($layout, $request, $current_user); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'submit-artifact': $action = new Tracker_Action_CreateArtifact($this, $this->getTrackerArtifactFactory(), $this->getTrackerFactory(), $this->getFormElementFactory()); $action->process($layout, $request, $current_user); break; case 'submit-copy-artifact': $logger = new Tracker_XML_Importer_CopyArtifactInformationsAggregator(new BackendLogger()); $xml_importer = $this->getArtifactXMLImporterForArtifactCopy($logger); $artifact_factory = $this->getTrackerArtifactFactory(); $file_xml_updater = $this->getFileXMLUpdater(); $export_children_collector = $this->getChildrenCollector($request); $file_path_xml_exporter = new Tracker_XML_Exporter_LocalAbsoluteFilePathXMLExporter(); $artifact_xml_exporter = $this->getArtifactXMLExporter($export_children_collector, $file_path_xml_exporter, $current_user); $action = new Tracker_Action_CopyArtifact($this, $artifact_factory, $artifact_xml_exporter, $xml_importer, $this->getChangesetXMLUpdater(), $file_xml_updater, new Tracker_XML_Exporter_ChildrenXMLExporter($artifact_xml_exporter, $file_xml_updater, $artifact_factory, $export_children_collector), new Tracker_XML_Importer_ChildrenXMLImporter($xml_importer, $this->getTrackerFactory(), $this->getTrackerArtifactFactory(), new Tracker_XML_ChildrenCollector()), new Tracker_XML_Importer_ArtifactImportedMapping(), $logger); $action->process($layout, $request, $current_user); break; case 'submit-artifact-in-place': $action = new Tracker_Action_CreateArtifactFromModal($request, $this, $this->getTrackerArtifactFactory()); $action->process($current_user); break; case 'admin-hierarchy': if ($this->userIsAdmin($current_user)) { $this->displayAdminItemHeader($layout, 'hierarchy'); $this->getHierarchyController($request)->edit(); $this->displayFooter($layout); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-hierarchy-update': if ($this->userIsAdmin($current_user)) { $this->getHierarchyController($request)->update(); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-clean': if ($this->userIsAdmin($current_user)) { $this->displayAdminClean($layout); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-delete-artifact-confirm': if ($this->userIsAdmin($current_user)) { $token = new CSRFSynchronizerToken(TRACKER_BASE_URL . '/?tracker=' . (int) $this->id . '&func=admin-delete-artifact-confirm'); $token->check(); $artifact_id = $request->getValidated('id', 'uint', 0); $artifact = $this->getTrackerArtifactFactory()->getArtifactById($artifact_id); if ($artifact) { $this->displayAdminConfirmDelete($layout, $artifact); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'clean_error_noart', array($request->get('id')))); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId() . '&func=admin-clean'); } } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'admin-delete-artifact': if ($this->userIsAdmin($current_user)) { $token = new CSRFSynchronizerToken(TRACKER_BASE_URL . '/?tracker=' . (int) $this->id . '&func=admin-delete-artifact'); $token->check(); if ($request->exist('confirm')) { $artifact = $this->getTrackerArtifactFactory()->getArtifactById($request->get('id')); if ($artifact && $artifact->getTrackerId() == $this->getId()) { $artifact->delete($current_user); $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin', 'clean_info_deleted', array($request->get('id')))); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'clean_error_noart', array($request->get('id')))); } } else { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin', 'clean_cancel_deleted')); } $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId() . '&func=admin'); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } break; case 'create_new_public_report': if (!$this->userIsAdmin($current_user)) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } $name = $request->get('new_report_name'); $validator = new Valid_String('new_report_name'); $validator->required(); if (!$request->valid($validator)) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker', 'create_new_report_invalid')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); } $hp = Codendi_HTMLPurifier::instance(); $hp->purify($name); $report = new Tracker_Report(0, $name, 'Public rapport', 0, 0, null, 0, $this->getId(), 1, null, 0); $report->criterias = array(); $this->getReportFactory()->saveObject($this->id, $report); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->getId()); break; default: if ($this->userCanView($current_user)) { $this->displayAReport($layout, $request, $current_user); } break; } return false; }
case User::STATUS_VALIDATED: case User::STATUS_VALIDATED_RESTRICTED: $user->setUserName($request->get('form_loginname')); break; default: $em->processEvent(Event::USER_RENAME, array('user_id' => $user->getId(), 'new_name' => $request->get('form_loginname'))); $GLOBALS['Response']->addFeedback('info', $Language->getText('admin_usergroup', 'rename_user_msg', array($user->getUserName(), $request->get('form_loginname')))); $GLOBALS['Response']->addFeedback('warning', $Language->getText('admin_usergroup', 'rename_user_warn')); } } } else { $GLOBALS['Response']->addFeedback('warning', $Language->getText('admin_usergroup', 'rename_user_already_queued'), CODENDI_PURIFIER_DISABLED); } } if ($GLOBALS['sys_auth_type'] == 'ldap') { $vLdapId = new Valid_String('ldap_id'); $vLdapId->required(); if ($request->existAndNonEmpty('ldap_id') && $request->valid($vLdapId)) { $user->setLdapId($request->get('ldap_id')); } else { $user->setLdapId(""); } } // Run the update if ($um->updateDb($user)) { $GLOBALS['Response']->addFeedback('info', $Language->getText('admin_usergroup', 'success_upd_u')); if ($accountActivationEvent) { $em->processEvent($accountActivationEvent, array('user_id' => $user->getId())); } } if ($user->getUnixStatus() != 'N' && !$user->getUnixUid()) {
/** * Create a new content for this widget * @param Codendi_Request $request * @return int the id of the new content */ public function create($request) { $content_id = false; $vItem_id = new Valid_String('item_id'); $vItem_id->setErrorMessage("Unable to add the widget. Please give an item id."); $vItem_id->required(); if ($request->validInArray('plugin_docman_widget_embedded', $vItem_id)) { $plugin_docman_widget_embedded = $request->get('plugin_docman_widget_embedded'); $vTitle = new Valid_String('title'); $vTitle->required(); if (!$request->validInArray('plugin_docman_widget_embedded', $vTitle)) { if ($item = $this->getItem($plugin_docman_widget_embedded['item_id'])) { $plugin_docman_widget_embedded['title'] = $item->getTitle(); } } $sql = 'INSERT INTO plugin_docman_widget_embedded (owner_id, owner_type, title, item_id) VALUES (' . $this->owner_id . ", '" . $this->owner_type . "', '" . db_escape_string($plugin_docman_widget_embedded['title']) . "', '" . db_escape_string($plugin_docman_widget_embedded['item_id']) . "')"; $res = db_query($sql); $content_id = db_insertid($res); } return $content_id; }
function validate($value) { $this->addRule(new Rule_Email($this->separator)); return parent::validate($value); }
if ($validator->isValidForCreation($release, $group_id)) { //frs valid $header = array('valid' => true); } else { //frs non valid $errors = $validator->getErrors(); $feedback = new Feedback(); $feedback->log('error', $errors[0]); $header = array('valid' => false, 'msg' => $feedback->fetch()); } header(json_header($header)); } } else { if ($action == 'validator_frs_update') { $vName = new Valid_String('name'); $vDate = new Valid_String('date'); $vDate->required(); $vPackageId = new Valid_UInt('package_id'); $vPackageId->required(); $vReleaseId = new Valid_UInt('release_id'); $vReleaseId->required(); $vGroupId = new Valid_GroupId(); $vGroupId->required(); if ($request->valid($vName) && $request->valid($vDate) && $request->valid($vGroupId) && $request->valid($vPackageId) && $request->valid($vReleaseId)) { $name = $request->get('name'); $package_id = $request->get('package_id'); $date = $request->get('date'); $group_id = $request->get('group_id'); $release_id = $request->get('release_id'); $validator = new frsValidator(); $release = array('name' => $name, 'release_id' => $release_id, 'package_id' => $package_id, 'date' => $date);
function create(&$request) { $content_id = false; $vUrl = new Valid_String('url'); $vUrl->setErrorMessage("Can't add empty image url"); $vUrl->required(); if ($request->validInArray('image', $vUrl)) { $image = $request->get('image'); $vTitle = new Valid_String('title'); $vTitle->required(); if (!$request->validInArray('image', $vTitle)) { $image['title'] = 'Image'; } $sql = 'INSERT INTO widget_image (owner_id, owner_type, title, url) VALUES (' . $this->owner_id . ", '" . $this->owner_type . "', '" . db_escape_string($image['title']) . "', '" . db_escape_string($image['url']) . "')"; $res = db_query($sql); $content_id = db_insertid($res); } return $content_id; }
protected function _showProjectAdmins() { $html = ''; $hp = Codendi_HTMLPurifier::instance(); $request = HTTPRequest::instance(); $vFunc = new Valid_WhiteList('plugin_admindelegation_func', array('show_admins')); $vFunc->required(); if ($request->valid($vFunc)) { $func = $request->get('plugin_admindelegation_func'); } else { $func = ''; } $vGroup = new Valid_String('plugin_admindelegation_group'); $vGroup->required(); if ($request->valid($vGroup)) { $pm = ProjectManager::instance(); $project = $pm->getProjectFromAutocompleter($request->get('plugin_admindelegation_group')); if ($project && $project->isActive()) { $groupValue = $project->getPublicName() . ' (' . $project->getUnixName() . ')'; } else { $groupValue = ''; } } else { $project = false; $groupValue = ''; } $html .= '<form method="post" action="?">'; $html .= '<label>' . $GLOBALS['Language']->getText('plugin_admindelegation', 'widget_admins_label') . '</label>'; $html .= '<input type="hidden" name="plugin_admindelegation_func" value="show_admins" />'; $html .= '<input type="text" name="plugin_admindelegation_group" value="' . $groupValue . '" size ="40" id="plugin_admindelegation_group" />'; $html .= ' '; $html .= '<input type="submit" value="' . $GLOBALS['Language']->getText('plugin_admindelegation', 'widget_btn_search') . '"/>'; $html .= '</form>'; $js = "new ProjectAutoCompleter('plugin_admindelegation_group', '" . util_get_dir_image_theme() . "', false);"; $GLOBALS['HTML']->includeFooterJavascriptSnippet($js); if ($func == 'show_admins' && $project && $project->isActive()) { $allAdmins = array(); $users = $this->getProjectAdmins($project->getId()); if (count($users) > 0) { $uh = UserHelper::instance(); $html .= '<table width="100%">'; $html .= '<theader>'; $html .= '<tr>'; $html .= '<th>' . $GLOBALS['Language']->getText('plugin_admindelegation', 'widget_admins_name') . '</th>'; $html .= '<th>' . $GLOBALS['Language']->getText('plugin_admindelegation', 'widget_admins_email') . '</th>'; $html .= '</tr>'; $html .= '</theader>'; $html .= '<tbody>'; $i = 1; foreach ($users as $u) { $mailto = $u->getRealname() . ' <' . $u->getEmail() . '>'; $allAdmins[] = $mailto; $html .= '<tr class="' . util_get_alt_row_color($i++) . '">'; $html .= '<td>' . $hp->purify($uh->getDisplayNameFromUser($u)) . '</td>'; $html .= '<td><a href="mailto:' . $mailto . '">' . $u->getEmail() . '</a></td>'; $html .= '</tr>'; } $html .= '</tbody>'; $html .= '</table>'; // Mail to all admins $html .= '<div style="text-align:center" class="' . util_get_alt_row_color($i++) . '">'; $html .= '<a href="mailto:' . implode(',', $allAdmins) . '?Subject=' . $GLOBALS['Language']->getText('plugin_admindelegation', 'widget_admins_mass_mail_subject', array($GLOBALS['sys_name'], $project->getPublicName())) . '">' . $GLOBALS['Language']->getText('plugin_admindelegation', 'widget_admins_mass_mail') . '</a>'; $html .= '</div>'; } } return $html; }
$groupId = $request->get('group_id'); // Must be a project admin session_require(array('group' => $groupId, 'admin_flags' => 'A')); // Ensure LDAP plugin is active $pluginManager = PluginManager::instance(); $ldapPlugin = $pluginManager->getPluginByName('ldap'); if (!$ldapPlugin || !$pluginManager->isPluginAvailable($ldapPlugin)) { $GLOBALS['Response']->redirect('/project/admin/index.php?group_id=' . $groupId); } // Check if user have choosen the preserve members option. $bindOption = 'bind'; if ($request->exist('preserve_members') && $request->get('preserve_members') == 'on') { $bindOption = 'preserve_members'; } // Get LDAP group name $vLdapGroup = new Valid_String('ldap_group'); $vLdapGroup->required(); if ($request->isPost() && $request->valid($vLdapGroup)) { $ldapGroupManager = new LDAP_ProjectGroupManager($ldapPlugin->getLdap()); $ldapGroupManager->setId($groupId); $ldapGroupManager->setGroupName($request->get('ldap_group')); if ($request->existAndNonEmpty('delete')) { // // Remove link between Project Members and LDAP Group // $ldapGroupManager->unbindFromBindLdap(); $GLOBALS['Response']->redirect('/project/admin/index.php?group_id=' . $groupId); } elseif ($request->existAndNonEmpty('update')) { // // Perform Project Members <-> LDAP Group synchro //
/** * 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); }
if ($row['group_id'] == 100) { exit_error($Language->getText('global', 'error'), "Cannot modify this ugroup with LDAP plugin"); } } else { exit_error($Language->getText('global', 'error'), $Language->getText('project_admin_editugroup', 'ug_not_found', array($ugroupId, db_error()))); } $group_id = $row['group_id']; $ldapUserGroupManager = new LDAP_UserGroupManager($ldapPlugin->getLdap()); $ldapUserGroupManager->setId($ugroupId); $hp = Codendi_HTMLPurifier::instance(); $btn_update = $Language->getText('plugin_ldap', 'ugroup_edit_btn_update'); $vSubmit = new Valid_WhiteList('submit', array($btn_update)); $vSubmit->required(); if ($request->isPost() && $request->valid($vSubmit)) { if ($request->get('submit') == $btn_update) { $vUserAdd = new Valid_String('user_add'); $vUserAdd->required(); if ($request->valid($vUserAdd)) { $ldapUserGroupManager->addListOfUsersToGroup($request->get('user_add')); } } } // // Display // $ugroupRow = ugroup_db_get_ugroup($ugroupId); $ugroupName = util_translate_name_ugroup($row['name']); $clean_ugroupName = $hp->purify($ugroupName); project_admin_header(array('title' => $Language->getText('project_admin_editugroup', 'edit_ug'), 'group' => $group_id)); echo '<h2>' . $Language->getText('project_admin_editugroup', 'ug_admin', $clean_ugroupName) . '</h2>'; echo '<p>' . $GLOBALS['Language']->getText('plugin_ldap', 'ugroup_edit_group_add_users_help') . '</p>';
<?php // // SourceForge: Breaking Down the Barriers to Open Source Development // Copyright 1999-2000 (c) The SourceForge Crew // http://sourceforge.net // require_once 'pre.php'; require_once 'bookmarks.php'; $HTML->header(array("title" => $Language->getText('bookmark_add', 'title'))); print "<H3>" . $Language->getText('bookmark_add', 'title') . "</H3>"; $request =& HTTPRequest::instance(); $vUrl = new Valid_String('bookmark_url'); $vUrl->required(); $vTitle = new Valid_String('bookmark_title'); $vTitle->required(); if ($request->valid($vUrl) && $request->valid($vTitle)) { $purifier =& Codendi_HTMLPurifier::instance(); $bookmark_url = $request->get('bookmark_url'); $bookmark_title = $request->get('bookmark_title'); print $Language->getText('bookmark_add', 'message', array($purifier->purify($bookmark_url), $purifier->purify($bookmark_title))) . "<p>\n"; $bookmark_id = bookmark_add($bookmark_url, $bookmark_title); print '<A HREF="' . $purifier->purify($bookmark_url) . '">' . $Language->getText('bookmark_add', 'visit') . "</A> - "; print '<A HREF="/my/bookmark_edit.php?bookmark_id=' . $bookmark_id . '">' . $Language->getText('bookmark_add', 'edit') . "</A>"; print '<p><A HREF="/my/">[' . $Language->getText('global', 'back_home') . "]</A>"; } else { ?> <FORM METHOD=POST> <?php echo $Language->getText('bookmark_add', 'bkm_url'); ?>
public function _doDispatchForkRepositories($request, $user) { $this->addAction('getProjectRepositoryList', array($this->groupId)); $this->checkSynchronizerToken('/plugins/git/?group_id=' . (int) $this->groupId . '&action=fork_repositories'); $repos_ids = array(); $valid = new Valid_String('path'); $valid->required(); $path = ''; if ($request->valid($valid)) { $path = trim($request->get('path')); } $path = userRepoPath($user->getUserName(), $path); $forkPermissions = $this->getForkPermissionsFromRequest($request); $valid = new Valid_String('repos'); $valid->required(); $repos_ids = explode(',', $request->get('repos')); $to_project = $this->projectManager->getProject($this->groupId); $repos = $this->getRepositoriesFromIds($repos_ids); $scope = GitRepository::REPO_SCOPE_INDIVIDUAL; $redirect_url = '/plugins/git/?group_id=' . (int) $this->groupId . '&user='******'fork', array($repos, $to_project, $path, $scope, $user, $GLOBALS['HTML'], $redirect_url, $forkPermissions)); }
function register_valid($confirm_hash) { global $Language; $request =& HTTPRequest::instance(); $vLoginName = new Valid_UserNameFormat('form_loginname'); $vLoginName->required(); if (!$request->valid($vLoginName)) { return 0; } $vRealName = new Valid_RealNameFormat('form_realname'); $vRealName->required(); if (!$request->valid($vRealName)) { $GLOBALS['Response']->addFeedback('error', $Language->getText('account_register', 'err_realname')); return 0; } if (!$request->existAndNonEmpty('form_pw')) { $GLOBALS['Response']->addFeedback('error', $Language->getText('account_register', 'err_nopasswd')); return 0; } $tz = $request->get('timezone'); if (!is_valid_timezone($tz)) { $GLOBALS['Response']->addFeedback('error', $Language->getText('account_register', 'err_notz')); return 0; } if (!$request->existAndNonEmpty('form_register_purpose') && ($GLOBALS['sys_user_approval'] && $request->get('page') != "admin_creation")) { $GLOBALS['Response']->addFeedback('error', $Language->getText('account_register', 'err_nopurpose')); return 0; } if (!validate_email($request->get('form_email'))) { $GLOBALS['Response']->addFeedback('error', $Language->getText('account_register', 'err_email')); return 0; } if ($request->get('page') != "admin_creation" && $request->get('form_pw') != $request->get('form_pw2')) { $GLOBALS['Response']->addFeedback('error', $Language->getText('account_register', 'err_passwd')); return 0; } if (!account_pwvalid($request->get('form_pw'), $errors)) { foreach ($errors as $e) { $GLOBALS['Response']->addFeedback('error', $e); } return 0; } $expiry_date = 0; if ($request->exist('form_expiry') && $request->get('form_expiry') != '' && !ereg("[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}", $request->get('form_expiry'))) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('account_register', 'data_not_parsed')); return 0; } $vDate = new Valid_String(); $vDate->required(); if ($request->exist('form_expiry') && $vDate->validate($request->get('form_expiry'))) { $date_list = split("-", $request->get('form_expiry'), 3); $unix_expiry_time = mktime(0, 0, 0, $date_list[1], $date_list[2], $date_list[0]); $expiry_date = $unix_expiry_time; } $status = 'P'; if ($request->get('page') == "admin_creation") { if ($request->get('form_restricted')) { $status = 'R'; } else { $status = 'A'; } } //use sys_lang as default language for each user at register $res = account_create($request->get('form_loginname'), $request->get('form_pw'), '', $request->get('form_realname'), $request->get('form_register_purpose'), $request->get('form_email'), $status, $confirm_hash, $request->get('form_mail_site'), $request->get('form_mail_va'), $tz, UserManager::instance()->getCurrentUser()->getLocale(), 'A', $expiry_date); return $res; }
function _dispatch($view, $item, $root, $get_show_view) { $item_factory =& $this->_getItemFactory(); $user =& $this->getUser(); $dpm = $this->_getPermissionsManager(); switch ($view) { case 'show': if ($item->isObsolete()) { if (!$this->userCanAdmin($item->getId())) { // redirect to details view $this->view = 'Details'; break; } } $this->view = $item->accept($get_show_view, $this->request->get('report')); break; case 'expandFolder': $this->action = 'expandFolder'; if ($this->request->get('view') == 'ulsubfolder') { $this->view = 'RawTree'; } else { $this->_viewParams['item'] =& $root; $this->view = 'Tree'; } break; case 'getRootFolder': $this->_viewParams['action_result'] = $root->getId(); $this->_setView('getRootFolder'); break; case 'collapseFolder': $this->action = 'collapseFolder'; $this->_viewParams['item'] =& $root; $this->view = 'Tree'; break; case 'admin_set_permissions': $this->action = $view; $this->view = 'Admin_Permissions'; break; case 'admin_change_view': $this->action = $view; $this->_viewParams['default_url_params'] = array('action' => 'admin_view', 'id' => $item->getParentId()); $this->view = 'RedirectAfterCrud'; break; case 'admin': case 'details': $this->view = ucfirst($view); break; case 'admin_view': $this->view = 'Admin_View'; break; case 'admin_permissions': $this->view = 'Admin_Permissions'; break; case 'admin_metadata': $this->view = 'Admin_Metadata'; $mdFactory = new Docman_MetadataFactory($this->_viewParams['group_id']); $mdIter =& $mdFactory->getMetadataForGroup(); $this->_viewParams['mdIter'] =& $mdIter; break; case 'admin_md_details': // Sanitize $_mdLabel = $this->request->get('md'); $md = null; $mdFactory = new Docman_MetadataFactory($this->_viewParams['group_id']); $valid = $this->validateMetadata($_mdLabel, $md); if (!$valid) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_invalid_md')); $this->view = 'RedirectAfterCrud'; $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); } else { $this->view = 'Admin_MetadataDetails'; $mdFactory->appendMetadataValueList($md, false); $this->_viewParams['md'] =& $md; } break; case 'admin_md_details_update': $_name = trim($this->request->get('name')); $_label = $this->request->get('label'); $mdFactory = $this->_getMetadataFactory($this->_viewParams['group_id']); if ($mdFactory->isValidLabel($_label)) { $this->_viewParams['default_url_params'] = array('action' => 'admin_md_details', 'md' => $_label); if ($mdFactory->isHardCodedMetadata($_label) || $this->validateUpdateMetadata($_name, $_label)) { $this->action = $view; } } else { $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); } $this->view = 'RedirectAfterCrud'; break; case 'admin_create_metadata': $_name = trim($this->request->get('name')); $valid = $this->validateNewMetadata($_name); if ($valid) { $this->action = $view; } $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); $this->view = 'RedirectAfterCrud'; break; case 'admin_delete_metadata': $valid = false; // md // Sanitize $_mdLabel = $this->request->get('md'); // Valid $logmsg = ''; $mdFactory = new Docman_MetadataFactory($this->_viewParams['group_id']); $md = null; $vld = $this->validateMetadata($_mdLabel, $md); if ($vld) { if (!$mdFactory->isHardCodedMetadata($md->getLabel())) { $valid = true; } else { $logmsg = $GLOBALS['Language']->getText('plugin_docman', 'error_cannot_delete_hc_md'); } } else { $logmsg = $GLOBALS['Language']->getText('plugin_docman', 'error_invalid_md'); } if (!$valid) { if ($logmsg != '') { $this->feedback->log('error', $logmsg); } $this->view = 'RedirectAfterCrud'; $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); } else { $this->action = $view; $this->_actionParams['md'] = $md; } break; case 'admin_create_love': $mdFactory = $this->_getMetadataFactory($this->_viewParams['group_id']); if ($mdFactory->isValidLabel($this->request->get('md'))) { $this->action = $view; $this->_viewParams['default_url_params'] = array('action' => 'admin_md_details', 'md' => $this->request->get('md')); } else { $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); } $this->view = 'RedirectAfterCrud'; break; case 'admin_delete_love': $mdFactory = $this->_getMetadataFactory($this->_viewParams['group_id']); if ($mdFactory->isValidLabel($this->request->get('md'))) { $this->action = $view; $this->_viewParams['default_url_params'] = array('action' => 'admin_md_details', 'md' => $this->request->get('md')); } else { $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); } $this->view = 'RedirectAfterCrud'; break; case 'admin_display_love': $valid = false; // Required params: // md (string [a-z_]+) // loveid (int) // Sanitize $_mdLabel = $this->request->get('md'); $_loveId = (int) $this->request->get('loveid'); // Valid $md = null; $love = null; $this->validateMetadata($_mdLabel, $md); if ($md !== null && $md->getLabel() !== 'status') { $valid = $this->validateLove($_loveId, $md, $love); } if (!$valid) { $this->view = 'RedirectAfterCrud'; $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); } else { $mdFactory = new Docman_MetadataFactory($this->groupId); $mdFactory->appendMetadataValueList($md, false); $this->view = 'Admin_MetadataDetailsUpdateLove'; $this->_viewParams['md'] = $md; $this->_viewParams['love'] = $love; } break; case 'admin_update_love': $valid = false; // Required params: // md (string [a-z_]+) // loveid (int) // // rank (beg, end, [0-9]+) // name // descr // Sanitize /// @todo sanitize md, rank, name, descr $_mdLabel = $this->request->get('md'); $_loveId = (int) $this->request->get('loveid'); $_rank = $this->request->get('rank'); $_name = $this->request->get('name'); $_descr = $this->request->get('descr'); // Valid $md = null; $love = null; $this->validateMetadata($_mdLabel, $md); if ($md !== null && $md->getLabel() !== 'status') { $valid = $this->validateLove($_loveId, $md, $love); } if (!$valid) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_md_or_love')); $this->view = 'RedirectAfterCrud'; $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); } else { // Set parameters $love->setRank($_rank); $love->setName($_name); $love->setDescription($_descr); // define action $this->action = $view; $this->_actionParams['md'] = $md; $this->_actionParams['love'] = $love; } break; case 'admin_import_metadata_check': $ok = false; if ($this->request->existAndNonEmpty('plugin_docman_metadata_import_group')) { $pm = ProjectManager::instance(); $srcGroup = $pm->getProjectFromAutocompleter($this->request->get('plugin_docman_metadata_import_group')); if ($srcGroup && !$srcGroup->isError()) { $this->_viewParams['sSrcGroupId'] = $srcGroup->getGroupId(); $this->view = 'Admin_MetadataImport'; $ok = true; } } if (!$ok) { $this->view = 'RedirectAfterCrud'; $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); } break; case 'admin_import_metadata': if ($this->request->existAndNonEmpty('confirm')) { if ($this->request->existAndNonEmpty('plugin_docman_metadata_import_group')) { $pm = ProjectManager::instance(); $srcGroup = $pm->getProjectFromAutocompleter($this->request->get('plugin_docman_metadata_import_group')); $srcGroupId = $srcGroup->getGroupId(); $this->_actionParams['sSrcGroupId'] = $srcGroupId; $this->_actionParams['sGroupId'] = $this->_viewParams['group_id']; $this->action = $view; } else { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'missing_param')); $this->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'operation_canceled')); } } else { $this->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'operation_canceled')); } $this->view = 'RedirectAfterCrud'; $this->_viewParams['default_url_params'] = array('action' => 'admin_metadata'); break; case 'admin_obsolete': $this->view = 'Admin_Obsolete'; break; case 'admin_lock_infos': $this->view = 'Admin_LockInfos'; break; case 'move': if (!$this->userCanWrite($item->getId()) || !$this->userCanWrite($item->getParentId())) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_move')); $this->view = 'Details'; } else { if ($this->request->exist('quick_move')) { $this->action = 'move'; $this->view = null; } else { $this->_viewParams['hierarchy'] =& $this->getItemHierarchy($root); $this->view = ucfirst($view); } } break; case 'newGlobalDocument': if ($dpm->oneFolderIsWritable($user)) { $this->_viewParams['hierarchy'] =& $this->getItemHierarchy($root); $this->view = 'New_FolderSelection'; } else { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_create')); $this->view = $item->accept($get_show_view, $this->request->get('report')); } break; case 'newDocument': case 'newFolder': if ($this->request->exist('cancel')) { $this->_set_redirectView(); } else { if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_create')); $this->view = 'Details'; } else { //$this->_viewParams['hierarchy'] =& $this->getItemHierarchy($root); $this->_viewParams['ordering'] = $this->request->get('ordering'); if ($this->request->get('item_type') == PLUGIN_DOCMAN_ITEM_TYPE_FOLDER) { $view = 'newFolder'; } $this->view = ucfirst($view); } } break; case 'monitor': if ($this->request->exist('monitor')) { $this->_actionParams['monitor'] = $this->request->get('monitor'); if ($this->request->exist('cascade')) { $this->_actionParams['cascade'] = $this->request->get('cascade'); } $this->_actionParams['item'] =& $item; $this->action = 'monitor'; } $this->_setView('Details'); break; case 'remove_monitoring': $this->_actionParams['listeners_to_delete'] = array(); if ($this->userCanManage($item->getId())) { if ($this->request->exist('listeners_to_delete')) { $um = UserManager::instance(); $vUserId = new Valid_UInt('listeners_to_delete'); if ($this->request->validArray($vUserId)) { $userIds = $this->request->get('listeners_to_delete'); $users = array(); foreach ($userIds as $userId) { $users[] = $um->getUserById($userId); } $this->_actionParams['listeners_to_delete'] = $users; $this->_actionParams['item'] = $item; } } $this->action = 'remove_monitoring'; $this->_setView('Details'); } else { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'notifications_permission_denied')); $this->_setView('Details'); } break; case 'add_monitoring': $this->_actionParams['listeners_to_add'] = array(); $this->_actionParams['invalid_users'] = false; if ($this->userCanManage($item->getId())) { if ($this->request->exist('listeners_to_add')) { $um = UserManager::instance(); $vUser = new Valid_Text('listeners_to_add'); if ($this->request->valid($vUser)) { $usernames = array_map('trim', preg_split('/[,;]/', $this->request->get('listeners_to_add'))); $users = array(); $vUserName = new Valid_String(); $vUserName->required(); foreach ($usernames as $username) { if ($vUserName->validate($username) && ($user = $um->findUser($username))) { $users[] = $user; } else { $this->_actionParams['invalid_users'] = true; } } if ($this->request->exist('monitor_cascade')) { $this->_actionParams['monitor_cascade'] = $this->request->get('monitor_cascade'); } $this->_actionParams['listeners_to_add'] = $users; $this->_actionParams['item'] = $item; } } $this->action = 'add_monitoring'; $this->_setView('Details'); } else { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'notifications_permission_denied')); $this->_setView('Details'); } break; case 'move_here': if (!$this->request->exist('item_to_move')) { $this->feedback->log('error', 'Missing parameter.'); $this->view = 'DocmanError'; } else { $item_to_move =& $item_factory->getItemFromDb($this->request->get('item_to_move')); $this->view = null; if ($this->request->exist('confirm')) { if (!$item_to_move || !($this->userCanWrite($item->getId()) && $this->userCanWrite($item_to_move->getId()) && $this->userCanWrite($item_to_move->getParentId()))) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_move')); $this->_set_moveView_errorPerms(); } else { $this->action = 'move'; } } if (!$this->view) { $this->_set_redirectView(); } } break; case 'permissions': if (!$this->userCanManage($item->getId())) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_perms')); $this->view = 'Details'; } else { $this->action = 'permissions'; $this->view = 'Details'; } break; case 'confirmDelete': if (!$this->userCanWrite($item->getId()) || !$this->userCanWrite($item->getParentId())) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_delete')); $this->view = 'Details'; } else { $this->view = 'Delete'; } break; case 'action_new_version': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_edit')); $this->view = 'Details'; } else { $dPm = $this->_getPermissionsManager(); if ($dPm->getLockFactory()->itemIsLocked($item)) { $this->feedback->log('warning', $GLOBALS['Language']->getText('plugin_docman', 'event_lock_add')); } $this->view = 'NewVersion'; } break; case 'action_update': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_edit')); $this->view = 'Details'; } else { $this->view = 'Update'; } break; case 'action_copy': //@XSS: validate action against a regexp. $_action = $this->request->get('orig_action'); $_id = (int) $this->request->get('orig_id'); $this->_actionParams['item'] = $item; $this->action = $view; if (!$this->request->exist('ajax_copy')) { $this->_viewParams['default_url_params'] = array('action' => $_action, 'id' => $_id); $this->view = 'RedirectAfterCrud'; } break; case 'action_cut': $_action = $this->request->get('orig_action'); $_id = (int) $this->request->get('orig_id'); $this->_actionParams['item'] = $item; $this->action = $view; if (!$this->request->exist('ajax_cut')) { $this->_viewParams['default_url_params'] = array('action' => $_action, 'id' => $_id); $this->view = 'RedirectAfterCrud'; } break; case 'action_paste': $itemToPaste = null; $mode = null; $allowed = $this->checkPasteIsAllowed($item, $itemToPaste, $mode); if (!$allowed) { $this->view = 'Details'; } else { $this->_viewParams['itemToPaste'] = $itemToPaste; $this->_viewParams['srcMode'] = $mode; $this->view = 'Paste'; } break; case 'paste_cancel': // intend to be only called through ajax call $item_factory->delCopyPreference(); $item_factory->delCutPreference(); break; case 'paste': if ($this->request->exist('cancel')) { $this->_viewParams['default_url_params'] = array('action' => 'show'); $this->view = 'RedirectAfterCrud'; } else { $itemToPaste = null; $mode = null; $allowed = $this->checkPasteIsAllowed($item, $itemToPaste, $mode); if (!$allowed) { $this->view = 'Details'; } else { $this->_viewParams['importMd'] = false; if ($this->userCanAdmin()) { if ($this->request->exist('import_md') && $this->request->get('import_md') == '1') { $this->_viewParams['importMd'] = true; } } $this->_viewParams['item'] = $item; $this->_viewParams['rank'] = $this->request->get('rank'); $this->_viewParams['itemToPaste'] = $itemToPaste; $this->_viewParams['srcMode'] = $mode; /*$this->action = $view; $this->_viewParams['default_url_params'] = array('action' => 'show', 'id' => $item->getId()); $this->view = 'RedirectAfterCrud';*/ $this->_viewParams['item'] = $item; $this->_viewParams['rank'] = $this->request->get('rank'); $this->_viewParams['itemToPaste'] = $itemToPaste; $this->_viewParams['srcMode'] = $mode; $this->view = 'PasteInProgress'; } } break; case 'approval_create': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $this->txt('error_perms_edit')); $this->view = 'Details'; } else { $this->view = 'ApprovalCreate'; } break; case 'approval_delete': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $this->txt('error_perms_edit')); $this->view = 'Details'; } else { if ($this->request->exist('confirm')) { $this->action = $view; $this->_actionParams['item'] = $item; // Version $vVersion = new Valid_UInt('version'); $vVersion->required(); if ($this->request->valid($vVersion)) { $this->_actionParams['version'] = $this->request->get('version'); } else { $this->_actionParams['version'] = null; } } $this->_viewParams['default_url_params'] = array('action' => 'details', 'section' => 'approval', 'id' => $item->getId()); $this->view = 'RedirectAfterCrud'; } break; case 'approval_update': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $this->txt('error_perms_edit')); $this->view = 'Details'; } else { $this->_actionParams['item'] = $item; // Settings $this->_actionParams['status'] = (int) $this->request->get('status'); $this->_actionParams['description'] = $this->request->get('description'); $this->_actionParams['notification'] = (int) $this->request->get('notification'); $this->_actionParams['reminder'] = $this->request->get('reminder'); $this->_actionParams['occurence'] = (int) $this->request->get('occurence'); $this->_actionParams['period'] = (int) $this->request->get('period'); // Users $this->_actionParams['user_list'] = $this->request->get('user_list'); $this->_actionParams['ugroup_list'] = null; if (is_array($this->request->get('ugroup_list'))) { $this->_actionParams['ugroup_list'] = array_map('intval', $this->request->get('ugroup_list')); } // Selected users $this->_actionParams['sel_user'] = null; if (is_array($this->request->get('sel_user'))) { $this->_actionParams['sel_user'] = array_map('intval', $this->request->get('sel_user')); } $allowedAct = array('100', 'mail', 'del'); $this->_actionParams['sel_user_act'] = null; if (in_array($this->request->get('sel_user_act'), $allowedAct)) { $this->_actionParams['sel_user_act'] = $this->request->get('sel_user_act'); } // Resend $this->_actionParams['resend_notif'] = false; if ($this->request->get('resend_notif') == 'yes') { $this->_actionParams['resend_notif'] = true; } // Version $vVersion = new Valid_UInt('version'); $vVersion->required(); if ($this->request->valid($vVersion)) { $this->_actionParams['version'] = $this->request->get('version'); } else { $this->_actionParams['version'] = null; } // Import $vImport = new Valid_WhiteList('app_table_import', array('copy', 'reset', 'empty')); $vImport->required(); $this->_actionParams['import'] = $this->request->getValidated('app_table_import', $vImport, false); // Owner $vOwner = new Valid_String('table_owner'); $vOwner->required(); $this->_actionParams['table_owner'] = $this->request->getValidated('table_owner', $vOwner, false); // // Special handeling of table deletion if ($this->_actionParams['status'] == PLUGIN_DOCMAN_APPROVAL_TABLE_DELETED) { $this->_viewParams['default_url_params'] = array('action' => 'approval_create', 'delete' => 'confirm', 'id' => $item->getId()); } else { // Action! $this->action = $view; $this->_viewParams['default_url_params'] = array('action' => 'approval_create', 'id' => $item->getId()); } if ($this->_actionParams['version'] !== null) { $this->_viewParams['default_url_params']['version'] = $this->_actionParams['version']; } $this->view = 'RedirectAfterCrud'; } break; case 'approval_upd_user': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $this->txt('error_perms_edit')); $this->view = 'Details'; } else { $this->_actionParams['item'] = $item; $this->_actionParams['user_id'] = (int) $this->request->get('user_id'); $this->_actionParams['rank'] = $this->request->get('rank'); $this->action = $view; $this->_viewParams['default_url_params'] = array('action' => 'approval_create', 'id' => $item->getId()); $this->view = 'RedirectAfterCrud'; } break; case 'approval_del_user': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $this->txt('error_perms_edit')); $this->view = 'Details'; } else { $this->_actionParams['item'] = $item; $this->_actionParams['user_id'] = (int) $this->request->get('user_id'); $this->action = $view; $this->_viewParams['default_url_params'] = array('action' => 'approval_create', 'id' => $item->getId()); $this->view = 'RedirectAfterCrud'; } break; case 'approval_user_commit': $atf =& Docman_ApprovalTableFactoriesFactory::getFromItem($item); $table = $atf->getTable(); $atrf =& new Docman_ApprovalTableReviewerFactory($table, $item); if (!$this->userCanRead($item->getId()) || !$atrf->isReviewer($user->getId()) || !$table->isEnabled()) { $this->feedback->log('error', $this->txt('error_perms_edit')); $this->view = 'Details'; } else { $this->_actionParams['item'] = $item; $svState = 0; $sState = (int) $this->request->get('state'); if ($sState >= 0 && $sState < 5) { $svState = $sState; } $this->_actionParams['svState'] = $svState; $this->_actionParams['sVersion'] = null; if ($this->request->exist('version')) { $sVersion = (int) $this->request->get('version'); switch ($item_factory->getItemTypeForItem($item)) { case PLUGIN_DOCMAN_ITEM_TYPE_WIKI: if ($sVersion <= 0) { $sVersion = null; } case PLUGIN_DOCMAN_ITEM_TYPE_FILE: case PLUGIN_DOCMAN_ITEM_TYPE_EMBEDDEDFILE: // assume ok: do nothing. break; default: $sVersion = null; } $this->_actionParams['sVersion'] = $sVersion; } $this->_actionParams['usComment'] = $this->request->get('comment'); $this->_actionParams['monitor'] = (int) $this->request->get('monitor'); $this->action = $view; $this->_viewParams['default_url_params'] = array('action' => 'details', 'section' => 'approval', 'id' => $item->getId()); $this->view = 'RedirectAfterCrud'; } break; case 'approval_notif_resend': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $this->txt('error_perms_edit')); $this->view = 'Details'; } else { $this->action = $view; $this->_actionParams['item'] = $item; $this->_viewParams['default_url_params'] = array('action' => 'approval_create', 'id' => $item->getId()); $this->view = 'RedirectAfterCrud'; } break; case 'edit': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_edit')); $this->view = 'Details'; } else { $mdFactory = new Docman_MetadataFactory($this->_viewParams['group_id']); $mdFactory->appendAllListOfValuesToItem($item); $this->view = 'Edit'; } break; case 'delete': if (!($this->userCanWrite($item->getId()) && $this->userCanWrite($item->getParentId()))) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_delete')); $this->_set_deleteView_errorPerms(); } else { if ($this->request->exist('confirm')) { $this->action = $view; $this->_set_redirectView(); } else { $this->view = 'Details'; } } break; case 'deleteVersion': if (!($this->userCanWrite($item->getId()) && $this->userCanWrite($item->getParentId()))) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_delete')); $this->_set_deleteView_errorPerms(); } else { if ($this->request->exist('confirm')) { $this->action = $view; $this->_set_redirectView(); } else { $this->view = 'Details'; } } break; case 'createFolder': case 'createDocument': case 'createItem': if ($this->request->exist('cancel')) { $this->_set_redirectView(); } else { $i = $this->request->get('item'); if (!$i || !isset($i['parent_id'])) { $this->feedback->log('error', 'Missing parameter.'); $this->view = 'DocmanError'; } else { $parent =& $item_factory->getItemFromDb($i['parent_id']); if (!$parent || $parent->getGroupId() != $this->getGroupId() || !$this->userCanWrite($parent->getId())) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_create')); $this->_set_createItemView_errorParentDoesNotExist($item, $get_show_view); } else { //Validations $new_item = $this->createItemFromUserInput(); $valid = $this->_validateRequest(array_merge($new_item->accept(new Docman_View_GetFieldsVisitor()), $new_item->accept(new Docman_View_GetSpecificFieldsVisitor(), array('request' => &$this->request)))); if ($user->isMember($this->getGroupId(), 'A') || $user->isMember($this->getGroupId(), 'N1') || $user->isMember($this->getGroupId(), 'N2')) { $news = $this->request->get('news'); if ($news) { $is_news_details = isset($news['details']) && trim($news['details']); $is_news_summary = isset($news['summary']) && trim($news['summary']); if ($is_news_details && !$is_news_summary) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_create_news_summary')); $valid = false; } if (!$is_news_details && $is_news_summary) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_create_news_details')); $valid = false; } } } if ($valid) { $this->action = $view; $this->_set_redirectView(); } else { // Propagate return page $this->_viewParams['token'] = $this->request->get('token'); $this->_viewParams['force_item'] = $new_item; $this->_viewParams['force_news'] = $this->request->get('news'); $this->_viewParams['force_permissions'] = $this->request->get('permissions'); $this->_viewParams['force_ordering'] = $this->request->get('ordering'); $this->_viewParams['display_permissions'] = $this->request->exist('user_has_displayed_permissions'); $this->_viewParams['display_news'] = $this->request->exist('user_has_displayed_news'); $this->_viewParams['hierarchy'] =& $this->getItemHierarchy($root); $this->_set_createItemView_afterCreate($view); } } } } break; case 'update': $this->_viewParams['recurseOnDocs'] = false; $this->_actionParams['recurseOnDocs'] = false; if ($this->request->get('recurse_on_doc') == 1) { $this->_viewParams['recurseOnDocs'] = true; $this->_actionParams['recurseOnDocs'] = true; } case 'update_wl': case 'new_version': if (!$this->userCanWrite($item->getId())) { $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_edit')); $this->view = 'Details'; } else { // For properties update ('update' action), we need to confirm // the recursive application of metadata update. if ($view == 'update' && $this->request->exist('recurse') && !$this->request->exist('cancel')) { $this->_viewParams['recurse'] = $this->request->get('recurse'); if (!$this->request->exist('validate_recurse')) { $updateConfirmed = false; } elseif ($this->request->get('validate_recurse') != 'true') { $updateConfirmed = false; } else { $updateConfirmed = true; } } else { $updateConfirmed = true; } $valid = true; if ($this->request->exist('confirm')) { //Validations if ($view == 'update') { $this->updateMetadataFromUserInput($item); $valid = $this->_validateRequest($item->accept(new Docman_View_GetFieldsVisitor())); } else { $this->updateItemFromUserInput($item); $valid = $this->_validateApprovalTable($this->request, $item) && $this->_validateRequest($item->accept(new Docman_View_GetSpecificFieldsVisitor(), array('request' => &$this->request))); } //Actions if ($valid && $updateConfirmed) { if ($view == 'update_wl') { $this->action = 'update'; } else { $this->action = $view; } } } //Views if ($valid && $updateConfirmed) { if ($redirect_to = Docman_Token::retrieveUrl($this->request->get('token'))) { $this->_viewParams['redirect_to'] = $redirect_to; } $this->view = 'RedirectAfterCrud'; } else { if ($view == 'update_wl') { $this->view = 'Update'; } else { if ($view == 'new_version') { // Keep fields values $v = $this->request->get('version'); $this->_viewParams['label'] = $v['label']; $this->_viewParams['changelog'] = $v['changelog']; if ($item instanceof Docman_EmbeddedFile) { $v = $item->getCurrentVersion(); $v->setContent($this->request->get('content')); } $this->view = 'NewVersion'; } else { $mdFactory = new Docman_MetadataFactory($this->_viewParams['group_id']); $mdFactory->appendAllListOfValuesToItem($item); if ($this->request->existAndNonEmpty('token')) { // propagate the token so the user will be // redirected to the original page even after // several properties update errors or // confirmations. $this->_viewParams['token'] = $this->request->get('token'); } $this->_viewParams['updateConfirmed'] = $updateConfirmed; // The item may have changed (new user input) unset($this->_viewParams['item']); $this->_viewParams['item'] =& $item; $this->view = 'Edit'; } } } } break; case 'change_view': $this->action = $view; break; case 'install': $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_alreadyinstalled')); $this->view = 'DocmanError'; break; case 'search': $this->view = 'Table'; break; case 'positionWithinFolder': $this->_viewParams['force_ordering'] = $this->request->get('default_position'); $this->_viewParams['exclude'] = $this->request->get('exclude'); $this->_viewParams['hierarchy'] =& $this->getItemHierarchy($root); $this->view = ucfirst($view); break; case 'permissionsForItem': $this->_viewParams['user_can_manage'] = $this->userCanManage($item->getId()); $this->view = ucfirst($view); break; case 'report_settings': $this->view = 'ReportSettings'; break; case 'report_del': if ($this->request->exist('report_id')) { $this->_actionParams['sReportId'] = (int) $this->request->get('report_id'); $this->_actionParams['sGroupId'] = $this->_viewParams['group_id']; $this->action = $view; } $this->_viewParams['default_url_params'] = array('action' => 'report_settings'); $this->view = 'RedirectAfterCrud'; break; case 'report_upd': if ($this->request->exist('report_id')) { $this->_actionParams['sReportId'] = (int) $this->request->get('report_id'); $this->_actionParams['sGroupId'] = $this->_viewParams['group_id']; $usScope = $this->request->get('scope'); if ($usScope === 'I' || $usScope === 'P') { $this->_actionParams['sScope'] = $usScope; } $this->_actionParams['description'] = $this->request->get('description'); $this->_actionParams['title'] = $this->request->get('title'); $this->_actionParams['sImage'] = (int) $this->request->get('image'); $this->action = $view; } $this->_viewParams['default_url_params'] = array('action' => 'report_settings'); $this->view = 'RedirectAfterCrud'; break; case 'report_import': if ($this->request->exist('import_search_report_from_group')) { $pm = ProjectManager::instance(); $srcGroup = $pm->getProjectFromAutocompleter($this->request->get('import_search_report_from_group')); if ($srcGroup && !$srcGroup->isError()) { $this->_actionParams['sGroupId'] = $this->_viewParams['group_id']; $this->_actionParams['sImportGroupId'] = $srcGroup->getGroupId(); $this->_actionParams['sImportReportId'] = null; if ($this->request->exist('import_report_id') && trim($this->request->get('import_report_id')) != '') { $this->_actionParams['sImportReportId'] = (int) $this->request->get('import_report_id'); } $this->action = $view; } } $this->_viewParams['default_url_params'] = array('action' => 'report_settings'); $this->view = 'RedirectAfterCrud'; break; case 'action_lock_add': $this->_actionParams['item'] = $item; $this->action = 'action_lock_add'; break; case 'action_lock_del': $this->_actionParams['item'] = $item; $this->action = 'action_lock_del'; break; case 'ajax_reference_tooltip': $this->view = 'AjaxReferenceTooltip'; break; default: $event_manager =& EventManager::instance(); $eParams = array('view' => $view, 'docmanPath' => $this->pluginPath, 'docmanThemePath' => $this->themePath); $event_manager->processEvent('plugin_docman_after_dispacher', $eParams); die(htmlspecialchars($view) . ' is not supported'); break; } }
$group_id = $request->get('group_id'); $vPostChanges = new Valid_WhiteList('post_changes', array('y')); $vPostChanges->required(); if ($request->isPost() && $request->valid($vPostChanges)) { /* Update the DB to reflect the changes */ // // Prepare validators // // Forum Name $vForumName = new Valid_String('forum_name'); $vForumName->setErrorMessage($Language->getText('forum_admin_index', 'params_missing')); $vForumName->required(); // Description $vDescription = new Valid_String('description'); $vDescription->setErrorMessage($Language->getText('forum_admin_index', 'params_missing')); $vDescription->required(); // Is public $vIsPublic = new Valid_WhiteList('is_public', array(0, 1, 9)); $vIsPublic->required(); if ($request->existAndNonEmpty('delete')) { $vMsg = new Valid_Uint('msg_id'); $vMsg->required(); if ($request->valid($vMsg)) { /* Deleting messages or threads */ // First, check if the message exists $sql = "SELECT forum_group_list.group_id, forum.group_forum_id FROM forum,forum_group_list " . "WHERE forum.group_forum_id=forum_group_list.group_forum_id AND forum.msg_id=" . db_ei($msg_id); $result = db_query($sql);
function create($request) { $content_id = false; $vUrl = new Valid_String('url'); $vUrl->setErrorMessage("Can't add empty rss url"); $vUrl->required(); if ($request->validInArray('rss', $vUrl)) { $rss = $request->get('rss'); $vTitle = new Valid_String('title'); $vTitle->required(); if (!$request->validInArray('rss', $vTitle)) { require_once 'common/rss/libs/SimplePie/simplepie.inc'; if (!is_dir($GLOBALS['codendi_cache_dir'] . '/rss')) { mkdir($GLOBALS['codendi_cache_dir'] . '/rss'); } $rss_reader = new SimplePie($rss['url'], $GLOBALS['codendi_cache_dir'] . '/rss', null, $GLOBALS['sys_proxy']); $rss['title'] = $rss_reader->get_title(); } $sql = 'INSERT INTO widget_rss (owner_id, owner_type, title, url) VALUES (' . $this->owner_id . ", '" . $this->owner_type . "', '" . db_escape_string($rss['title']) . "', '" . db_escape_string($rss['url']) . "')"; $res = db_query($sql); $content_id = db_insertid($res); } return $content_id; }
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); }
session_require(array('group' => '1', 'admin_flags' => 'A')); $hp = Codendi_HTMLPurifier::instance(); $request =& HTTPRequest::instance(); $action_select = ''; $status = ''; if ($request->exist('action_select')) { $action_select = $request->get('action_select'); } if ($request->exist('status')) { $status = $request->get('status'); } $expiry_date = 0; if ($request->exist('form_expiry') && $request->get('form_expiry') != '' && !ereg("[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}", $request->get('form_expiry'))) { $feedback .= ' ' . $Language->getText('admin_approve_pending_users', 'data_not_parsed'); } else { $vDate = new Valid_String(); if ($request->exist('form_expiry') && $request->get('form_expiry') != '' && $vDate->validate($request->get('form_expiry'))) { $date_list = split("-", $request->get('form_expiry'), 3); $unix_expiry_time = mktime(0, 0, 0, $date_list[1], $date_list[2], $date_list[0]); $expiry_date = $unix_expiry_time; } $page = ''; if ($request->exist('page')) { $page = $request->get('page'); } if ($action_select == 'activate') { $shell = ""; if ($status == 'restricted') { $newstatus = 'R'; $shell = ",shell='" . $GLOBALS['codendi_bin_prefix'] . "/cvssh-restricted'"; } else {
* along with Codendi; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * */ require 'pre.php'; $hp = Codendi_HTMLPurifier::instance(); $vPv = new Valid_Pv(); if ($request->valid($vPv) && $request->get('pv') == 2) { $pv = 2; $HTML->pv_header(array()); } else { $pv = 0; site_header(array('title' => $Language->getText('my_redirect', 'page_title'))); } $vReturnTo = new Valid_String('return_to'); $vReturnTo->required(); if ($request->valid($vReturnTo)) { // if return_to URL start with a protocol name then take as is // otherwise prepend the proper http protocol // Re-serialize feedback to display it on the 'return_to' page. $HTML->_serializeFeedback(); $return_to = trim($request->get('return_to')); $use_ssl = session_issecure() || $GLOBALS['sys_force_ssl']; if ($use_ssl) { $server_url = "https://" . $GLOBALS['sys_https_host']; } else { $server_url = "http://" . $GLOBALS['sys_default_domain']; } if (preg_match("/^[A-Za-z]+:\\/\\//i", $return_to)) { $return_url = $return_to;
/** * 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); } }
/** * Checks whether name is present in the parameters. * * @param PlanningParameters $planning_parameters The validated parameters. * * @return bool */ private function nameIsPresent(PlanningParameters $planning_parameters) { $name = new Valid_String(); $name->required(); return $name->validate($planning_parameters->name); }
$synchro = LDAP_GroupManager::NO_SYNCHRONIZATION; if ($request->existAndNonEmpty('synchronize')) { $synchro = LDAP_GroupManager::AUTO_SYNCHRONIZATION; } $hp = Codendi_HTMLPurifier::instance(); $btn_update = $Language->getText('plugin_ldap', 'ugroup_edit_btn_update'); $btn_unlink = $Language->getText('plugin_ldap', 'ugroup_edit_btn_unlink'); $vSubmit = new Valid_WhiteList('submit', array($btn_update, $btn_unlink)); $vSubmit->required(); if ($request->isPost() && $request->valid($vSubmit)) { if ($request->get('submit') == $btn_unlink) { if ($ldapUserGroupManager->unbindFromBindLdap()) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_ldap', 'ugroup_manager_unlink')); } } else { $vBindWithGroup = new Valid_String('bind_with_group'); $vBindWithGroup->required(); if ($request->valid($vBindWithGroup)) { if ($request->existAndNonEmpty('confirm')) { // // Perform Ugroup <-> LDAP Group synchro // $ldapUserGroupManager->bindWithLdap($bindOption, $synchro); } elseif ($request->exist('cancel')) { // Display the screen below! continue; } else { // // Display to user what will be done with Ugroup members. // $toRemove = $ldapUserGroupManager->getUsersToBeRemoved($bindOption);