/**
  * 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();
 }
 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);
 }
예제 #3
0
 /**
  * @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;
 }
 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();
 }
예제 #5
0
 /**
  * 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();
 }
 /**
  * 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'));
 }
 private function getMatchingProjectsValues(array $results)
 {
     $projects = array();
     if (isset($results['terms'])) {
         foreach ($results['terms'] as $result) {
             $project = $this->project_manager->getProject($result['term']);
             if ($this->isProjectValid($project)) {
                 $checked = isset($this->submitted_facets[self::IDENTIFIER]) && in_array($project->getGroupId(), $this->submitted_facets[self::IDENTIFIER]);
                 $projects[] = new ElasticSearch_SearchResultProjectsFacet($project, $result['count'], $checked);
                 $this->incrementCountMyProjects($project, $result['count']);
             }
             $this->matching_project_ids[] = $project->getID();
         }
     }
     usort($projects, array($this, 'sortProjects'));
     return $projects;
 }
 public function isUgroupUsed($ugroup_id, $project_id)
 {
     $project = $this->project_manager->getProject($project_id);
     if (!$project->usesWiki()) {
         return false;
     }
     return $this->permission_manager->isUgroupUsedByWikiService($ugroup_id, $project_id);
 }
 public function fetchAllProjectsConcernedByAMirror(Git_Mirror_Mirror $mirror)
 {
     $projects = array();
     foreach ($this->dao->fetchAllProjectIdsConcernedByAMirror($mirror->id) as $row) {
         $projects[] = $this->project_manager->getProject($row['project_id']);
     }
     return $projects;
 }
 /**
  * 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'));
 }
예제 #11
0
 private function initFileModule($group_id)
 {
     $result = db_query("INSERT INTO filemodule (group_id,module_name) VALUES ('{$group_id}','" . $this->projectManager->getProject($group_id)->getUnixName() . "')");
     if (!$result) {
         list($host, $port) = explode(':', $GLOBALS['sys_default_domain']);
         exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'ins_file_fail', array($host, db_error())));
     }
 }
예제 #12
0
 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']) : '';
 }
 /**
  * @return array
  */
 private function getServices()
 {
     $services = array();
     $project = $this->project_manager->getProject($this->getTemplateId());
     foreach ($project->getServices() as $service) {
         $id = $service->getId();
         $services[$id]['is_used'] = $service->isUsed();
     }
     return $services;
 }
예제 #14
0
 /**
  * Return a Project is the given user is authorized to administrate it
  * 
  * @param Integer $groupId
  * @param String  $sessionKey
  * 
  * @return Project
  */
 private function getProjectIfUserIsAdmin($groupId, $sessionKey)
 {
     $project = $this->projectManager->getProject($groupId);
     if ($project && !$project->isError()) {
         if ($this->isRequesterAdmin($sessionKey, $project->getID())) {
             return $project;
         }
         throw new SoapFault('3201', 'Permission denied: need to be project admin.');
     }
     throw new SoapFault('3000', "Invalid project id");
 }
예제 #15
0
 private function createTrackerStructure(PFUser $user, $project_id, $tv3_id, $tracker_name, $tracker_description, $tracker_short_name)
 {
     $project = $this->project_manager->getProject($project_id);
     $this->logger->info('--> Migrate structure ');
     $new_tracker = $this->tracker_factory->createFromTV3($user, $tv3_id, $project, $tracker_name, $tracker_description, $tracker_short_name);
     if (!$new_tracker) {
         throw new Tracker_Exception_Migration_StructureCreationException($tracker_name, $tv3_id);
     }
     $this->logger->info('<-- Structure migrated ' . PHP_EOL);
     return $new_tracker->getId();
 }
예제 #16
0
 /**
  * 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);
     }
 }
 /**
  * Return all repositories with a remote server set
  *
  * @return Array of GitRepository
  */
 public function getActiveRepositoriesWithRemoteServersForAllProjects()
 {
     $repositories = array();
     foreach ($this->dao->getActiveRepositoryPathsWithRemoteServersForAllProjects() as $row) {
         $repository = new GitRepository();
         $this->dao->hydrateRepositoryObject($repository, $row);
         $repository->setProject($this->projectManager->getProject($row[GitDao::FK_PROJECT_ID]));
         $repositories[] = $repository;
     }
     return $repositories;
 }
 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);
             }
         }
     }
 }
예제 #19
0
 /**
  * @param Git_Driver_Gerrit_Template_Template $template
  * @param Project $project
  * @param PFUser $user
  * @throws Git_ProjectNotInHierarchyException
  */
 private function checkTemplateIsAccessible(Git_Driver_Gerrit_Template_Template $template, Project $project, PFUser $user)
 {
     $template_id = $template->getId();
     foreach ($this->template_factory->getTemplatesAvailableForProject($project) as $available_template) {
         if ($available_template->getId() == $template_id) {
             $template_project = $this->project_manager->getProject($available_template->getProjectId());
             $this->checkUserIsAdmin($template_project, $user);
             return true;
         }
     }
     throw new Git_TemplateNotInProjectHierarchyException('Project not in hierarchy', 404);
 }
