[ Index ] |
PHP Cross Reference of YOURLS |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * Define the YOURLS config 5 */ 6 7 namespace YOURLS\Config; 8 9 use YOURLS\Exceptions\ConfigException; 10 11 class Config { 12 13 /** 14 * @var string 15 */ 16 protected $root; 17 18 /** 19 * @var string 20 */ 21 protected $config; 22 23 /** 24 * @since 1.7.3 25 * @param string $config Optional user defined config path 26 */ 27 public function __construct($config = '') { 28 $this->set_root( $this->fix_win32_path( dirname( dirname( __DIR__ ) ) ) ); 29 $this->set_config($config); 30 } 31 32 /** 33 * Convert antislashes to slashes 34 * 35 * @since 1.7.3 36 * @param string $path 37 * @return string path with \ converted to / 38 */ 39 public function fix_win32_path($path) { 40 return str_replace('\\', '/', $path); 41 } 42 43 /** 44 * @since 1.7.3 45 * @param string $config path to config file 46 * @return void 47 */ 48 public function set_config($config) { 49 $this->config = $config; 50 } 51 52 /** 53 * @since 1.7.3 54 * @param string $root path to YOURLS root directory 55 * @return void 56 */ 57 public function set_root($root) { 58 $this->root = $root; 59 } 60 61 /** 62 * Find config.php, either user defined or from standard location 63 * 64 * @since 1.7.3 65 * @return string path to found config file 66 * @throws ConfigException 67 */ 68 public function find_config() { 69 70 $config = $this->fix_win32_path($this->config); 71 72 if (!empty($config) && is_readable($config)) { 73 return $config; 74 } 75 76 if (!empty($config) && !is_readable($config)) { 77 throw new ConfigException("User defined config not found at '$config'"); 78 } 79 80 // config.php in /user/ 81 if (file_exists($this->root . '/user/config.php')) { 82 return $this->root . '/user/config.php'; 83 } 84 85 // config.php in /includes/ 86 if (file_exists($this->root . '/includes/config.php')) { 87 return $this->root . '/includes/config.php'; 88 } 89 90 // config.php not found :( 91 92 throw new ConfigException('Cannot find config.php. Please read the readme.html to learn how to install YOURLS'); 93 } 94 95 /** 96 * Define core constants that have not been user defined in config.php 97 * 98 * @since 1.7.3 99 * @return void 100 * @throws ConfigException 101 */ 102 public function define_core_constants() { 103 // Check minimal config job has been properly done 104 $must_haves = array('YOURLS_DB_USER', 'YOURLS_DB_PASS', 'YOURLS_DB_NAME', 'YOURLS_DB_HOST', 'YOURLS_DB_PREFIX', 'YOURLS_SITE'); 105 foreach($must_haves as $must_have) { 106 if (!defined($must_have)) { 107 throw new ConfigException('Config is incomplete (missing at least '.$must_have.') Check config-sample.php and edit your config accordingly'); 108 } 109 } 110 111 /** 112 * The following has an awful CRAP index and it would be much shorter reduced to something like 113 * defining an array of ('YOURLS_SOMETHING' => 'default value') and then a simple loop over the 114 * array, checking if $current is defined as a constant and otherwise define said constant with 115 * its default value. I did not wrote it that way because that would make it difficult for code 116 * parsers to identify which constants are defined and where. So, here it is, that long list of 117 * if (!defined) define(). Ho and by the way, such beautiful comment, much right aligned, wow ! 118 */ 119 120 // physical path of YOURLS root 121 if (!defined( 'YOURLS_ABSPATH' )) 122 define('YOURLS_ABSPATH', $this->root); 123 124 // physical path of includes directory 125 if (!defined( 'YOURLS_INC' )) 126 define('YOURLS_INC', YOURLS_ABSPATH.'/includes'); 127 128 // physical path of user directory 129 if (!defined( 'YOURLS_USERDIR' )) 130 define( 'YOURLS_USERDIR', YOURLS_ABSPATH.'/user' ); 131 132 // URL of user directory 133 if (!defined( 'YOURLS_USERURL' )) 134 define( 'YOURLS_USERURL', trim(YOURLS_SITE, '/').'/user' ); 135 136 // physical path of asset directory 137 if( !defined( 'YOURLS_ASSETDIR' ) ) 138 define( 'YOURLS_ASSETDIR', YOURLS_ABSPATH.'/assets' ); 139 140 // URL of asset directory 141 if( !defined( 'YOURLS_ASSETURL' ) ) 142 define( 'YOURLS_ASSETURL', trim(YOURLS_SITE, '/').'/assets' ); 143 144 // physical path of translations directory 145 if (!defined( 'YOURLS_LANG_DIR' )) 146 define( 'YOURLS_LANG_DIR', YOURLS_USERDIR.'/languages' ); 147 148 // physical path of plugins directory 149 if (!defined( 'YOURLS_PLUGINDIR' )) 150 define( 'YOURLS_PLUGINDIR', YOURLS_USERDIR.'/plugins' ); 151 152 // URL of plugins directory 153 if (!defined( 'YOURLS_PLUGINURL' )) 154 define( 'YOURLS_PLUGINURL', YOURLS_USERURL.'/plugins' ); 155 156 // physical path of themes directory 157 if( !defined( 'YOURLS_THEMEDIR' ) ) 158 define( 'YOURLS_THEMEDIR', YOURLS_USERDIR.'/themes' ); 159 160 // URL of themes directory 161 if( !defined( 'YOURLS_THEMEURL' ) ) 162 define( 'YOURLS_THEMEURL', YOURLS_USERURL.'/themes' ); 163 164 // physical path of pages directory 165 if (!defined( 'YOURLS_PAGEDIR' )) 166 define('YOURLS_PAGEDIR', YOURLS_USERDIR.'/pages' ); 167 168 // table to store URLs 169 if (!defined( 'YOURLS_DB_TABLE_URL' )) 170 define( 'YOURLS_DB_TABLE_URL', YOURLS_DB_PREFIX.'url' ); 171 172 // table to store options 173 if (!defined( 'YOURLS_DB_TABLE_OPTIONS' )) 174 define( 'YOURLS_DB_TABLE_OPTIONS', YOURLS_DB_PREFIX.'options' ); 175 176 // table to store hits, for stats 177 if (!defined( 'YOURLS_DB_TABLE_LOG' )) 178 define( 'YOURLS_DB_TABLE_LOG', YOURLS_DB_PREFIX.'log' ); 179 180 // minimum delay in sec before a same IP can add another URL. Note: logged in users are not throttled down. 181 if (!defined( 'YOURLS_FLOOD_DELAY_SECONDS' )) 182 define( 'YOURLS_FLOOD_DELAY_SECONDS', 15 ); 183 184 // comma separated list of IPs that can bypass flood check. 185 if (!defined( 'YOURLS_FLOOD_IP_WHITELIST' )) 186 define( 'YOURLS_FLOOD_IP_WHITELIST', '' ); 187 188 // life span of an auth cookie in seconds (60*60*24*7 = 7 days) 189 if (!defined( 'YOURLS_COOKIE_LIFE' )) 190 define( 'YOURLS_COOKIE_LIFE', 60*60*24*7 ); 191 192 // life span of a nonce in seconds 193 if (!defined( 'YOURLS_NONCE_LIFE' )) 194 define( 'YOURLS_NONCE_LIFE', 43200 ); // 3600 * 12 195 196 // if set to true, disable stat logging (no use for it, too busy servers, ...) 197 if (!defined( 'YOURLS_NOSTATS' )) 198 define( 'YOURLS_NOSTATS', false ); 199 200 // if set to true, force https:// in the admin area 201 if (!defined( 'YOURLS_ADMIN_SSL' )) 202 define( 'YOURLS_ADMIN_SSL', false ); 203 204 // if set to true, verbose debug infos. Will break things. Don't enable. 205 if (!defined( 'YOURLS_DEBUG' )) 206 define( 'YOURLS_DEBUG', false ); 207 208 // Error reporting 209 if (defined( 'YOURLS_DEBUG' ) && YOURLS_DEBUG == true ) { 210 error_reporting( -1 ); 211 } else { 212 error_reporting( E_ERROR | E_PARSE ); 213 } 214 } 215 216 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Jan 21 05:10:11 2025 | Cross-referenced by PHPXref 0.7.1 |