<?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']; } }