%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/modules/bitrixcloud/classes/general/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/modules/bitrixcloud/classes/general/monitoring_result.php |
<?php interface CBitrixCloudMonitoring_Access extends Iterator, ArrayAccess { // new stuff } class CBitrixCloudMonitoringTest { private $name = ""; private $status = ""; private $time = 0; private $uptime = ""; private $result = ""; /** * * @param string $name * @param string $status * @param int $time UTC timestamp * @param string $result * @return void * */ public function __construct($name, $status, $time, $uptime, $result) { $this->name = $name; $this->status = $status; $this->time = $time; $this->uptime = $uptime; $this->result = $result; } /** * * @return string * */ public function getName() { return $this->name; } /** * * @return string * */ public function getStatus() { return $this->status; } /** * * @return string * */ public function getResult() { return $this->result; } /** * * @return string * */ public function getUptime() { return $this->uptime; } /** * * @return string * */ public function getTime() { return $this->time; } /** * * @param CDataXMLNode $node * @return CBitrixCloudMonitoringTest * */ public static function fromXMLNode(CDataXMLNode $node) { return new CBitrixCloudMonitoringTest( $node->getAttribute("id"), $node->getAttribute("status") == 2? CBitrixCloudMonitoringResult::RED_LAMP: CBitrixCloudMonitoringResult::GREEN_LAMP, strtotime($node->getAttribute("time")), $node->getAttribute("uptime"), $node->textContent() ); } } class CBitrixCloudMonitoringDomainResult implements CBitrixCloudMonitoring_Access { /** @var string $name */ private $name = ""; /** @var array[int]CBitrixCloudMonitoringTest $tests */ private $tests = /*.(array[int]CBitrixCloudMonitoringTest.*/ array(); /** * * @return string * */ public function getName() { return $this->name; } /** * * @return string * */ public function getStatus() { foreach ($this->tests as $testName => $testResult) { if ($testResult->getStatus() === CBitrixCloudMonitoringResult::RED_LAMP) return CBitrixCloudMonitoringResult::RED_LAMP; } return CBitrixCloudMonitoringResult::GREEN_LAMP; } /** * * @param string $name * @param array [int]CBitrixCloudMonitoringTest $tests * @return void * */ public function __construct($name, array $tests) { $this->name = $name; $this->setTests($tests); } /** * * @param string $testName * @return CBitrixCloudMonitoringTest * */ public function getTestByName($testName) { return $this->tests[$testName]; } /** * * @return array[int]CBitrixCloudMonitoringTest * */ public function getTests() { return $this->tests; } /** * * @param array [int]CBitrixCloudMonitoringTest $tests * @return CBitrixCloudMonitoringDomainResult * */ public function setTests(array $tests) { foreach ($tests as $test) { if ( is_object($test) && $test instanceof CBitrixCloudMonitoringTest ) { $this->tests[$test->getName()] = $test; } } return $this; } public function saveToOptions(CBitrixCloudOption $option) { $tests = array(); foreach ($this->tests as $testName => $testResult) { $tests[$testName] = serialize(array( "status" => $testResult->getStatus(), "time" => $testResult->getTime(), "uptime" => $testResult->getUptime(), "result" => $testResult->getResult(), )); } $option->setArrayValue($tests); } public static function loadFromOptions($name, CBitrixCloudOption $option) { $tests = array(); foreach ($option->getArrayValue() as $testName => $testResult) { $testResult = unserialize($testResult); if (is_array($testResult)) { $test = new CBitrixCloudMonitoringTest( $testName, $testResult["status"], $testResult["time"], $testResult["uptime"], $testResult["result"] ); $tests[$test->getName()] = $test; } } return new CBitrixCloudMonitoringDomainResult($name, $tests); } /** * * @param CDataXMLNode $node * @return CBitrixCloudMonitoringDomainResult * */ public static function fromXMLNode(CDataXMLNode $node) { $name = $node->getAttribute("name"); $tests = array(); foreach ($node->children() as $nodeTest) { $tests[] = CBitrixCloudMonitoringTest::fromXMLNode($nodeTest); } return new CBitrixCloudMonitoringDomainResult($name, $tests); } public function rewind() { reset($this->tests); } public function current() { return current($this->tests); } public function key() { return key($this->tests); } public function next() { next($this->tests); } public function valid() { return key($this->tests) !== null; } public function offsetSet($offset, $value) { if (is_null($offset)) { $this->tests[] = $value; } else { $this->tests[$offset] = $value; } } public function offsetExists($offset) { return isset($this->tests[$offset]); } public function offsetUnset($offset) { unset($this->tests[$offset]); } public function offsetGet($offset) { return isset($this->tests[$offset])? $this->tests[$offset]: null; } } class CBitrixCloudMonitoringResult implements CBitrixCloudMonitoring_Access { const GREEN_LAMP = 'green'; const RED_LAMP = 'red'; private $domains = /*.(array[string]CBitrixCloudMonitoringDomainResult).*/ array(); /** * * @param CBitrixCloudMonitoringDomainResult $domainResult * @return CBitrixCloudMonitoringResult * */ public function addDomainResult(CBitrixCloudMonitoringDomainResult $domainResult) { $this->domains[$domainResult->getName()] = $domainResult; return $this; } /** * * @param string $domainName * @return CBitrixCloudMonitoringDomainResult * */ public function getResultByDomainName($domainName) { return $this->domains[$domainName]; } /** * * @return string * */ public function getStatus() { foreach ($this->domains as $domainName => $domainResult) { if ($domainResult->getStatus() === CBitrixCloudMonitoringResult::RED_LAMP) return CBitrixCloudMonitoringResult::RED_LAMP; } return CBitrixCloudMonitoringResult::GREEN_LAMP; } public static function isExpired() { $time = CBitrixCloudOption::getOption("monitoring_expire_time")->getIntegerValue(); return ($time < time()); } public static function getExpirationTime() { return CBitrixCloudOption::getOption("monitoring_expire_time")->getIntegerValue(); } public static function setExpirationTime($time) { $time = intval($time); CBitrixCloudOption::getOption("monitoring_expire_time")->setStringValue($time); return $time; } public static function loadFromOptions() { $domains = new CBitrixCloudMonitoringResult; foreach (CBitrixCloudOption::getOption("monitoring_result")->getArrayValue() as $i => $domainName) { $domains->addDomainResult(CBitrixCloudMonitoringDomainResult::loadFromOptions( $domainName, CBitrixCloudOption::getOption("monitoring_result_$i") )); } return $domains; } public function saveToOptions() { $domainNames = array_keys($this->domains); CBitrixCloudOption::getOption("monitoring_result")->setArrayValue($domainNames); foreach ($domainNames as $i => $domainName) { $this->domains[$domainName]->saveToOptions( CBitrixCloudOption::getOption("monitoring_result_$i") ); } } /** * * @param CDataXMLNode $node * @return CBitrixCloudMonitoringResult * */ public static function fromXMLNode(CDataXMLNode $node) { $domains = new CBitrixCloudMonitoringResult; if (is_array($node->children())) { foreach ($node->children() as $sub_node) { $domains->addDomainResult(CBitrixCloudMonitoringDomainResult::fromXMLNode($sub_node)); } } return $domains; } public function rewind() { reset($this->domains); } public function current() { return current($this->domains); } public function key() { return key($this->domains); } public function next() { next($this->domains); } public function valid() { return key($this->domains) !== null; } public function offsetSet($offset, $value) { if (is_null($offset)) { $this->domains[] = $value; } else { $this->domains[$offset] = $value; } } public function offsetExists($offset) { return isset($this->domains[$offset]); } public function offsetUnset($offset) { unset($this->domains[$offset]); } public function offsetGet($offset) { return isset($this->domains[$offset])? $this->domains[$offset]: null; } }