blob: bd33cbe467c6ff5676ba933ce9a36e49c3188d4a [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2016 Eclipse Foundation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christopher Guindon (Eclipse Foundation)- initial API and implementation
*******************************************************************************/
require_once("app.class.php");
require_once("evt_log.class.php");
require_once("smartconnection.class.php");
/**
* Base class
*
* @author chrisguindon
*/
class EclipseEnv {
/**
* The Eclipse App() class.
* This is useful for making calls to our databases.
*/
protected $App = NULL;
/**
* Debug mode state
*
* @var bool
*/
protected $debug_mode = FALSE;
/**
* Cookie domain value
*
* @var string
*/
protected $prefix_cookie = '';
/**
* Eclipse dev domain prefix
*
* This could be dev.eclipse.org, dev.eclipse.local
*
* @var string
*/
protected $prefix_devdomain = '';
/**
* Eclipse domain prefix
*
* This could be www.eclipse.org, staging.eclipse.org or
* www.eclipse.local
*
* @var string
*/
protected $prefix_domain = '';
/**
* Constructor
*/
public function __construct(App $App = NULL) {
if (is_null($App)) {
require_once("app.class.php");
$App = new App();
}
$this->App = $App;
$this->_set_prefix();
if ($this->getEnvShortName() != 'prod') {
$this->_set_debug_mode(TRUE);
}
}
/**
* Get eclipse.org cookie domain and prefix based off the current environment
*
* @return array
*/
public function getEclipseEnv(){
// @todo: allowed_hosts is deprecated
$server['dev'] = array(
'shortname' => 'local',
'cookie' => '.dev.docker',
'domain' => 'www.eclipse.php53.dev.docker',
'dev_domain' => 'dev_eclipse.php53.dev.docker',
'accounts' => 'accounts.php55.dev.docker',
'api' => 'api.php55.dev.docker',
'allowed_hosts' => array(
'eclipse.local',
'www.eclipse.local',
'dev.eclipse.local',
'docker.local'
),
);
$server['staging'] = array(
'shortname' => 'staging',
'cookie' => '.eclipse.org',
'domain' => 'staging.eclipse.org',
// We currently dont have a staging server for dev.eclipse.org
'dev_domain' => 'dev.eclipse.org',
'accounts' => 'accounts-staging.eclipse.org',
'api' => 'api-staging.eclipse.org',
'allowed_hosts' => array(
'staging.eclipse.org'
),
);
$server['prod'] = array(
'shortname' => 'prod',
'cookie' => '.eclipse.org',
'domain' => 'www.eclipse.org',
'dev_domain' => 'dev.eclipse.org',
'accounts' => 'accounts.eclipse.org',
'api' => 'api.eclipse.org',
'allowed_hosts' => array(
// Empty, since it's the default.
),
);
if (strpos($_SERVER['HTTP_HOST'], '.docker') !== FALSE) {
return $server['dev'];
}
if (strpos($_SERVER['HTTP_HOST'], 'staging') !== FALSE) {
return $server['staging'];
}
return $server['prod'];
}
/**
* Get shortname
*/
public function getEnvShortName(){
$domain = $this->getEclipseEnv();
return $domain['shortname'];
}
/**
* Get debug mode value
*
* @return Ambigous <boolean, string>
*/
public function _get_debug_mode() {
return $this->debug_mode;
}
/**
* Get domain prefix
*/
protected function _get_prefix_domain() {
return $this->prefix_domain;
}
/**
* Get devdomain prefix
*/
protected function _get_prefix_devdomain() {
return $this->prefix_devdomain;
}
/**
* Get cookie prefix
*/
protected function _get_prefix_cookie() {
return $this->prefix_cookie;
}
/**
* Enable/disable debug/sandbox mode
*/
protected function _set_debug_mode($debug_mode = FALSE){
$this->debug_mode = $debug_mode;
}
/**
* Set Eclipse domain and Eclipse cookie domain
*/
protected function _set_prefix() {
$domain = $this->getEclipseEnv();
$this->prefix_domain = $domain['domain'];
$this->prefix_devdomain = $domain['dev_domain'];
$this->prefix_cookie = $domain['cookie'];
}
}