Source of file common.php

Size: 2,787 Bytes - Last Modified: 2020-04-17T14:56:27-04:00

src/common.php

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
<?php declare(strict_types=1);
/**
 * Query
 *
 * SQL Query Builder / Database Abstraction Layer
 *
 * PHP version 7.4
 *
 * @package     Query
 * @author      Timothy J. Warren <tim@timshomepage.net>
 * @copyright   2012 - 2020 Timothy J. Warren
 * @license     http://www.opensource.org/licenses/mit-license.html  MIT License
 * @link        https://git.timshomepage.net/aviat/Query
 * @version     3.0.0
 */
namespace {

	use Query\ConnectionManager;
	use Query\QueryBuilderInterface;

	/**
	 * Global functions that don't really fit anywhere else
	 */

	/**
	 * Multibyte-safe trim function
	 *
	 * @param string $string
	 * @return string
	 */
	function mb_trim(string $string): string
	{
		return preg_replace('/(^\s+)|(\s+$)/u', '', $string);
	}

	/**
	 * Filter out db rows into one array
	 *
	 * @param array $array
	 * @param mixed $index
	 * @return array
	 */
	function dbFilter(array $array, $index): array
	{
		$newArray = [];

		foreach ($array as $a)
		{
			$newArray[] = $a[$index];
		}

		return $newArray;
	}

	/**
	 * Zip a set of arrays together on common keys
	 *
	 * The $zipperInput array is an array of arrays indexed by their place in the output
	 * array.
	 *
	 * @param array $zipperInput
	 * @return array
	 */
	function arrayZipper(array $zipperInput): array
	{
		$output = [];

		foreach ($zipperInput as $appendKey => $values)
		{
			foreach ($values as $index => $value)
			{
				if ( ! isset($output[$index]))
				{
					$output[$index] = [];
				}
				$output[$index][$appendKey] = $value;
			}
		}

		return $output;
	}

	/**
	 * Determine whether a value in the passed array matches the pattern
	 * passed
	 *
	 * @param array $array
	 * @param string $pattern
	 * @return bool
	 */
	function regexInArray(array $array, string $pattern): bool
	{
		if (empty($array))
		{
			return FALSE;
		}

		foreach ($array as $item)
		{
			if (is_scalar($item) && preg_match($pattern, $item))
			{
				return TRUE;
			}
		}

		return FALSE;
	}

	/**
	 * Connection function
	 *
	 * Send an array or object as connection parameters to create a connection. If
	 * the array or object has an 'alias' parameter, passing that string to this
	 * function will return that connection. Passing no parameters returns the last
	 * connection created.
	 *
	 * @param string|object|array $params
	 * @return QueryBuilderInterface|null
	 */
	function Query($params = ''): ?QueryBuilderInterface
	{
		if ($params === NULL)
		{
			return NULL;
		}

		$manager = ConnectionManager::getInstance();

		// If you are getting a previously created connection
		if (is_scalar($params))
		{
			return $manager->getConnection($params);
		}

		$paramsObject = (object)$params;

		// Otherwise, return a new connection
		return $manager->connect($paramsObject);
	}
}
// End of common.php