/**
  * 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;
 }