1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
function get_l_name($name){ |
4
|
|
|
$name = trim($name); |
5
|
|
|
$last_name = (strpos($name,' ') === false) ? '' : preg_replace('#.*\s([\w-]*)$#', '$1', $name); |
6
|
|
|
return $last_name; |
7
|
|
|
} |
8
|
|
|
|
9
|
|
|
// Gen name with initials with help of fullname |
10
|
|
|
function genNameWithInitials($fullname = null){ |
11
|
|
|
$names = explode(' ', $fullname); |
12
|
|
|
$length = count($names); |
13
|
|
|
$Initials = ''; |
14
|
|
|
if($length > 1){ |
15
|
|
|
for ($i = 0; ($length-1) > $i; $i++) { |
16
|
|
|
$Initials = $Initials . '' . mb_substr($names[$i], 0, 1, "UTF-8"); |
17
|
|
|
} |
18
|
|
|
$nameWithInitials = $Initials . ' ' . $names[$length - 1]; |
19
|
|
|
}else{ |
20
|
|
|
$nameWithInitials = $fullname; |
21
|
|
|
} |
22
|
|
|
return $nameWithInitials; |
23
|
|
|
} |
24
|
|
|
|
25
|
|
|
//check the array of keys exists in the given array |
26
|
|
|
function array_keys_exists(array $keys, array $arr) |
27
|
|
|
{ |
28
|
|
|
return !array_diff_key(array_flip($keys), $arr); |
29
|
|
|
} |
30
|
|
|
|
31
|
|
|
function clean($string) { |
32
|
|
|
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens. |
33
|
|
|
|
34
|
|
|
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars. |
35
|
|
|
} |
36
|
|
|
|
37
|
|
|
|
38
|
|
|
function getMatchingKeys($array){ |
39
|
|
|
$keys = []; |
40
|
|
|
foreach ($array as $key => $value){ |
41
|
|
|
if(strstr($key , 'option')) |
42
|
|
|
$keys[] = $key; |
43
|
|
|
} |
44
|
|
|
return $keys; |
45
|
|
|
} |
46
|
|
|
|
47
|
|
|
function is_sha1($str) { |
48
|
|
|
return (bool) preg_match('/^[0-9a-f]{40}$/i', $str); |
49
|
|
|
} |
50
|
|
|
|
51
|
|
|
function isEmpty($value){ |
52
|
|
|
return $value['institution_optional_subject'] !== null; |
53
|
|
|
} |
54
|
|
|
|
55
|
|
|
function isEmptyRow($row) { |
56
|
|
|
foreach($row as $cell){ |
57
|
|
|
if (null !== $cell) return false; |
58
|
|
|
} |
59
|
|
|
return true; |
60
|
|
|
} |
61
|
|
|
|
62
|
|
|
function unique_multidim_array(array $array, $key) { |
63
|
|
|
$temp_array = array(); |
64
|
|
|
$i = 0; |
65
|
|
|
$key_array = array(); |
66
|
|
|
|
67
|
|
|
foreach($array as $val) { |
68
|
|
|
if (!in_array($val[$key], $key_array)) { |
69
|
|
|
$key_array[$i] = $val[$key]; |
70
|
|
|
$temp_array[$i] = $val; |
71
|
|
|
} |
72
|
|
|
$i++; |
73
|
|
|
} |
74
|
|
|
return $temp_array; |
75
|
|
|
} |
76
|
|
|
|
77
|
|
|
|
78
|
|
|
|
79
|
|
|
function merge_two_arrays($array1,$array2) { |
80
|
|
|
|
81
|
|
|
$data = array(); |
82
|
|
|
$arrayAB = array_merge($array1,$array2); |
83
|
|
|
|
84
|
|
|
foreach ($arrayAB as $value) { |
85
|
|
|
dd($arrayAB); |
86
|
|
|
$id = $value['row']; |
87
|
|
|
if (!isset($data[$id])) { |
88
|
|
|
$data[$id] = array(); |
89
|
|
|
} |
90
|
|
|
$data[$id] = array_merge($data[$id],$value); |
91
|
|
|
} |
92
|
|
|
return $data; |
93
|
|
|
} |
94
|
|
|
|
95
|
|
|
function array_value_recursive($key, array $arr){ |
96
|
|
|
$val = array(); |
97
|
|
|
array_walk_recursive($arr, function($v, $k) use($key, &$val){ |
98
|
|
|
if($k == $key) array_push($val, $v); |
99
|
|
|
}); |
100
|
|
|
return count($val) > 1 ? $val : array_pop($val); |
101
|
|
|
} |
102
|
|
|
|
103
|
|
|
|
104
|
|
|
function merge_error_by_row($errors,$key){ |
105
|
|
|
$temp_array = array(); |
106
|
|
|
$i = 0; |
107
|
|
|
|
108
|
|
|
foreach($errors as $keys => $val) { |
109
|
|
|
if (!in_array($val[$key], $temp_array)) { |
110
|
|
|
$temp_array[$keys]['errors'][] = $val; |
111
|
|
|
} |
112
|
|
|
$i++; |
113
|
|
|
} |
114
|
|
|
return $temp_array; |
115
|
|
|
} |
116
|
|
|
|
117
|
|
|
/** |
118
|
|
|
* @param $error |
119
|
|
|
* @param $count |
120
|
|
|
* @param $reader |
121
|
|
|
* bind error messages to the excel file |
122
|
|
|
*/ |
123
|
|
|
|
124
|
|
|
function append_errors_to_excel($error, $count, $reader){ |
125
|
|
|
$active_sheet = $reader->getActiveSheet(); |
126
|
|
|
$prev_value = $active_sheet->getCell('A'.$error['row'])->getValue(); |
127
|
|
|
$active_sheet->setCellValue('A'. ($error['row']) , $prev_value.','.implode(',',$error['errors'])); |
128
|
|
|
$active_sheet->getStyle('A'. ($error['row']))->getAlignment()->setWrapText(true); |
129
|
|
|
$columns = Illuminate\Support\Facades\Config::get('excel.columns'); |
130
|
|
|
|
131
|
|
|
$column = array_keys($columns,$error['attribute']); |
132
|
|
|
if(!empty($column)){ |
133
|
|
|
$column = $column[0]+1; |
134
|
|
|
$selectedCells = $active_sheet->setSelectedCellByColumnAndRow($column,$error['row']); |
135
|
|
|
$active_cell = ($selectedCells->getActiveCell()); |
136
|
|
|
|
137
|
|
|
$active_sheet->getStyle($active_cell) |
138
|
|
|
->getFill() |
139
|
|
|
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) |
140
|
|
|
->getStartColor() |
141
|
|
|
->setARGB('FF0000'); |
142
|
|
|
|
143
|
|
|
} |
144
|
|
|
} |
145
|
|
|
|
146
|
|
|
function rows($error){ |
147
|
|
|
return $error['row']; |
148
|
|
|
} |
149
|
|
|
|
150
|
|
|
function rowIndex($row){ |
151
|
|
|
return $row->getRowIndex(); |
152
|
|
|
} |
153
|
|
|
|
154
|
|
|
function removeRows($row,$param){ |
155
|
|
|
if(in_array($row,$param['rows'])){ |
156
|
|
|
$param['reader']->getActiveSheet()->removeRow($row); |
157
|
|
|
} |
158
|
|
|
} |
159
|
|
|
|
160
|
|
|
function colorizeCell($column,$error,$active_sheet){ |
161
|
|
|
$column = array_keys($column,$error['attribute']); |
162
|
|
|
$selectedCells = $active_sheet->setSelectedCellByColumnAndRow($column,$error['row']); |
163
|
|
|
$active_cell = ($selectedCells->getActiveCell()); |
164
|
|
|
|
165
|
|
|
$active_sheet->getStyle($active_cell) |
166
|
|
|
->getFill() |
167
|
|
|
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) |
168
|
|
|
->getStartColor() |
169
|
|
|
->setARGB('FF0000'); |
170
|
|
|
|
171
|
|
|
} |
172
|
|
|
|
173
|
|
|
|
174
|
|
|
function errors_unique_array($item,$key){ |
175
|
|
|
|
176
|
|
|
$search = array_filter($item,function ($data) use ($item){ |
177
|
|
|
return isset($data['row']) && ($data['row'] == $item->row()); |
178
|
|
|
}); |
179
|
|
|
|
180
|
|
|
if($search){ |
|
|
|
|
181
|
|
|
array_push($search[0]['errors'],implode(',',$item->errors())); |
182
|
|
|
$errors = $search; |
183
|
|
|
} |
184
|
|
|
|
185
|
|
|
return $errors; |
186
|
|
|
} |
187
|
|
|
|
188
|
|
|
function sig_handler($signo){ |
189
|
|
|
global $child; |
190
|
|
|
switch($signo){ |
191
|
|
|
case 'SIFCLD': |
192
|
|
|
} |
193
|
|
|
|
194
|
|
|
} |
195
|
|
|
function processParallel($func ,array $arr, $procs = 4,$params =[]) |
196
|
|
|
{ |
197
|
|
|
// Break array up into $procs chunks. |
198
|
|
|
$chunks = array_chunk($arr, ceil((count($arr) / $procs))); |
|
|
|
|
199
|
|
|
$pid = -1; |
200
|
|
|
$children = array(); |
201
|
|
|
foreach ($chunks as $items) { |
202
|
|
|
$pid = pcntl_fork(); |
203
|
|
|
if ($pid === -1) { |
204
|
|
|
die('could not fork'); |
205
|
|
|
} else if ($pid === 0) { |
206
|
|
|
// We are the child process. Pass a chunk of items to process. |
207
|
|
|
echo('['.getmypid().']This Process executed at'.date("F d, Y h:i:s A")."\n") ; |
208
|
|
|
array_walk($items, $func,$params); |
209
|
|
|
exit(0); |
210
|
|
|
} else { |
211
|
|
|
// We are the parent. |
212
|
|
|
echo('['.getmypid().']This Process executed at'.date("F d, Y h:i:s A")."\n") ; |
213
|
|
|
$children[] = $pid; |
214
|
|
|
} |
215
|
|
|
} |
216
|
|
|
// Wait for children to finish. |
217
|
|
|
foreach ($children as $pid) { |
218
|
|
|
// We are still the parent. |
219
|
|
|
pcntl_waitpid($pid, $status); |
220
|
|
|
} |
221
|
|
|
} |
222
|
|
|
|
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)
or! empty(...)
instead.