// ngi1 has one scope $ngi1->addScope($scopes[0]); // ngi2 has 2 scopes $ngi2->addScope($scopes[0]); $ngi2->addScope($scopes[1]); // ngi3 has 3 scopes $ngi3->addScope($scopes[0]); $ngi3->addScope($scopes[1]); $ngi3->addScope($scopes[2]); // ngi4 has all scopes for ($i = 0; $i < $scopeCount; $i++) { $ngi4->addScope($scopes[$i]); } // NGIs **************************** // At least one certStatus is needed for the tests $certStatus = new CertificationStatus(); $certStatus->setName('Certified'); $this->em->persist($certStatus); // Sites: all have same 'Certified' cert status // **************************** $site0 = TestUtil::createSampleSite("Site0"); $site0->setCertificationStatus($certStatus); $site1 = TestUtil::createSampleSite("Site1"); $site1->setCertificationStatus($certStatus); $site2 = TestUtil::createSampleSite("Site2"); $site2->setCertificationStatus($certStatus); $site3 = TestUtil::createSampleSite("Site3"); $site3->setCertificationStatus($certStatus); $site4 = TestUtil::createSampleSite("Site4"); $site4->setCertificationStatus($certStatus); $this->em->persist($site0);
/** * Check for invalid cert status changes. * The following transitions are valid: * <ul> * <li>candidate -> uncertified</li> * <li>candidate -> closed</li> * <li>uncertified -> certified</li> * <li>certified -> suspended</li> * <li>certified -> closed (on site request)</li> * <li>suspended -> uncertified</li> * <li>suspended -> closed</li> * </ul> * The following are forbidden: * <ul> * <li>suspended -> certified</li> * <li>candidate -> something else but uncertified and closed</li> * <li>closed -> anything else</li> * </ul> * https://wiki.egi.eu/wiki/GOCDB/Input_System_User_Documentation#Changing_Site_Certification_Status * @param \Site $site * @param \CertificationStatus $newCertStatus * @throws \Exception if the change is invalid */ public function isChangeValid(\Site $site, \CertificationStatus $newCertStatus) { $oldStatus = $site->getCertificationStatus()->getName(); $newStatus = $newCertStatus->getName(); // This exception is only thrown if the transition is invalid $error = "A Certification Status can't transition from {$oldStatus} to {$newStatus}."; $e = new \Exception($error); if ($oldStatus === 'Suspended' && $newStatus === 'Certified') { throw $e; } if ($oldStatus === 'Closed') { throw $e; } // forbidden: candidate -> any other status except uncertified and closed if ($oldStatus == 'Candidate') { if ($newStatus !== 'Uncertified' && $newStatus !== 'Closed') { throw $e; } } }
<?php require_once __DIR__ . "/../bootstrap.php"; require_once __DIR__ . "/AddUtils.php"; /* AddNGIs.php: Loads a list of cert statuses from an XML file and inserts them into * the doctrine prototype. * XML format is the xml input format of the cert status seed data */ $certStatsFileName = __DIR__ . "/" . $GLOBALS['dataDir'] . "/CertificationStatuses.xml"; $certStats = simplexml_load_file($certStatsFileName); foreach ($certStats as $certStat) { $doctrineCertStat = new CertificationStatus(); $name = ""; foreach ($certStat as $key => $value) { if ($key == "name") { $name = (string) $value; } } $doctrineCertStat->setName($name); $entityManager->persist($doctrineCertStat); } $entityManager->flush();