Issues (367)

app/helpers.php (8 issues)

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){
0 ignored issues
show
The parameter $count is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

124
function append_errors_to_excel($error, /** @scrutinizer ignore-unused */ $count, $reader){

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
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){
0 ignored issues
show
The parameter $key is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

174
function errors_unique_array($item,/** @scrutinizer ignore-unused */ $key){

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
175
176
        $search = array_filter($item,function ($data) use ($item){
177
            return isset($data['row']) &&  ($data['row']  == $item->row());
178
        });
179
180
        if($search){
0 ignored issues
show
Bug Best Practice introduced by
The expression $search of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

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.

Loading history...
181
            array_push($search[0]['errors'],implode(',',$item->errors()));
182
            $errors = $search;
183
        }
184
185
        return $errors;
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $errors does not seem to be defined for all execution paths leading up to this point.
Loading history...
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)));
0 ignored issues
show
ceil(count($arr) / $procs) of type double is incompatible with the type integer expected by parameter $length of array_chunk(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

198
        $chunks   = array_chunk($arr, /** @scrutinizer ignore-type */ ceil((count($arr) / $procs)));
Loading history...
199
        $pid      = -1;
0 ignored issues
show
The assignment to $pid is dead and can be removed.
Loading history...
200
        $children = array();
201
        foreach ($chunks as $items) {
202
            $pid = pcntl_fork();
203
            if ($pid === -1) {
204
                die('could not fork');
0 ignored issues
show
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
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);
0 ignored issues
show
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
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