Нет описания

Env.php 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace MailPoet\Config;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\WP\Functions as WPFunctions;
  5. class Env {
  6. const NEWSLETTER_CONTENT_WIDTH = 1320;
  7. public static $version;
  8. public static $pluginName;
  9. public static $pluginPath;
  10. public static $baseUrl;
  11. public static $file;
  12. public static $path;
  13. public static $viewsPath;
  14. public static $assetsPath;
  15. public static $assetsUrl;
  16. public static $utilPath;
  17. public static $tempPath;
  18. public static $cachePath;
  19. public static $tempUrl;
  20. public static $languagesPath;
  21. public static $libPath;
  22. public static $pluginPrefix;
  23. public static $dbPrefix;
  24. public static $dbHost;
  25. public static $dbIsIpv6;
  26. public static $dbSocket;
  27. public static $dbPort;
  28. public static $dbName;
  29. public static $dbUsername;
  30. public static $dbPassword;
  31. public static $dbCharset;
  32. public static $dbCollation;
  33. public static $dbCharsetCollate;
  34. public static $dbTimezoneOffset;
  35. // back compatibility for older Premium plugin with underscore naming
  36. // (we need to allow it to activate so it can render an update notice)
  37. public static $plugin_name; // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
  38. public static $temp_path; // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
  39. public static function init($file, $version, $dbHost, $dbUser, $dbPassword, $dbName) {
  40. self::$version = $version;
  41. self::$file = $file;
  42. self::$path = dirname(self::$file);
  43. self::$pluginName = 'mailpoet';
  44. self::$pluginPath = 'mailpoet/mailpoet.php';
  45. self::$baseUrl = WPFunctions::get()->pluginsUrl('', $file);
  46. self::$viewsPath = self::$path . '/views';
  47. self::$assetsPath = self::$path . '/assets';
  48. self::$assetsUrl = WPFunctions::get()->pluginsUrl('/assets', $file);
  49. self::$utilPath = self::$path . '/lib/Util';
  50. $wpUploadDir = WPFunctions::get()->wpUploadDir();
  51. self::$tempPath = $wpUploadDir['basedir'] . '/' . self::$pluginName;
  52. self::$cachePath = WPFunctions::get()->applyFilters('mailpoet_template_cache_path', self::$tempPath . '/cache');
  53. self::$tempUrl = $wpUploadDir['baseurl'] . '/' . self::$pluginName;
  54. self::$languagesPath = self::$path . '/lang';
  55. self::$libPath = self::$path . '/lib';
  56. self::$pluginPrefix = WPFunctions::get()->applyFilters('mailpoet_db_prefix', 'mailpoet_');
  57. self::initDbParameters($dbHost, $dbUser, $dbPassword, $dbName);
  58. // back compatibility for older Premium plugin with underscore naming
  59. self::$plugin_name = self::$pluginName; // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
  60. self::$temp_path = self::$tempPath; // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
  61. }
  62. /**
  63. * @see https://codex.wordpress.org/Editing_wp-config.php#Set_Database_Host for possible DB_HOSTS values
  64. */
  65. private static function initDbParameters($dbHost, $dbUser, $dbPassword, $dbName) {
  66. $parsedHost = WPFunctions::get()->parseDbHost($dbHost);
  67. if ($parsedHost === false) {
  68. throw new \InvalidArgumentException('Invalid db host configuration.');
  69. }
  70. list($host, $port, $socket, $isIpv6) = $parsedHost;
  71. global $wpdb;
  72. self::$dbPrefix = $wpdb->prefix . self::$pluginPrefix;
  73. self::$dbHost = $host;
  74. self::$dbIsIpv6 = $isIpv6;
  75. self::$dbPort = $port;
  76. self::$dbSocket = $socket;
  77. self::$dbName = $dbName;
  78. self::$dbUsername = $dbUser;
  79. self::$dbPassword = $dbPassword;
  80. self::$dbCharset = $wpdb->charset;
  81. self::$dbCollation = $wpdb->collate;
  82. self::$dbCharsetCollate = $wpdb->get_charset_collate();
  83. self::$dbTimezoneOffset = self::getDbTimezoneOffset();
  84. }
  85. public static function getDbTimezoneOffset($offset = false) {
  86. $offset = ($offset) ? $offset : WPFunctions::get()->getOption('gmt_offset');
  87. $mins = $offset * 60;
  88. $sgn = ($mins < 0 ? -1 : 1);
  89. $mins = abs($mins);
  90. $hrs = floor($mins / 60);
  91. $mins -= $hrs * 60;
  92. return sprintf('%+03d:%02d', $hrs * $sgn, $mins);
  93. }
  94. }