Failed Conditions
Pull Request — master (#326)
by
unknown
02:16
created

functions.php ➔ tree_check_array()   B

Complexity

Conditions 7
Paths 2

Size

Total Lines 19
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 14
nc 2
nop 3
dl 0
loc 19
rs 8.2222
c 0
b 0
f 0
1
<?php
2
3
########################################################################
4
// Human Time Ago
5
// @param $timestamp	=> timestamp (mandatory)
6
// @param $locales	=> locales (mandatory)
7
//
8
// Return time ago at human format (eg: 2 hours ago)
9
########################################################################
10
11
function time_ago($timestamp, $locales)
12
{
13
14
	// Set up our variables.
15
	$minute_in_seconds = 60;
16
	$hour_in_seconds   = $minute_in_seconds * 60;
17
	$day_in_seconds	   = $hour_in_seconds * 24;
18
	$week_in_seconds   = $day_in_seconds * 7;
19
	$month_in_seconds  = $day_in_seconds * 30;
20
	$year_in_seconds   = $day_in_seconds * 365;
21
22
	// current time
23
	$now = time();
24
25
	// Calculate the time difference between the current time reference point and the timestamp we're comparing.
26
	// The difference is defined negative, when in the future.
27
	$time_difference = $now - $timestamp;
28
29
	// Calculate the time ago using the smallest applicable unit.
30
	if ($time_difference < $hour_in_seconds) {
31
		$difference_value = abs(round($time_difference / $minute_in_seconds));
32
		$difference_label = 'MINUTE';
33
	} elseif ($time_difference < $day_in_seconds) {
34
		$difference_value = abs(round($time_difference / $hour_in_seconds));
35
		$difference_label = 'HOUR';
36
	} elseif ($time_difference < $week_in_seconds) {
37
		$difference_value = abs(round($time_difference / $day_in_seconds));
38
		$difference_label = 'DAY';
39
	} elseif ($time_difference < $month_in_seconds) {
40
		$difference_value = abs(round($time_difference / $week_in_seconds));
41
		$difference_label = 'WEEK';
42
	} elseif ($time_difference < $year_in_seconds) {
43
		$difference_value = abs(round($time_difference / $month_in_seconds));
44
		$difference_label = 'MONTH';
45
	} else {
46
		$difference_value = abs(round($time_difference / $year_in_seconds));
47
		$difference_label = 'YEAR';
48
	}
49
50
	// plural
51
	if ($difference_value != 1) {
52
		$difference_label = $difference_label.'S';
53
	}
54
55
	if ($time_difference <= 0) {
56
		// Present
57
		return sprintf($locales->TIME_LEFT, $difference_value.' '.$locales->$difference_label);
58
	} else {
59
		// Past
60
		return sprintf($locales->TIME_AGO, $difference_value.' '.$locales->$difference_label);
61
	}
62
}
63
64
65
########################################################################
66
// Percent calculator
67
// @param $val		=> int (mandatory)
68
// @param $val_total	=> int (mandatory)
69
//
70
// Return pourcent from total
71
########################################################################
72
73
function percent($val, $val_total)
74
{
75
	$count1 = $val_total / $val;
76
	$count2 = $count1 * 100;
77
78
	$count = number_format($count2, 0);
79
80
	return $count;
81
}
82
83
84
########################################################################
85
// File version (unix timestamp)
86
// @param $url		=> string (mandatory)
87
//
88
// Return $url with last_modified unix timestamp before suffix
89
########################################################################
90
91
function auto_ver($url)
92
{
93
	$path = pathinfo($url);
94
	$ver = '.'.filemtime(SYS_PATH.'/'.$url).'.';
95
	echo $path['dirname'].'/'.preg_replace('/\.(css|js)$/', $ver."$1", $path['basename']);
96
}
97
98
99
########################################################################
100
// File age in secs
101
// @param $filepath     => string (mandatory)
102
//
103
// Return file age of file in secs, PHP_INT_MAX if file doesn't exist
104
########################################################################
105
106
function file_update_ago($filepath)
107
{
108
	if (is_file($filepath)) {
109
		$filemtime = filemtime($filepath);
110
		$now = time();
111
		$diff = $now - $filemtime;
112
		return $diff;
113
	}
114
	// file doesn't exist yet!
115
	return PHP_INT_MAX;
116
}
117
118
119
########################################################################
120
// Only keep data after $timestamp in $array (compared to 'timestamp' key)
121
// @param $array     => array (mandatory)
122
// @param $timestamp => int (mandatory)
123
//
124
// Return trimmed array
125
########################################################################
126
127
function trim_stats_json($array, $timestamp)
128
{
129
	foreach ($array as $key => $value) {
130
		if ($value['timestamp'] < $timestamp) {
131
			unset($array[$key]);
132
		}
133
	}
134
	return $array;
135
}
136
137
138
########################################################################
139
// gym level from prestige value
140
// @param $prestige => int (mandatory)
141
//
142
// Return gym level
143
########################################################################
144
145
function gym_level($prestige)
146
{
147
	if ($prestige == 0) {
148
		$gym_level = 0;
149
	} elseif ($prestige < 2000) {
150
		$gym_level = 1;
151
	} elseif ($prestige < 4000) {
152
		$gym_level = 2;
153
	} elseif ($prestige < 8000) {
154
		$gym_level = 3;
155
	} elseif ($prestige < 12000) {
156
		$gym_level = 4;
157
	} elseif ($prestige < 16000) {
158
		$gym_level = 5;
159
	} elseif ($prestige < 20000) {
160
		$gym_level = 6;
161
	} elseif ($prestige < 30000) {
162
		$gym_level = 7;
163
	} elseif ($prestige < 40000) {
164
		$gym_level = 8;
165
	} elseif ($prestige < 50000) {
166
		$gym_level = 9;
167
	} else {
168
		$gym_level = 10;
169
	}
170
171
	return $gym_level;
172
}
173
174
########################################################################
175
// depth of array
176
// @param $arr     => array (mandatory)
177
//
178
// Retruns max depth of array
179
########################################################################
180
function get_depth($arr) {
181
	$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr));
