public function getItem(Xinc_Project $project) { //$this->_extensions = $this->_widget->getExtensions(); $numberOfGraphs = 3; $graphHeight = 250; $statisticsMenu = new Xinc_Plugin_Repos_Gui_Menu_Extension_Item('statistics-' . $project->getName(), 'Statistics - ' . $project->getName(), './statistics/?project=' . $project->getName(), 'Statistics', '', true, false); return $statisticsMenu; }
public function testSetters() { $project = new Xinc_Project(); $name = 'test ' . rand(21213, 123213); $project->setName($name); $this->assertEquals($name, $project->getName(), 'Names should match'); $status = Xinc_Project_Status::MISCONFIGURED; $project->setStatus($status); $this->assertEquals($status, $project->getStatus(), 'Stati should match'); }
/** * Constructor, generates an Exception Message * * @param Xinc_Project $project * @param integer $buildTime */ public function __construct(Xinc_Project $project, $buildTime) { parent::__construct('Build of "' . $project->getName() . '" ' . ' with timestamp: ' . $buildTime . ' could not be serialized.'); }
public function generateStatisticsMenu(Xinc_Project $project) { $numberOfGraphs = count($this->extensions['STATISTIC_GRAPH']); $graphHeight = 350; $statisticsMenu = new Xinc_Plugin_Repos_Gui_Menu_Extension_Item('statistics-' . $project->getName(), 'Statistics', './statistics/?project=' . $project->getName(), 'Statistics - ' . $project->getName(), '', true, false); return $statisticsMenu; }
/** * deletes a build from the history * * @param string $projectName * @param mixed $timestamp Either the integer unix timestamp * or timeformat: "YYYY-MM-DD HH:MI:SS-TZ" */ public static function deleteBuild($projectName, $timestamp) { Xinc_Logger::getInstance()->setLogLevel(0); $project = new Xinc_Project(); $project->setName($projectName); $metaFileArr = self::_loadMetaData($project->getName()); $testTimestamp = (int) $timestamp; if ($testTimestamp . "" != $timestamp) { /** * try and see if we have a string * in format: YYYY-MM-DD HH:MI:SS-TIMEZONE */ $timeParts = split('-', $timestamp); $timeYear = $timeParts[0]; $timeMonth = $timeParts[1]; list($timeDay, $timeTime) = split(' ', $timeParts[2]); $timeZone = $timeParts[3]; $timestamp = strtotime("{$timeYear}-{$timeMonth}-{$timeDay} {$timeTime} {$timeZone}"); } if (!isset($metaFileArr['meta'])) { self::_migrate($project->getName(), $metaFileArr); $metaFileArr = self::_loadMetaData($project->getName()); } $writeMetaFile = false; foreach ($metaFileArr['parts'] as $idx => $part) { if ($part['from'] <= $timestamp && $part['to'] >= $timestamp) { /** * this is the meta file we need */ $partNo = $part['no']; $partArr = self::_readPartFile($project->getName(), $partNo); $newArr = array(); $found = false; $deleteDir = null; $beforeTimestamp = null; $afterTimestamp = null; $lastTimeStamp = null; foreach ($partArr as $compareTimestamp => $serialFileName) { if ($compareTimestamp == $timestamp) { /** * we delete by not adding it again */ $found = true; $deleteDir = dirname($serialFileName); $beforeTimestamp = $lastTimeStamp; $metaFileArr['parts'][$idx]['count'] = $metaFileArr['parts'][$idx]['count'] - 1; $writeMetaFile = true; } else { if ($found && $afterTimestamp == null) { $afterTimestamp = $compareTimestamp; } $newArr[$compareTimestamp] = $serialFileName; } $lastTimeStamp = $compareTimestamp; } //var_dump($deleteDir); //die; if ($found) { try { /** * if this is the only build, we need to delete the part from meta */ if ($timestamp == $part['from'] && $timestamp == $part['to']) { unset($metaFileArr['lastSuccessfulBuild']); unset($metaFileArr['parts'][$idx]); $writeMetaFile = true; } else { if ($timestamp == $part['from']) { if (isset($afterTimestamp)) { $metaFileArr['parts'][$idx]['from'] = $afterTimestamp; $writeMetaFile = true; } } else { if ($timestamp == $part['to']) { if (isset($beforeTimestamp)) { $metaFileArr['parts'][$idx]['to'] = $beforeTimestamp; $writeMetaFile = true; } } } } if ($timestamp == $metaFileArr['lastSuccessfulBuild']['buildtime']) { /** * we need to find the last successful build, before this build */ $reverseMetaArr = array_reverse($metaFileArr['parts'], true); foreach ($metaFileArr['parts'] as $idx => $part) { if ($part['no'] == $partNo) { $testPartArr = $newArr; } else { $testPartArr = self::_readPartFile($project->getName(), $partNo); } $testPartArr = array_reverse($testPartArr, true); foreach ($testPartArr as $testCompareTimestamp => $testSerialFileName) { if (file_exists($testSerialFileName)) { try { $testPart = Xinc_Build::unserialize($project, $testCompareTimestamp, self::_getStatusDir()); } catch (Exception $e) { //var_dump($e); } if ($testPart->getStatus() == Xinc_Build_Interface::PASSED) { $metaFileArr['lastSuccessfulBuild']['buildtime'] = $testCompareTimestamp; $metaFileArr['lastSuccessfulBuild']['filename'] = $testSerialFileName; $writeMetaFile = true; break; } } } } //die; } self::_writePartFile($project->getName(), $partNo, $newArr); Xinc_Logger::getInstance()->info('Successfully written modified metadata'); if ($writeMetaFile) { self::_writeMetaData($projectName, $metaFileArr); Xinc_Logger::getInstance()->info('Successfully written modified meta superdata'); } $deleteDir = realpath($deleteDir); $statusDir = self::_getStatusDir(); $statusDir = realpath($statusDir); /** * make sure we are only deleting inside the status dir */ if (substr($deleteDir, 0, strlen($statusDir)) == $statusDir && strlen($deleteDir) > strlen($statusDir)) { exec('rm -Rf ' . $deleteDir, $output, $res); } else { $res = -1; } //$res = 1; if ($res != 0) { Xinc_Logger::getInstance()->error('Could not delete build directory: ' . $deleteDir); return false; } else { Xinc_Logger::getInstance()->info('Successfully deleted build directory: ' . $deleteDir); return true; } } catch (Exception $e) { Xinc_Logger::getInstance()->error('Could not write modified metadata'); } break; } return false; } } }
/** * Constructor, generates an Exception Message * * @param Xinc_Project $project * @param integer $buildTime */ public function __construct(Xinc_Project $project, $buildTime) { parent::__construct('Build "' . $project->getName() . '" ' . 'with timestamp ' . $buildTime . ' was not found.'); }