File: class.arrayutil.php

package info (click to toggle)
kopano-webapp-plugin-files 2.1.5%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 16,540 kB
  • sloc: php: 15,863; xml: 494; java: 295; python: 72; sh: 44; makefile: 11
file content (160 lines) | stat: -rw-r--r-- 4,038 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?php
namespace Files\Core\Util;


class ArrayUtil
{
	/**
	 * Sort multidimensional array by any key
	 *
	 * @static
	 * @param array $arr the array to sort
	 * @param string $key the key to sort
	 * @param string $dir ASC or DESC sort direction
	 *
	 * @return array the sorted array
	 */
	static function sort_by_key($arr, $key, $dir)
	{
		global $key2sort;
		$key2sort = $key;

		if ($dir == "DESC") {
			usort($arr, array('self', 'invsort'));
		} else {
			usort($arr, array('self', 'sort'));
		}
		return ($arr);
	}

	/**
	 * Sort multidimensional properties array by any key
	 *
	 * @static
	 * @param array $arr the array to sort
	 * @param string $key the key to sort
	 * @param string $dir ASC or DESC sort direction
	 *
	 * @return array the sorted array
	 */
	static function sort_props_by_key($arr, $key, $dir)
	{
		global $key2sort;
		$key2sort = $key;

		if ($dir == "DESC") {
			usort($arr, array('self', 'invpropsort'));
		} else {
			usort($arr, array('self', 'propsort'));
		}
		return ($arr);
	}

	/**
	 * compare function for multidimensional array sorting
	 *
	 * @static
	 * @param array $a this argument will be compared with argument $b
	 * @param array $b this argument will be compared with argument $a
	 *
	 * @return int compare value. If $a < $b the return value will be -1.
	 */
	static function sort($a, $b)
	{
		global $key2sort;

		if ($a['isFolder'] == $b['isFolder']) {
			if (is_numeric($a[$key2sort]) && is_numeric($b[$key2sort])) {
				if ($a[$key2sort] == $b[$key2sort]) {
					return 0;
				}
				return ($a[$key2sort] < $b[$key2sort]) ? -1 : 1;
			} else {
				return (strcasecmp($a[$key2sort], $b[$key2sort]));
			}
		}

		return ((int)$a['isFolder'] - (int)$b['isFolder']);
	}

	/**
	 * inverse compare function for multidimensional array sorting
	 *
	 * @static
	 * @param array $a this argument will be compared with argument $b
	 * @param array $b this argument will be compared with argument $a
	 *
	 * @return int compare value. If $a < $b the return value will be 1.
	 */
	static function invsort($a, $b)
	{
		global $key2sort;

		if ($a['isFolder'] == $b['isFolder']) {
			if (is_numeric($a[$key2sort]) && is_numeric($b[$key2sort])) {
				if ($a[$key2sort] == $b[$key2sort]) {
					return 0;
				}
				return ($a[$key2sort] < $b[$key2sort]) ? 1 : -1;
			} else {
				return (-1 * strcasecmp($a[$key2sort], $b[$key2sort]));
			}
		}

		return ((int)$b['isFolder'] - (int)$a['isFolder']);
	}

	/**
	 * compare function for multidimensional array sorting
	 *
	 * @static
	 * @param array $a this argument will be compared with argument $b
	 * @param array $b this argument will be compared with argument $a
	 *
	 * @return int compare value. If $a < $b the return value will be -1.
	 */
	static function propsort($a, $b)
	{
		global $key2sort;

		if ($a['props']['type'] == $b['props']['type']) {
			if (is_numeric($a['props'][$key2sort]) && is_numeric($b['props'][$key2sort])) {
				if ($a['props'][$key2sort] == $b['props'][$key2sort]) {
					return 0;
				}
				return ($a['props'][$key2sort] < $b['props'][$key2sort]) ? -1 : 1;
			} else {
				return (strcasecmp($a['props'][$key2sort], $b['props'][$key2sort]));
			}
		}

		return ($a['props']['type'] - $b['props']['type']);
	}

	/**
	 * inverse compare function for multidimensional array sorting
	 *
	 * @static
	 * @param array $a this argument will be compared with argument $b
	 * @param array $b this argument will be compared with argument $a
	 *
	 * @return int compare value. If $a < $b the return value will be 1.
	 */
	static function invpropsort($a, $b)
	{
		global $key2sort;

		if ($a['props']['type'] == $b['props']['type']) {
			if (is_numeric($a['props'][$key2sort]) && is_numeric($b['props'][$key2sort])) {
				if ($a['props'][$key2sort] == $b['props'][$key2sort]) {
					return 0;
				}
				return ($a['props'][$key2sort] < $b['props'][$key2sort]) ? 1 : -1;
			} else {
				return (-1 * strcasecmp($a['props'][$key2sort], $b['props'][$key2sort]));
			}
		}

		return ($b['props']['type'] - $a['props']['type']);
	}
}