Subversion-Projekte lars-tiefland.ci

Revision

Revision 2257 | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
68 lars 1
<?php
2
/**
3
 * CodeIgniter
4
 *
5
 * An open source application development framework for PHP
6
 *
7
 * This content is released under the MIT License (MIT)
8
 *
2414 lars 9
 * Copyright (c) 2014 - 2019, British Columbia Institute of Technology
68 lars 10
 *
11
 * Permission is hereby granted, free of charge, to any person obtaining a copy
12
 * of this software and associated documentation files (the "Software"), to deal
13
 * in the Software without restriction, including without limitation the rights
14
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
 * copies of the Software, and to permit persons to whom the Software is
16
 * furnished to do so, subject to the following conditions:
17
 *
18
 * The above copyright notice and this permission notice shall be included in
19
 * all copies or substantial portions of the Software.
20
 *
21
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27
 * THE SOFTWARE.
28
 *
29
 * @package	CodeIgniter
30
 * @author	EllisLab Dev Team
31
 * @copyright	Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
2414 lars 32
 * @copyright	Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
33
 * @license	https://opensource.org/licenses/MIT	MIT License
68 lars 34
 * @link	https://codeigniter.com
35
 * @since	Version 3.0.0
36
 * @filesource
37
 */
38
defined('BASEPATH') OR exit('No direct script access allowed');
39
 
40
/**
41
 * PHP ext/standard compatibility package
42
 *
43
 * @package		CodeIgniter
44
 * @subpackage	CodeIgniter
45
 * @category	Compatibility
46
 * @author		Andrey Andreev
47
 * @link		https://codeigniter.com/user_guide/
48
 */
49
 
50
// ------------------------------------------------------------------------
51
 
52
if (is_php('5.5'))
53
{
54
	return;
55
}
56
 
57
// ------------------------------------------------------------------------
58
 
59
if ( ! function_exists('array_column'))
60
{
61
	/**
62
	 * array_column()
63
	 *
64
	 * @link	http://php.net/array_column
65
	 * @param	array	$array
66
	 * @param	mixed	$column_key
67
	 * @param	mixed	$index_key
68
	 * @return	array
69
	 */
70
	function array_column(array $array, $column_key, $index_key = NULL)
71
	{
72
		if ( ! in_array($type = gettype($column_key), array('integer', 'string', 'NULL'), TRUE))
73
		{
74
			if ($type === 'double')
75
			{
76
				$column_key = (int) $column_key;
77
			}
78
			elseif ($type === 'object' && method_exists($column_key, '__toString'))
79
			{
80
				$column_key = (string) $column_key;
81
			}
82
			else
83
			{
84
				trigger_error('array_column(): The column key should be either a string or an integer', E_USER_WARNING);
85
				return FALSE;
86
			}
87
		}
88
 
89
		if ( ! in_array($type = gettype($index_key), array('integer', 'string', 'NULL'), TRUE))
90
		{
91
			if ($type === 'double')
92
			{
93
				$index_key = (int) $index_key;
94
			}
95
			elseif ($type === 'object' && method_exists($index_key, '__toString'))
96
			{
97
				$index_key = (string) $index_key;
98
			}
99
			else
100
			{
101
				trigger_error('array_column(): The index key should be either a string or an integer', E_USER_WARNING);
102
				return FALSE;
103
			}
104
		}
105
 
106
		$result = array();
107
		foreach ($array as &$a)
108
		{
109
			if ($column_key === NULL)
110
			{
111
				$value = $a;
112
			}
113
			elseif (is_array($a) && array_key_exists($column_key, $a))
114
			{
115
				$value = $a[$column_key];
116
			}
117
			else
118
			{
119
				continue;
120
			}
121
 
122
			if ($index_key === NULL OR ! array_key_exists($index_key, $a))
123
			{
124
				$result[] = $value;
125
			}
126
			else
127
			{
128
				$result[$a[$index_key]] = $value;
129
			}
130
		}
131
 
132
		return $result;
133
	}
134
}
135
 
136
// ------------------------------------------------------------------------
137
 
138
if (is_php('5.4'))
139
{
140
	return;
141
}
142
 
143
// ------------------------------------------------------------------------
144
 
145
if ( ! function_exists('hex2bin'))
146
{
147
	/**
148
	 * hex2bin()
149
	 *
150
	 * @link	http://php.net/hex2bin
151
	 * @param	string	$data
152
	 * @return	string
153
	 */
154
	function hex2bin($data)
155
	{
1257 lars 156
		if (in_array($type = gettype($data), array('array', 'double', 'object', 'resource'), TRUE))
68 lars 157
		{
158
			if ($type === 'object' && method_exists($data, '__toString'))
159
			{
160
				$data = (string) $data;
161
			}
162
			else
163
			{
164
				trigger_error('hex2bin() expects parameter 1 to be string, '.$type.' given', E_USER_WARNING);
165
				return NULL;
166
			}
167
		}
168
 
169
		if (strlen($data) % 2 !== 0)
170
		{
171
			trigger_error('Hexadecimal input string must have an even length', E_USER_WARNING);
172
			return FALSE;
173
		}
174
		elseif ( ! preg_match('/^[0-9a-f]*$/i', $data))
175
		{
176
			trigger_error('Input string must be hexadecimal string', E_USER_WARNING);
177
			return FALSE;
178
		}
179
 
180
		return pack('H*', $data);
181
	}
182
}