mirror of
				https://github.com/beestat/app.git
				synced 2025-10-31 10:07:01 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			225 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace cora;
 | |
| 
 | |
| /**
 | |
|  * All of the settings used in Cora. This file should never be committed to
 | |
|  * source control and should contain all of the configuration, API keys, etc.
 | |
|  *
 | |
|  * @author Jon Ziebell
 | |
|  */
 | |
| final class setting {
 | |
| 
 | |
|   /**
 | |
|    * The singleton.
 | |
|    */
 | |
|   private static $instance;
 | |
| 
 | |
|   /**
 | |
|    * Constructor.
 | |
|    */
 | |
|   private function __construct() {}
 | |
| 
 | |
|   /**
 | |
|    * Use this function to instantiate this class instead of calling new
 | |
|    * setting() (which isn't allowed anyways). This is necessary so that the
 | |
|    * API class can have access to Setting.
 | |
|    *
 | |
|    * @return setting A new setting object or the already created one.
 | |
|    */
 | |
|   public static function get_instance() {
 | |
|     if(isset(self::$instance) === false) {
 | |
|       self::$instance = new self();
 | |
|     }
 | |
|     return self::$instance;
 | |
|   }
 | |
| 
 | |
|   private $settings = [
 | |
|     /**
 | |
|      * Which environment context the code is running in. Every setting can
 | |
|      * either be a single value or an array of values, where the key is the
 | |
|      * environment. Allows you to use a single configuration file for
 | |
|      * dev/stage/live.
 | |
|      *
 | |
|      * Setting this to dev will make it easier to debug issues as many error
 | |
|      * details are hidden in live mode.
 | |
|      *
 | |
|      * Valid values are:
 | |
|      *   dev: Development environment, points to all development resources.
 | |
|      *   stage: Staging environment, typically points to all live resources.
 | |
|      *   live: Live environment, points to all live resources.
 | |
|      */
 | |
|     'environment' => 'dev',
 | |
| 
 | |
|     /**
 | |
|      * Used to uniquely identify this particular commit.
 | |
|      */
 | |
|     'commit' => null,
 | |
| 
 | |
|     /**
 | |
|      * The beestat API key for when ecobee makes an API call to beestat.
 | |
|      *
 | |
|      * Example: 2hFpGKrsS586hHaU9g6vZZdQS586hHaUwY9kdctx
 | |
|      */
 | |
|     'ecobee_api_key_local' => '',
 | |
| 
 | |
|     /**
 | |
|      * Your ecobee Client ID; provided to you when you create an app as an
 | |
|      * ecobee developer.
 | |
|      *
 | |
|      * Example: 5tEd6Fdhw8HebcS7pD8gKtgMvuczqp88
 | |
|      */
 | |
|     'ecobee_client_id' => '',
 | |
| 
 | |
|     /**
 | |
|      * URI to redirect to after you authorize your app to access your ecobee
 | |
|      * account. Set this here and when creating your ecobee app.
 | |
|      *
 | |
|      * Example: https://beestat.io/api/ecobee_initialize.php
 | |
|      */
 | |
|     'ecobee_redirect_uri' => '',
 | |
| 
 | |
|     /**
 | |
|      * The Patreon API key for when Patreon makes an API call to beestat.
 | |
|      *
 | |
|      * Example: 2hFpGKrsS586hHaA9g6vZZdQS586hHaUwY9kdctx
 | |
|      */
 | |
|     'ecobee_api_key_local' => '',
 | |
| 
 | |
|     /**
 | |
|      * Your Patreon Client ID; provided to you when you create an app as a
 | |
|      * Patreon developer.
 | |
|      *
 | |
|      * Example: 8HebcS7pD8_d6Fdhw8Heb-ebcS7pD8gKtgMvuczq-tEd6Fdhw8Heb_S7pD8gKtgMv
 | |
|      */
 | |
|     'patreon_client_id' => '',
 | |
| 
 | |
|     /**
 | |
|      * URI to redirect to after you authorize your app to access your ecobee
 | |
|      * account. Set this here and when creating your ecobee app.
 | |
|      *
 | |
|      * Example: https://beestat.io/api/patreon_initialize.php
 | |
|      */
 | |
|     'patreon_redirect_uri' => '',
 | |
| 
 | |
|     /**
 | |
|      * Used anytime the API needs to know where the site is at. Don't forget
 | |
|      * the trailing slash.
 | |
|      *
 | |
|      * Example: https://app.beestat.io/
 | |
|      */
 | |
|     'beestat_root_uri' => '',
 | |
| 
 | |
|     /**
 | |
|      * Your Mailgun API Key.
 | |
|      *
 | |
|      * Example: 4b34e48e768fa45c4a6ac65dd4cf1da9-7e28d3c3-61713777
 | |
|      */
 | |
|     'mailgun_api_key' => '',
 | |
| 
 | |
|     /**
 | |
|      * API base URL including the sending domain. Make sure to include the
 | |
|      * trailing slash.
 | |
|      *
 | |
|      * Example: https://api.mailgun.net/v3/
 | |
|      */
 | |
|     'mailgun_base_url' => '',
 | |
| 
 | |
|     /**
 | |
|      * The specific newsletter to subscribe users to.
 | |
|      *
 | |
|      * Example: newsletter@app.beestat.io
 | |
|      */
 | |
|     'mailgun_newsletter' => '',
 | |
| 
 | |
|     /**
 | |
|      * Auth ID for Smarty Streets address verification.
 | |
|      *
 | |
|      * Example: 7vuw3NSz-TJgG-v8Af-7vuw-4TJgGS5k7vuw
 | |
|      */
 | |
|     'smarty_streets_auth_id' => '',
 | |
| 
 | |
|     /**
 | |
|      * Auth Token for Smarty Streets address verification.
 | |
|      *
 | |
|      * Example: gGS5k7vuw3NSzkRMSWNP
 | |
|      */
 | |
|     'smarty_streets_auth_token' => '',
 | |
| 
 | |
|     /**
 | |
|      * Whether or not debugging is enabled. Debugging will produce additional
 | |
|      * output in the API response.
 | |
|      */
 | |
|     'debug' => true,
 | |
| 
 | |
|     /**
 | |
|      * Primary database connection information. Must be a MySQL database.
 | |
|      */
 | |
|     'database_host' => '',
 | |
|     'database_username' => '',
 | |
|     'database_password' => '',
 | |
|     'database_name' => '',
 | |
| 
 | |
|     /**
 | |
|      * Key and project id obtained from the Sentry DSN. See sentry.io.
 | |
|      */
 | |
|     'sentry_key' => '',
 | |
|     'sentry_project_id' => '',
 | |
| 
 | |
|     /**
 | |
|      * Whether or not SSL is required.
 | |
|      */
 | |
|     'force_ssl' => true,
 | |
| 
 | |
|     /**
 | |
|      * The number of requests allowed from a given IP address per minute. Set
 | |
|      * to null to disable.
 | |
|      */
 | |
|     'requests_per_minute' => null,
 | |
| 
 | |
|     /**
 | |
|      * The number of requests allowed in a single batch API call. Set to null
 | |
|      * to disable.
 | |
|      */
 | |
|     'batch_limit' => null
 | |
|   ];
 | |
| 
 | |
|   /**
 | |
|    * Get a setting. Will return the setting for the current environment if it
 | |
|    * exists.
 | |
|    *
 | |
|    * @param string $setting The setting name.
 | |
|    *
 | |
|    * @throws \Exception If the setting does not exist.
 | |
|    *
 | |
|    * @return mixed The setting
 | |
|    */
 | |
|   public function get($setting) {
 | |
|     if(array_key_exists($setting, $this->settings) === true) {
 | |
|       if(is_array($this->settings[$setting]) === true) {
 | |
|         if(array_key_exists($this->settings['environment'], $this->settings[$setting]) === true) {
 | |
|           return $this->settings[$setting][$this->settings['environment']];
 | |
|         } else {
 | |
|           throw new \Exception('Setting does not exist for environment.');
 | |
|         }
 | |
|       } else {
 | |
|         return $this->settings[$setting];
 | |
|       }
 | |
|     } else {
 | |
|       throw new \Exception('Setting does not exist.', 1300);
 | |
|     }
 | |
|   }
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Whether or not the current configuration is running the demo.
 | |
|    *
 | |
|    * @return boolean
 | |
|    */
 | |
|   public function is_demo() {
 | |
|     return false;
 | |
|   }
 | |
| 
 | |
| }
 | |
| 
 |