Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
25 / 25
100.00% covered (success)
100.00%
5 / 5
CRAP
n/a
0 / 0
mb_trim
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
dbFilter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
arrayZipper
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
4
regexInArray
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
5
Query
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
1<?php declare(strict_types=1);
2/**
3 * Query
4 *
5 * SQL Query Builder / Database Abstraction Layer
6 *
7 * PHP version 7.4
8 *
9 * @package     Query
10 * @author      Timothy J. Warren <tim@timshomepage.net>
11 * @copyright   2012 - 2020 Timothy J. Warren
12 * @license     http://www.opensource.org/licenses/mit-license.html  MIT License
13 * @link        https://git.timshomepage.net/aviat/Query
14 * @version     3.0.0
15 */
16namespace {
17
18    use Query\ConnectionManager;
19    use Query\QueryBuilderInterface;
20
21    /**
22     * Global functions that don't really fit anywhere else
23     */
24    /**
25     * Multibyte-safe trim function
26     */
27    function mb_trim(string $string): string
28    {
29        return preg_replace('/(^\s+)|(\s+$)/u', '', $string);
30    }
31
32    /**
33     * Filter out db rows into one array
34     *
35     * @param mixed $index
36     */
37    function dbFilter(array $array, $index): array
38    {
39        $newArray = [];
40
41        foreach ($array as $a)
42        {
43            $newArray[] = $a[$index];
44        }
45
46        return $newArray;
47    }
48
49    /**
50     * Zip a set of arrays together on common keys
51     *
52     * The $zipperInput array is an array of arrays indexed by their place in the output
53     * array.
54     */
55    function arrayZipper(array $zipperInput): array
56    {
57        $output = [];
58
59        foreach ($zipperInput as $appendKey => $values)
60        {
61            foreach ($values as $index => $value)
62            {
63                if ( ! isset($output[$index]))
64                {
65                    $output[$index] = [];
66                }
67                $output[$index][$appendKey] = $value;
68            }
69        }
70
71        return $output;
72    }
73
74    /**
75     * Determine whether a value in the passed array matches the pattern
76     * passed
77     */
78    function regexInArray(array $array, string $pattern): bool
79    {
80        if (empty($array))
81        {
82            return FALSE;
83        }
84
85        foreach ($array as $item)
86        {
87            if (is_scalar($item) && preg_match($pattern, (string) $item))
88            {
89                return TRUE;
90            }
91        }
92
93        return FALSE;
94    }
95
96    /**
97     * Connection function
98     *
99     * Send an array or object as connection parameters to create a connection. If
100     * the array or object has an 'alias' parameter, passing that string to this
101     * function will return that connection. Passing no parameters returns the last
102     * connection created.
103     */
104    function Query(string|object|array|null $params = ''): ?QueryBuilderInterface
105
106    {
107        if ($params === NULL)
108        {
109            return NULL;
110        }
111
112        $manager = ConnectionManager::getInstance();
113
114        // If you are getting a previously created connection
115        if (is_string($params))
116        {
117            return $manager->getConnection($params);
118        }
119
120        $paramsObject = (object)$params;
121
122        // Otherwise, return a new connection
123        return $manager->connect($paramsObject);
124    }
125}
126// End of common.php