/** * Constructor * * @param Bugsnag_Client $bugsnag */ public function __construct(Bugsnag_Client $bugsnag, ReleaseStageInterface $releaseStage = null) { $this->bugsnag = $bugsnag; if (!$releaseStage) { $releaseStage = new ReleaseStage(); } $this->bugsnag->setReleaseStage($releaseStage->get()); }
/** * Get release stage * * @SuppressWarnings(PHPMD.Superglobals) * @SuppressWarnings(PHPMD.NPathComplexity) * * @return string $releaseStage */ public function get() { // Check if current set if (is_null(self::$current)) { // Get environment variable (if set and valid) $releaseStage = trim(getenv('RELEASE_STAGE')); $releaseStage = in_array($releaseStage, $this->getAll()) ? $releaseStage : null; // If environment variable not set/valid, try to detect staging environment by url or path if (is_null($releaseStage)) { // Create paths variable with host name, document root and file path $paths = __FILE__ . (array_key_exists('HTTP_HOST', $_SERVER) ? $_SERVER['HTTP_HOST'] : '') . (array_key_exists('DOCUMENT_ROOT', $_SERVER) ? $_SERVER['DOCUMENT_ROOT'] : ''); // Now check if paths variable contains "stage" or "staging" keywords if (strpos($paths, 'stage') !== false || strpos($paths, 'staging') !== false) { // Set release stage to staging $releaseStage = self::STAGING; } elseif (strpos(__FILE__, '/home') !== false && strpos(__FILE__, 'vhosts') !== false || file_exists('/home/vagrant')) { //Check for dev environment that works with cli scripts $releaseStage = self::DEVELOPMENT; } } // If environment variable still not set, assume we are in production! $releaseStage = is_null($releaseStage) ? self::PRODUCTION : $releaseStage; self::$current = $releaseStage; } return self::$current; }