PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.6
Independent Analytics – WordPress Analytics Plugin v2.14.6
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / illuminate / support / ConfigurationUrlParser.php
independent-analytics / vendor / illuminate / support Last commit date
Facades 7 months ago Testing 7 months ago Traits 7 months ago AggregateServiceProvider.php 2 years ago Carbon.php 2 years ago Composer.php 2 years ago ConfigurationUrlParser.php 2 years ago DateFactory.php 2 years ago Env.php 2 years ago Fluent.php 2 years ago HigherOrderTapProxy.php 2 years ago HtmlString.php 2 years ago InteractsWithTime.php 2 years ago Js.php 2 years ago Manager.php 2 years ago MessageBag.php 2 years ago MultipleInstanceManager.php 2 years ago NamespacedItemResolver.php 2 years ago Optional.php 2 years ago Pluralizer.php 2 years ago ProcessUtils.php 2 years ago Reflector.php 2 years ago ServiceProvider.php 2 years ago Str.php 2 years ago Stringable.php 2 years ago Timebox.php 2 years ago ValidatedInput.php 2 years ago ViewErrorBag.php 2 years ago helpers.php 2 years ago
ConfigurationUrlParser.php
154 lines
1 <?php
2
3 namespace IAWPSCOPED\Illuminate\Support;
4
5 use InvalidArgumentException;
6 /** @internal */
7 class ConfigurationUrlParser
8 {
9 /**
10 * The drivers aliases map.
11 *
12 * @var array
13 */
14 protected static $driverAliases = [
15 'mssql' => 'sqlsrv',
16 'mysql2' => 'mysql',
17 // RDS
18 'postgres' => 'pgsql',
19 'postgresql' => 'pgsql',
20 'sqlite3' => 'sqlite',
21 'redis' => 'tcp',
22 'rediss' => 'tls',
23 ];
24 /**
25 * Parse the database configuration, hydrating options using a database configuration URL if possible.
26 *
27 * @param array|string $config
28 * @return array
29 */
30 public function parseConfiguration($config)
31 {
32 if (\is_string($config)) {
33 $config = ['url' => $config];
34 }
35 $url = Arr::pull($config, 'url');
36 if (!$url) {
37 return $config;
38 }
39 $rawComponents = $this->parseUrl($url);
40 $decodedComponents = $this->parseStringsToNativeTypes(\array_map('rawurldecode', $rawComponents));
41 return \array_merge($config, $this->getPrimaryOptions($decodedComponents), $this->getQueryOptions($rawComponents));
42 }
43 /**
44 * Get the primary database connection options.
45 *
46 * @param array $url
47 * @return array
48 */
49 protected function getPrimaryOptions($url)
50 {
51 return \array_filter(['driver' => $this->getDriver($url), 'database' => $this->getDatabase($url), 'host' => $url['host'] ?? null, 'port' => $url['port'] ?? null, 'username' => $url['user'] ?? null, 'password' => $url['pass'] ?? null], function ($value) {
52 return !\is_null($value);
53 });
54 }
55 /**
56 * Get the database driver from the URL.
57 *
58 * @param array $url
59 * @return string|null
60 */
61 protected function getDriver($url)
62 {
63 $alias = $url['scheme'] ?? null;
64 if (!$alias) {
65 return;
66 }
67 return static::$driverAliases[$alias] ?? $alias;
68 }
69 /**
70 * Get the database name from the URL.
71 *
72 * @param array $url
73 * @return string|null
74 */
75 protected function getDatabase($url)
76 {
77 $path = $url['path'] ?? null;
78 return $path && $path !== '/' ? \substr($path, 1) : null;
79 }
80 /**
81 * Get all of the additional database options from the query string.
82 *
83 * @param array $url
84 * @return array
85 */
86 protected function getQueryOptions($url)
87 {
88 $queryString = $url['query'] ?? null;
89 if (!$queryString) {
90 return [];
91 }
92 $query = [];
93 \parse_str($queryString, $query);
94 return $this->parseStringsToNativeTypes($query);
95 }
96 /**
97 * Parse the string URL to an array of components.
98 *
99 * @param string $url
100 * @return array
101 *
102 * @throws \InvalidArgumentException
103 */
104 protected function parseUrl($url)
105 {
106 $url = \preg_replace('#^(sqlite3?):///#', '$1://null/', $url);
107 $parsedUrl = \parse_url($url);
108 if ($parsedUrl === \false) {
109 throw new InvalidArgumentException('The database configuration URL is malformed.');
110 }
111 return $parsedUrl;
112 }
113 /**
114 * Convert string casted values to their native types.
115 *
116 * @param mixed $value
117 * @return mixed
118 */
119 protected function parseStringsToNativeTypes($value)
120 {
121 if (\is_array($value)) {
122 return \array_map([$this, 'parseStringsToNativeTypes'], $value);
123 }
124 if (!\is_string($value)) {
125 return $value;
126 }
127 $parsedValue = \json_decode($value, \true);
128 if (\json_last_error() === \JSON_ERROR_NONE) {
129 return $parsedValue;
130 }
131 return $value;
132 }
133 /**
134 * Get all of the current drivers' aliases.
135 *
136 * @return array
137 */
138 public static function getDriverAliases()
139 {
140 return static::$driverAliases;
141 }
142 /**
143 * Add the given driver alias to the driver aliases array.
144 *
145 * @param string $alias
146 * @param string $driver
147 * @return void
148 */
149 public static function addDriverAlias($alias, $driver)
150 {
151 static::$driverAliases[$alias] = $driver;
152 }
153 }
154