/** * @param Project $project * @return array|\Gitlab\Model\Project|null */ public function createProject(Project $project) { // Fast Return in case of server stopped if (!$this->isServerAvailable()) { return null; } // Creating project $gitLabProject = \Gitlab\Model\Project::create($this->gitLabClient, $project->getName(), array('description' => $project->getDescription(), 'issue_enabled' => $project->isGitLabIssueEnabled(), 'wiki_enabled' => $project->isGitLabWikiEnabled(), 'snippets_enabled' => $project->isGitLabSnippetsEnabled(), 'builds_enabled' => false)); // returning created object return $gitLabProject; }
/** * New demand project related * To user * To admin * @param Demand $demand * @param Project $project */ public function projectRequestSendMail(Demand $demand, Project $project) { // User mail $template = "SpiritDevDBoxPortalBundle:Mailer/Project:projectRequest.html.twig"; // Template $subject = $this->getSubject('Project creation request - ' . $project->getName()); // Subject $demandUrl = $this->router->generate('spirit_dev_dbox_portal_bundle_demand', array('id' => $demand->getId()), true); $rendered = $this->templating->render($template, array('firstname' => $demand->getApplicant()->getFirstName(), 'lastname' => $demand->getApplicant()->getLastName(), 'project_name' => $project->getName(), 'project_description' => $project->getDescription(), 'project_owner' => $project->getOwner(), 'project_team' => $project->getTeamMembers(), 'demand_url' => $demandUrl)); // Template rendering // Send mail effectively $this->sendEmailMessage($rendered, $subject, $demand->getApplicant()->getEmail()); // Admin mail $this->sendNewDemandAdminMail($demand, 'Admin - Project creation request - '); }
/** * Update project * @param Project $project * @return mixed */ public function updateProject(Project $project) { // Fast Return in case of server stopped if (!$this->serverAvailable) { return null; } $xml = new \SimpleXMLElement('<?xml version="1.0"?><project></project>'); $xml->addChild('name', $project->getName()); $xml->addChild('identifier', $this->defineIdentifier($project->getName())); $xml->addChild('description', $project->getDescription()); $xml->addChild('homepage', $this->defineHomepage($project->getName())); $xml->addChild('is_public', 'false'); // Adding modules foreach ($this->pmModules as $pmModule) { $xml->addChild('enabled_module_names', $pmModule); } return $this->sendRequest("/projects/" . $project->getRedmineProjectId() . ".xml", $xml->asXML(), 'PUT', array('Content-Type: text/xml'), true, array(CURLOPT_VERBOSE => 0, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1)); }
/** * Setting demand content * @param Project $project * @return array */ private function setContentData(Project $project) { $owner = $project->getOwner()->getCommonName(); $teamMembersArray = ""; $teamMembers = $project->getTeamMembers(); $tml = count($teamMembers); $tmc = 1; foreach ($teamMembers as $member) { $teamMembersArray .= $member->getCommonName(); if ($tmc < $tml) { $teamMembersArray .= ", "; } $tmc++; } return ["name" => $project->getName(), "description" => $project->getDescription(), "owner" => $owner, "team_members" => $teamMembersArray, "git_issues" => $project->isGitLabIssueEnabled(), "git_wiki" => $project->isGitLabWikiEnabled(), "git_snippets" => $project->isGitLabSnippetsEnabled(), "id" => $project->getId()]; }