예제 #20
0
 public function getSearchResults(array $result)
 {
     $results = array();
     $validator = new ElasticSearch_1_2_ResultValidator();
     if (!isset($result['hits']['hits'])) {
         return $results;
     }
     $user = $this->user_manager->getCurrentUser();
     foreach ($result['hits']['hits'] as $hit) {
         $project = $this->project_manager->getProject($this->extractGroupIdFromHit($hit));
         $index = $this->extractIndexFromHit($hit);
         if ($project->isError()) {
             continue;
         }
         try {
             $this->url_verification->userCanAccessProject($user, $project);
         } catch (Project_AccessPrivateException $exception) {
             continue;
         }
         switch ($index) {
             case fulltextsearchPlugin::SEARCH_DOCMAN_TYPE:
                 if (!$validator->isDocmanResultValid($hit)) {
                     continue;
                 }
                 $results[] = new ElasticSearch_SearchResultDocman($hit, $project);
                 break;
             case fulltextsearchPlugin::SEARCH_WIKI_TYPE:
                 if (!$validator->isWikiResultValid($hit)) {
                     continue;
                 }
                 $wiki = new Wiki($project->getID());
                 if ($wiki->isAutorized($user->getId())) {
                     $results[] = new ElasticSearch_SearchResultWiki($hit, $project);
                 }
                 break;
             case fulltextsearchPlugin::SEARCH_TRACKER_TYPE:
                 if (!$validator->isArtifactResultValid($hit)) {
                     continue;
                 }
                 $artifact = Tracker_ArtifactFactory::instance()->getArtifactById($hit['fields']['id'][0]);
                 if ($artifact->userCanView($user)) {
                     $results[] = new ElasticSearch_SearchResultTracker($hit, $project, $artifact);
                 }
                 break;
             default:
         }
     }
     return $results;
 }
 public function __construct(array $result, array $submitted_facets, ProjectManager $project_manager)
 {
     if (isset($result['hits']['total'])) {
         $this->nb_documents_found = $result['hits']['total'];
     }
     if (isset($result['time'])) {
         $this->query_time = $result['time'];
     }
     if (isset($result['hits']['hits'])) {
         foreach ($result['hits']['hits'] as $hit) {
             $project = $project_manager->getProject($hit['fields']['group_id']);
             if ($project->isError()) {
                 $this->nb_documents_found--;
             } else {
                 $this->results[] = new ElasticSearch_SearchResult($hit, $project);
             }
         }
     }
     if (isset($result['facets']['projects'])) {
         $this->facets = new ElasticSearch_SearchResultProjectsFacetCollection($result['facets']['projects'], $project_manager, $submitted_facets);
     }
 }
예제 #22
0
 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));
 }
예제 #23
0
 public function getUserProjectsAsOptions(User $user, ProjectManager $manager, $currentProjectId)
 {
     $purifier = Codendi_HTMLPurifier::instance();
     $html = '';
     $option = '<option value="%d" title="%s">%s</option>';
     $usrProject = array_diff($user->getAllProjects(), array($currentProjectId));
     foreach ($usrProject as $projectId) {
         $project = $manager->getProject($projectId);
         if ($user->isMember($projectId, 'A') && $project->usesService(GitPlugin::SERVICE_SHORTNAME)) {
             $projectName = $project->getPublicName();
             $projectUnixName = $purifier->purify($project->getUnixName());
             $html .= sprintf($option, $projectId, $projectUnixName, $projectName);
         }
     }
     return $html;
 }
 private function getProjectFromParameters()
 {
     $project_id = $this->getProjectIdFromParameters();
     return $this->project_manager->getProject($project_id);
 }
 /**
  * Read the template and XML and mark services as being in use if they are
  * allowed in the template and enabled in the XML.
  */
 private function markUsedServicesFromXML(SimpleXMLElement $xml, $template_id, ServiceManager $service_manager = null, ProjectManager $project_manager = null)
 {
     $template = $project_manager->getProject($template_id);
     $services_by_name = array();
     foreach ($service_manager->getListOfAllowedServicesForProject($template) as $service) {
         $services_by_name[$service->getShortName()] = $service;
     }
     foreach ($xml->services->children() as $service) {
         if (!$service instanceof SimpleXMLElement) {
             continue;
         }
         if ($service->getName() !== "service") {
             continue;
         }
         $attrs = $service->attributes();
         $name = (string) $attrs['shortname'];
         $enabled = $attrs['enabled'] == 'true' || $attrs['enabled'] == '1';
         if (isset($services_by_name[$name])) {
             $service_id = $services_by_name[$name]->getId();
             $this->data_services[$service_id] = array('is_used' => $enabled);
         }
     }
 }
예제 #26
0
 /**
  * @return Project
  */
 private function getProjectFromStandardURL()
 {
     return $this->project_manager->getProject($this->matches['project_id']);
 }
 private function generateGenericUser($group_id, PFUser $user)
 {
     $project = $this->project_manager->getProject($group_id);
     return $this->getGenericUser($project, $user);
 }
예제 #28
0
-->
<html>
    <head>
    <?php 
if (session_status() != PHP_SESSION_ACTIVE) {
    session_start();
}
include_once "./Manager/ConnectionManager.php";
include_once "./Manager/ProjectManager.php";
include_once "./Manager/PhotoManager.php";
$project_id = filter_input(INPUT_GET, 'project_id');
$projectMgr = new ProjectManager();
$photoMgr = new PhotoManager();
$hdImages = $photoMgr->getHDPhotosByid($project_id);
$detailImage = $hdImages[0];
$project = $projectMgr->getProject($project_id);
$completionDate = date_create_from_format('Y-m-d H:i:s', $project['completion_date']);
?>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css">
    <link rel="stylesheet" href="./public_html/css/carouselHome.css">
    <link rel="stylesheet" href="./public_html/css/main.css">
    <link rel="stylesheet" href="./public_html/css/dmx_style.css">
    <style>
        .wrapper{
            margin-bottom: 30px;
        }
        /**** change the divider width as the side scroll bar existence ****/
        .navbar-dmx .divider{
 public function instantiateProjectFromRow(array $row)
 {
     return $this->project_manager->getProject($row['project_id']);
 }
예제 #30
0
 /**
  * Return the requested project (url parameter: group_id)
  *
  * @return Project
  */
 public function getProject()
 {
     return $this->project_manager->getProject((int) $this->get('group_id'));
 }