PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
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
Exceptions 1 month ago Facades 1 month ago Testing 1 month ago Traits 1 month ago AggregateServiceProvider.php 2 years ago Benchmark.php 1 month ago Carbon.php 1 month ago Composer.php 1 month ago ConfigurationUrlParser.php 1 month ago DateFactory.php 1 month ago Env.php 1 month ago Fluent.php 1 month ago HigherOrderTapProxy.php 2 years ago HtmlString.php 2 years ago InteractsWithTime.php 2 years ago Js.php 1 month ago Lottery.php 1 month ago Manager.php 2 years ago MessageBag.php 1 month ago MultipleInstanceManager.php 1 month ago NamespacedItemResolver.php 1 month ago Optional.php 1 month ago Pluralizer.php 1 month ago ProcessUtils.php 1 month ago Reflector.php 1 month ago ServiceProvider.php 2 years ago Str.php 1 month ago Stringable.php 1 month ago Timebox.php 1 month ago ValidatedInput.php 1 month ago ViewErrorBag.php 1 month ago helpers.php 1 month ago
ConfigurationUrlParser.php
152 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], fn($value) => !\is_null($value));
52 }
53 /**
54 * Get the database driver from the URL.
55 *
56 * @param array $url
57 * @return string|null
58 */
59 protected function getDriver($url)
60 {
61 $alias = $url['scheme'] ?? null;
62 if (!$alias) {
63 return;
64 }
65 return static::$driverAliases[$alias] ?? $alias;
66 }
67 /**
68 * Get the database name from the URL.
69 *
70 * @param array $url
71 * @return string|null
72 */
73 protected function getDatabase($url)
74 {
75 $path = $url['path'] ?? null;
76 return $path && $path !== '/' ? \substr($path, 1) : null;
77 }
78 /**
79 * Get all of the additional database options from the query string.
80 *
81 * @param array $url
82 * @return array
83 */
84 protected function getQueryOptions($url)
85 {
86 $queryString = $url['query'] ?? null;
87 if (!$queryString) {
88 return [];
89 }
90 $query = [];
91 \parse_str($queryString, $query);
92 return $this->parseStringsToNativeTypes($query);
93 }
94 /**
95 * Parse the string URL to an array of components.
96 *
97 * @param string $url
98 * @return array
99 *
100 * @throws \InvalidArgumentException
101 */
102 protected function parseUrl($url)
103 {
104 $url = \preg_replace('#^(sqlite3?):///#', '$1://null/', $url);
105 $parsedUrl = \parse_url($url);
106 if ($parsedUrl === \false) {
107 throw new InvalidArgumentException('The database configuration URL is malformed.');
108 }
109 return $parsedUrl;
110 }
111 /**
112 * Convert string casted values to their native types.
113 *
114 * @param mixed $value
115 * @return mixed
116 */
117 protected function parseStringsToNativeTypes($value)
118 {
119 if (\is_array($value)) {
120 return \array_map([$this, 'parseStringsToNativeTypes'], $value);
121 }
122 if (!\is_string($value)) {
123 return $value;
124 }
125 $parsedValue = \json_decode($value, \true);
126 if (\json_last_error() === \JSON_ERROR_NONE) {
127 return $parsedValue;
128 }
129 return $value;
130 }
131 /**
132 * Get all of the current drivers' aliases.
133 *
134 * @return array
135 */
136 public static function getDriverAliases()
137 {
138 return static::$driverAliases;
139 }
140 /**
141 * Add the given driver alias to the driver aliases array.
142 *
143 * @param string $alias
144 * @param string $driver
145 * @return void
146 */
147 public static function addDriverAlias($alias, $driver)
148 {
149 static::$driverAliases[$alias] = $driver;
150 }
151 }
152