Files
iTop/sources/Application/Status/Status.php

91 lines
2.2 KiB
PHP

<?php
namespace Combodo\iTop\Application\Status;
use Config;
use Exception;
use MetaModel;
define('STATUS_ERROR', 'ERROR');
define('STATUS_RUNNING', 'RUNNING');
class Status
{
/**
* @throws \CoreException
* @throws \DictExceptionUnknownLanguage
* @throws \MySQLException
*/
public function __construct(Config $oConfig = null)
{
$this->StatusStartup($oConfig);
}
/**
* Get approot.inc.php
* Move to a function for allowing a better testing
*
* @param string $sAppRootFilename
*
* @throws \Exception
*/
private function StatusGetAppRoot($sAppRootFilename = 'approot.inc.php')
{
$sAppRootFile = __DIR__.'/../../../'.$sAppRootFilename;
/*
* Check that the approot file exists and has the appropriate access rights
*/
if (!file_exists($sAppRootFile) || !is_readable($sAppRootFile)) {
throw new Exception($sAppRootFilename.' is not readable');
}
@require_once($sAppRootFile);
}
/**
* Check iTop's config File existence and readability
* Move to a function for allowing a better testing
*
* @param string $sConfigFilename
*
* @throws \Exception
*/
private function StatusCheckConfigFile($sConfigFilename = 'config-itop.php')
{
$this->StatusGetAppRoot();
$sConfigFile = APPCONF.ITOP_DEFAULT_ENV.'/'.$sConfigFilename;
/**
* Check that the configuration file exists and has the appropriate access rights
*/
if (!file_exists($sConfigFile) || !is_readable($sConfigFile)) {
throw new Exception($sConfigFilename.' is not readable');
}
}
/**
* Start iTop's application for checking with its internal basic test every it's alright (DB connection, ...)
* Move to a function for allowing a better testing
*
* @param \Config|null $oConfig
*
* @throws \CoreException
* @throws \DictExceptionUnknownLanguage
* @throws \MySQLException
*/
private function StatusStartup(Config $oConfig = null)
{
$this->StatusCheckConfigFile();
require_once(APPROOT.'/core/cmdbobject.class.inc.php');
require_once(APPROOT.'/application/utils.inc.php');
require_once(APPROOT.'/core/contexttag.class.inc.php');
$soConfigFile = (null === $oConfig) ? ITOP_DEFAULT_CONFIG_FILE : $oConfig;
//Check if application could be started
MetaModel::Startup($soConfigFile, true);
}
}