private function doCreate() { $data = $this->creation_request->getProjectValues(); require_once 'www/project/create_project.php'; $group_id = create_project($data); return $this->project_manager->getProject($group_id); }
/** * Execute action * * @see src/common/system_event/SystemEvent::process() */ public function process() { $user_ids = $this->getParametersAsArray(); $project_ids = array(); // Get all projects the user is member of (project member or user group member) $um = $this->getUserManager(); foreach ($user_ids as $user_id) { $user = $um->getUserById($user_id); if ($user && ($user->isActive() || $user->isRestricted())) { $prjs = $user->getAllProjects(); foreach ($prjs as $pid) { if (!isset($project_ids[$pid])) { $project_ids[$pid] = $pid; } } } } // Update SVNAccessFile of projects $backendSVN = $this->getBackendSVN(); foreach ($project_ids as $project_id) { $project = $this->project_manager->getProject($project_id); if ($project && $this->ldap_project_manager->hasSVNLDAPAuth($project->getId())) { $backendSVN->updateProjectSVNAccessFile($project); } } $this->done(); }
/** * Instanciates a new controller. * * TODO: * - pass $request to actions (e.g. show). * * @param Codendi_Request $request * @param PlanningFactory $planning_factory * @param Planning_MilestoneFactory $milestone_factory */ public function __construct(Codendi_Request $request, Planning_MilestoneFactory $milestone_factory, ProjectManager $project_manager, Planning_VirtualTopMilestonePaneFactory $top_milestone_pane_factory) { parent::__construct('agiledashboard', $request); $this->milestone_factory = $milestone_factory; $this->top_milestone_pane_factory = $top_milestone_pane_factory; $this->project = $project_manager->getProject($request->get('group_id')); }
/** * Instanciates a new controller. * * TODO: * - pass $request to actions (e.g. show). * * @param Codendi_Request $request * @param PlanningFactory $planning_factory * @param Planning_MilestoneFactory $milestone_factory */ public function __construct(Codendi_Request $request, Planning_MilestoneFactory $milestone_factory, ProjectManager $project_manager, Planning_MilestonePaneFactory $pane_factory, AgileDashboard_Milestone_Pane_PanePresenterBuilderFactory $pane_presenter_builder_factory) { parent::__construct('agiledashboard', $request); $this->milestone_factory = $milestone_factory; $this->pane_factory = $pane_factory; $this->pane_presenter_builder_factory = $pane_presenter_builder_factory; $this->project = $project_manager->getProject($request->get('group_id')); }
/** * Returns the Project that match the given string * * @param String $repository_path * @return Project * @throws Exception */ public function getProjectFromRepositoryPath($repository_path) { $unix_group_name = substr($repository_path, strlen(ForgeConfig::get('svn_prefix')) + 1); $project = $this->project_manager->getProjectByUnixName($unix_group_name); if ($project && !$project->isError() && !$project->isDeleted()) { return $project; } throw new Exception('Invalid project'); }
public function __construct(array $hit, ProjectManager $project_manager) { $project = $project_manager->getProject($hit['fields']['group_id']); $this->item_title = $hit['fields']['title']; $this->url = '/plugins/docman/?group_id=' . $hit['fields']['group_id'] . '&id=' . $hit['fields']['id'] . '&action=details'; $this->permissions = implode(', ', $hit['fields']['permissions']); $this->project_name = $project->getPublicName(); $this->highlight = isset($hit['highlight']['file']) ? array_shift($hit['highlight']['file']) : ''; }
public function renameProject($old_name, $new_name) { $git_modifications = new Git_Gitolite_GitModifications(); $project = $this->project_manager->getProjectByUnixName($new_name); $this->moveProjectFiles($old_name, $new_name, $git_modifications, $project); $this->modifyProjectConf($old_name, $new_name, $git_modifications, $project); $this->modifyIncludersConf($old_name, $new_name, $git_modifications, $project); return $git_modifications; }
/** * @return Project[] */ public function getProjectsAuthorizingTokens() { $projects = array(); foreach ($this->dao->getProjectsAuthorizingTokens() as $row) { $project_id = $row['project_id']; $projects[] = $this->project_manager->getProject($project_id); } return $projects; }
private function migrateProject($project_to_migrate) { $project = $this->project_manager->getProjectFromAutocompleter($project_to_migrate); if ($project && $this->wiki_migrator->canMigrate($project)) { $this->system_event_manager->createEvent(SystemEvent_PHPWIKI_SWITCH_TO_PLUGIN::NAME, $project->getId(), SystemEvent::PRIORITY_HIGH); $GLOBALS['Response']->addFeedback(Feedback::INFO, $GLOBALS['Language']->getText('plugin_phpwiki', 'allowed_project_allow_project')); } else { $this->sendUpdateProjectListError(); } }
/** * Instanciates a new controller. * * TODO: * - pass $request to actions (e.g. show). * * @param Codendi_Request $request * @param PlanningFactory $planning_factory * @param Planning_MilestoneFactory $milestone_factory */ public function __construct(Codendi_Request $request, Planning_MilestoneFactory $milestone_factory, ProjectManager $project_manager) { parent::__construct('agiledashboard', $request); try { $this->milestone_factory = $milestone_factory; $project = $project_manager->getProject($request->get('group_id')); $this->milestone = $this->milestone_factory->getMilestoneWithPlannedArtifactsAndSubMilestones($this->getCurrentUser(), $project, $request->get('planning_id'), $request->get('aid')); } catch (Tracker_Hierarchy_MoreThanOneParentException $e) { $GLOBALS['Response']->addFeedback('error', $e->getMessage(), CODENDI_PURIFIER_LIGHT); } }
/** * Creates the Umbrella Projects of a given project * @param Git_RemoteServer_GerritServer[] $gerrit_servers * @param Project $project */ public function recursivelyCreateUmbrellaProjects(array $gerrit_servers, Project $project) { $parent_project = $this->project_manager->getParentProject($project->getID()); $this->createProjectOnServers($gerrit_servers, $project); if (!$parent_project) { $this->resetProjectInheritanceOnServers($gerrit_servers, $project); return; } $this->recursivelyCreateUmbrellaProjects($gerrit_servers, $parent_project); $this->setProjectInheritanceOnServers($gerrit_servers, $project, $parent_project); }
/** * Select a PM from its username or password * * @param ProjectManager $pm * @return array the selected row in the db */ public function update($pm) { $sql = $this->dao->prepare("UPDATE project_manager set `password` = :password WHERE `pm_id` = :pm_id;"); $sql->bindValue(":pm_id", $pm->pm_id(), \PDO::PARAM_INT); $sql->bindValue(":password", $pm->password(), \PDO::PARAM_STR); try { return $sql->execute(); } catch (Exception $exc) { echo $exc->getTraceAsString(); } }
private function allowSVNTokensForProject($project_to_migrate) { $project = $this->project_manager->getProjectFromAutocompleter($project_to_migrate); if ($project && $this->token_manager->canAuthorizeTokens($project)) { $this->token_manager->setProjectAuthorizesTokens($project); $this->event_manager->processEvent(Event::SVN_AUTHORIZE_TOKENS, array('group_id' => $project->getID())); $GLOBALS['Response']->addFeedback(Feedback::INFO, $GLOBALS['Language']->getText('svn_tokens', 'allowed_project_allow_project')); } else { $this->sendUpdateProjectListError(); } }
public function __construct(array $results, ProjectManager $project_manager, array $submitted_facets) { if (isset($results['terms'])) { foreach ($results['terms'] as $result) { $project = $project_manager->getProject($result['term']); if ($project && !$project->isError()) { $checked = isset($submitted_facets['group_id']) && in_array($project->getGroupId(), $submitted_facets['group_id']); $this->facets[] = new ElasticSearch_SearchResultProjectsFacet($project, $result['count'], $checked); } } } }
public function process() { foreach ($this->getProjectIdsFromParameters() as $project_id) { $project = $this->project_manager->getProject($project_id); if ($project && !$project->isError()) { $this->logger->debug('Update configuration for project ' . $project->getID()); $this->gitolite_driver->dumpProjectRepoConf($project); } } $this->system_event_manager->queueGrokMirrorGitoliteAdminUpdate(); $this->done(); }
private function getOtherProjectsValues(PFUser $user, $submitted_facets) { $other_projects = array(); $all_projects_for_user = $this->project_manager->getAllMyAndPublicProjects($user); foreach ($all_projects_for_user as $project_id => $project) { if ($this->isProjectValid($project) && !$this->isProjectInSearchResults($project_id)) { $selected = isset($submitted_facets['group_id']) && in_array($project_id, $submitted_facets['group_id']); $other_projects[] = new ElasticSearch_SearchResultProjectsFacet($project, 0, $selected); } } usort($other_projects, array($this, 'sortProjects')); return $other_projects; }
public function updateAccess($new_value, $old_value) { if ($new_value === $old_value) { return; } $property_name = ForgeAccess::CONFIG; $this->config_dao->save($property_name, $new_value); $this->event_manager->processEvent(Event::SITE_ACCESS_CHANGE, array('new_value' => $new_value, 'old_value' => $old_value)); if ($old_value === ForgeAccess::RESTRICTED || $new_value === ForgeAccess::RESTRICTED) { $this->project_manager->disableAllowRestrictedForAll(); $this->permission_manager->disableRestrictedAccess(); } }
/** * @param array $projectInfo The project data db row * * @return SVN_Apache */ public function get($projectInfo) { $requested_authentication_method = ForgeConfig::get(SVN_Apache_SvnrootConf::CONFIG_SVN_AUTH_KEY); $svn_apache_auth = $this->getModFromPlugins($projectInfo, $requested_authentication_method); if (!$svn_apache_auth) { $project = $this->project_manager->getProjectFromDbRow($projectInfo); if ($this->token_manager->isProjectAuthorizingTokens($project)) { $svn_apache_auth = new SVN_Apache_ModPerl($projectInfo); } else { $svn_apache_auth = $this->getModFromLocalIncFile($projectInfo, $requested_authentication_method); } } return $svn_apache_auth; }
/** * @param array $projectInfo The project data db row * * @return SVN_Apache */ public function get(array $projectInfo, $requested_authentication_method) { $project = $this->project_manager->getProjectFromDbRow($projectInfo); $project_authorizes_tokens = $this->token_manager->isProjectAuthorizingTokens($project); $svn_apache_auth = $this->getModFromPlugins($projectInfo, $requested_authentication_method, $project_authorizes_tokens); if (!$svn_apache_auth) { if ($project_authorizes_tokens) { $svn_apache_auth = new SVN_Apache_ModPerl($projectInfo); } else { $svn_apache_auth = $this->getModFromLocalIncFile($projectInfo, $requested_authentication_method); } } return $svn_apache_auth; }
protected function aCreationValidator($request_data, $required_custom_descriptions) { $request = aRequest()->withParams($request_data)->build(); $creation_request = new Project_OneStepCreation_OneStepCreationRequest($request, ProjectManager::instance()); $validator = new Project_OneStepCreation_OneStepCreationValidator($creation_request, $required_custom_descriptions); return $validator; }
public function __construct() { $this->project_manager = ProjectManager::instance(); $this->user_manager = UserManager::instance(); $this->project_helper = new \DataInit\ProjectHelper(); $GLOBALS['Language'] = new BaseLanguage('en_US', 'en_US'); }
/** * Constructor */ function PHPWikiService($id) { global $LANG, $is_wiki_page; //used so the search box will add the necessary element to the pop-up box $is_wiki_page = 1; /* * Check given id */ $this->gid = (int) $id; if (empty($this->gid)) { exit_no_group(); } $pm = ProjectManager::instance(); $go = $pm->getProject($this->gid); if (!$go) { exit_no_group(); } $this->wiki = new PHPWiki($this->gid); // Check access right $this->checkPermissions(); // If Wiki for project doesn't exist, propose creation ... if user is project admin or wiki admin if (!$this->wiki->exist()) { if (!user_ismember($this->gid, 'W2') && !user_ismember($this->gid, 'A')) { exit_wiki_empty(); } } // Set language for phpWiki if ($this->wiki->getLanguage_id()) { define('DEFAULT_LANGUAGE', $this->wiki->getLanguage_id()); $LANG = $this->wiki->getLanguage_id(); } }
public function getContent() { $request =& HTTPRequest::instance(); $group_id = $request->get('group_id'); $pm = ProjectManager::instance(); $project = $pm->getProject($group_id); $res_admin = db_query("SELECT user.user_id AS user_id,user.user_name AS user_name, user.realname as realname " . "FROM user,user_group " . "WHERE user_group.user_id=user.user_id AND user_group.group_id=" . db_ei($group_id) . " AND " . "user_group.admin_flags = 'A'"); if (db_numrows($res_admin) > 0) { $user_helper = UserHelper::instance(); $hp = Codendi_HTMLPurifier::instance(); $em = EventManager::instance(); echo '<span class="develtitle">' . $GLOBALS['Language']->getText('include_project_home', 'proj_admins') . ':</span><br />'; while ($row_admin = db_fetch_array($res_admin)) { $display_name = ''; $em->processEvent('get_user_display_name', array('user_id' => $row_admin['user_id'], 'user_name' => $row_admin['user_name'], 'realname' => $row_admin['realname'], 'user_display_name' => &$display_name)); if (!$display_name) { $display_name = $hp->purify($user_helper->getDisplayNameFromUserId($row_admin['user_id'])); } echo '<a href="/users/' . $row_admin['user_name'] . '/">' . $display_name . '</a><br />'; } } echo '<span class="develtitle">' . $GLOBALS['Language']->getText('include_project_home', 'proj_members') . ':</span><br />'; // count of developers on this project $res_count = db_query("SELECT user_id FROM user_group WHERE group_id=" . db_ei($group_id)); echo db_numrows($res_count); echo ' <a href="/project/memberlist.php?group_id=' . $group_id . '">[' . $GLOBALS['Language']->getText('include_project_home', 'view_members') . ']</a>'; }
/** * Bootstrap the application and * call the other bootstrap classes * from the projects (if they exist) * * @return self */ public function bootstrap($environment = Application::ENVIRONMENT_WEB) { static::$environment = $environment; // Setup application $this->setup(); try { Buffer::start(); // Call own bootstrap (new Bootstrap($this))->autoCall(); // Call bootstrap of active project $project = ProjectManager::getActiveProject(); if ($project) { // Save it in case for further use $bootstrap = $project->bootstrap($this); } } catch (\Exception $err) { switch (static::$environment) { case Application::ENVIRONMENT_WEB: self::renderException(array($err)); break; case Application::ENVIRONMENT_CMD: throw $err; break; } } return $this; }
/** * Create a new project * * $data['project']['form_unix_name'] * $data['project']['form_full_name'] * $data['project']['form_license'] * $data['project']['form_license_other'] * $data['project']['form_short_description'] * $data['project']['built_from_template'] * $data['project']['is_test'] * $data['project']['is_public'] * $data['project']["form_".$descfieldsinfos[$i]["group_desc_id"]] * foreach($data['project']['trove'] as $root => $values); * $data['project']['services'][$arr['service_id']]['is_used']; * $data['project']['services'][$arr['service_id']]['server_id']; * * @param String $shortName * @param String $publicName * @param Array $data * * @return Project */ public function create($shortName, $publicName, $data) { if (!$this->ruleShortName->isValid($shortName)) { throw new Project_InvalidShortName_Exception($this->ruleShortName->getErrorMessage()); } $data['project']['form_unix_name'] = $shortName; if (!$this->ruleFullName->isValid($publicName)) { throw new Project_InvalidFullName_Exception($this->ruleFullName->getErrorMessage()); } $data['project']['form_full_name'] = $publicName; $id = $this->create_project($data); if ($id) { return $this->projectManager->getProject($id); } throw new Project_Creation_Exception(); }
function displayNotificationEmail() { $html = ''; $html .= '<h3>' . $GLOBALS['Language']->getText('plugin_docman', 'details_approval_email_title') . '</h3>'; $atsm = new Docman_ApprovalTableNotificationCycle(); $atsm->setItem($this->item); $atf =& Docman_ApprovalTableFactoriesFactory::getFromItem($this->item); $table = $atf->getTable(false); $atsm->setTable($table); $um =& UserManager::instance(); $owner =& $um->getUserById($table->getOwner()); $atsm->setOwner($owner); $atsm->sendNotifReviewer($owner); $html .= $GLOBALS['Language']->getText('plugin_docman', 'details_approval_email_subject') . ' ' . $atsm->getNotificationSubject() . "\n"; $html .= '<p class="docman_approval_email">'; if (ProjectManager::instance()->getProject($this->item->getGroupId())->getTruncatedEmailsUsage()) { $html .= $GLOBALS['Language']->getText('plugin_docman', 'truncated_email'); } else { $html .= htmlentities(quoted_printable_decode($atsm->getNotificationBodyText()), ENT_COMPAT, 'UTF-8'); } $html .= '</p>'; $backurl = $this->url . '&action=approval_create&id=' . $this->item->getId(); $html .= '<a href="' . $backurl . '">' . $GLOBALS['Language']->getText('plugin_docman', 'details_approval_email_back') . '</a>'; return $html; }
function svn_data_get_revision_detail($group_id, $commit_id, $rev_id = 0, $order = '') { $order_str = ""; if ($order) { if ($order != 'filename') { // SQLi Warning: no real possibility to escape $order here. // We rely on a proper filtering of user input by calling methods. $order_str = " ORDER BY " . $order; } else { $order_str = " ORDER BY dir, file"; } } //check user access rights $pm = ProjectManager::instance(); $project = $pm->getProject($group_id); $forbidden = svn_utils_get_forbidden_paths(user_getname(), $project->getSVNRootPath()); $where_forbidden = ""; if (!empty($forbidden)) { while (list($no_access, ) = each($forbidden)) { $where_forbidden .= " AND svn_dirs.dir not like '%" . db_es(substr($no_access, 1)) . "%' "; } } // if the subversion revision id is given then it akes precedence on // the internal commit_id (this is to make it easy for users to build // URL to access a revision if ($rev_id) { // To be done -> get the commit ID from the svn-commit table $sql = "SELECT svn_commits.description, svn_commits.date, svn_commits.revision, svn_checkins.type,svn_checkins.commitid,svn_dirs.dir,svn_files.file " . "FROM svn_dirs, svn_files, svn_checkins, svn_commits " . "WHERE svn_checkins.fileid=svn_files.id " . "AND svn_checkins.dirid=svn_dirs.id " . "AND svn_checkins.commitid=svn_commits.id " . "AND svn_commits.revision=" . db_ei($rev_id) . " " . "AND svn_commits.group_id=" . db_ei($group_id) . " " . $where_forbidden . $order_str; } else { $sql = "SELECT svn_commits.description, svn_commits.date, svn_commits.revision, svn_checkins.type,svn_checkins.commitid,svn_dirs.dir,svn_files.file " . "FROM svn_dirs, svn_files, svn_checkins, svn_commits " . "WHERE svn_checkins.fileid=svn_files.id " . "AND svn_checkins.dirid=svn_dirs.id " . "AND svn_checkins.commitid=svn_commits.id " . "AND svn_commits.id=" . db_ei($commit_id) . " " . $where_forbidden . $order_str; } $result = db_query($sql); return $result; }
private function autoActivateProject($group) { $auto_approval = ForgeConfig::get('sys_project_approval', 1) ? PROJECT_APPROVAL_BY_ADMIN : PROJECT_APPROVAL_AUTO; if ($this->force_activation || $auto_approval == PROJECT_APPROVAL_AUTO) { $this->projectManager->activate($group); } }
/** * Constructor. * * @param Integer $groupId Project Id * @param Integer $weeksNumber Statistics duration in weeks * * @return Void */ public function __construct($groupId, $weeksNumber) { $dao = new GitDao(); // TODO: Optionally include presonal forks in repo list $allRepositories = $dao->getProjectRepositoryList($groupId); $um = UserManager::instance(); $user = $um->getCurrentUser(); $repoFactory = new GitRepositoryFactory($dao, ProjectManager::instance()); foreach ($allRepositories as $repo) { $repository = $repoFactory->getRepositoryById($repo['repository_id']); if ($repository->userCanRead($user)) { $this->repoList[] = $repository; } } $this->displayChart = false; $this->weeksNumber = min($weeksNumber, self::MAX_WEEKSNUMBER); // Init some class properties according to 'weeks number' parameter $today = $_SERVER['REQUEST_TIME']; $startPeriod = strtotime("-{$this->weeksNumber} weeks"); $weekInSeconds = self::WEEKS_IN_SECONDS; for ($i = $startPeriod + $weekInSeconds; $i < $today + $weekInSeconds; $i += $weekInSeconds) { $this->dates[] = date('M d', $i); $this->weekNum[] = intval(date('W', $i)); $this->year[] = intval(date('Y', $i)); } }
public function tearDown() { UserManager::clearInstance(); ProjectManager::clearInstance(); SystemEventManager::clearInstance(); unset($GLOBALS['Language']); }