/** * @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; }
/** * Process CI deletion * @param Project $project * @return mixed */ protected function processCIProjectDeletion(Project $project) { $returnValues['slot_name'] = 'CI'; // Delete Jobs // Get all CI pipelines for a project $pipelines = $this->em->getRepository('SpiritDevDBoxPortalBundle:ContinuousIntegration')->findBy(array('project' => $project->getId())); // For each pipeline $pipelinesDeletion = array(); foreach ($pipelines as $pipeline) { // Delete job $jenkins_job_deletion = $this->jenkinsApi->deleteJob($pipeline->getCiName()); $pipelinesDeletion[] = array('key' => $pipeline->getCiName(), 'data' => $jenkins_job_deletion); } $returnValues['data'][] = $this->setRetVal('CI Job deletion', 'array_with_sub_key', $pipelinesDeletion); // Delete view try { $jenkins_view_deletion = $this->jenkinsApi->deleteView($project->getName()); $returnValues['data'][] = $this->setRetVal('CI View deletion', 'bool', $jenkins_view_deletion); } catch (\Exception $e) { $returnValues['data'][] = $this->setRetVal('CI View deletion', 'bool', false); } return $returnValues; }
/** * Send mail to project memebers to apply a project deletion * To project team * @param Project $project * @return mixed */ public function processProjectDeletionSendMail(Project $project) { // Define necessary vars $template = "SpiritDevDBoxPortalBundle:Mailer/Project:projectDeletion.html.twig"; // Template $subject = $this->getSubject('Project deletion - ' . $project->getName()); // Subject $renderingDatas = array('project' => $project); // Template rendering datas // Send mail(s) effectively foreach ($project->getTeamMembers() as $user) { $renderingDatas['firstname'] = $user->getFirstname(); $renderingDatas['lastname'] = $user->getLastname(); $rendered = $this->templating->render($template, $renderingDatas); // Template rendering $this->sendEmailMessage($rendered, $subject, $user->getEmail()); } }
/** * 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)); }
/** * Create project * @param Project $project * @return mixed */ public function createProject(Project $project) { // Fast Return in case of server stopped if (!$this->serverAvailable) { return null; } try { return $this->sonarClient->api('projects')->create(array("key" => $project->getCanonicalName(), "name" => $project->getName(), "branch" => 'dev')); } catch (\Exception $e) { return null; } }
/** * 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()]; }