182
	$depth = 0;
183
	foreach ($it as $v) {
184
		$it->getDepth() > $depth && $depth = $it->getDepth();
185
	}
186
	return $depth;
187
}
188
189
########################################################################
190
// tree for at depth
191
// @param $trees     => array (mandatory)
192
// @param $depth => int (mandatory)
193
// @param $max_pokemon => int (mandatory)
194
// @param $currentDepth => int (optional)
195
//
196
// Return all pokemon with data at a certain tree depth
197
########################################################################
198
function get_tree_at_depth($trees, $depth, $max_pokemon, $currentDepth = 0) {
199
    if ($depth == $currentDepth) { // Found depth
200
        return tree_remove_bellow($trees, $max_pokemon);
201
    } else { // Go deeper
202
        $arr = array();
203
        foreach ($trees as $temp) { // Go into all trees
204
            $tree = $temp->evolutions;
205
            $results = tree_remove_bellow(get_tree_at_depth($tree, $depth, $max_pokemon, $currentDepth + 1), $max_pokemon);
206
            $i = 0;
0 ignored issues
show
Unused Code introduced by
$i is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
207
            $arr = tree_check_array($results, $arr, $depth - $currentDepth == 1);
208
        }
209
        return $arr;
210
    }
211
}
212
213
########################################################################
214
// used in get_tree_at_depth
215
########################################################################
216
function tree_check_array($array_check, $array_add, $correct_arrow) {
217
    $count = count($array_check);
218
    $i = 0;
219
    if (!is_null($array_check)) { // check if exists
220
        foreach ($array_check as $res) { // Check if above, equal or bellow center
221
            if ($count != 1 && $correct_arrow) { // only add arrow once
222
                $num = $i / ($count - 1);
223
                if ($num < 0.5) {
224
                    $res->array_sufix = "_up";
225
                } elseif ($num > 0.5) {
226
                    $res->array_sufix = "_down";
227
                }
228
            }
229
            $array_add[] = $res;
230
            $i++;
231
        }
232
    }
233
    return $array_add;
234
}
235
236
########################################################################
237
// used in get_tree_at_depth
238
########################################################################
239
function tree_remove_bellow($tree, $max_pokemon)
240
{
241
    if (is_null($tree)) {
242
        return null;
243
    }
244
    $arr = array();
245
    foreach ($tree as $item) { // Check if above, equal or bellow center
246
        if ($item->id <= $max_pokemon) {
247
            $arr[] = $item;
248
        }
249
    }
250
    return $arr;
251
}