Code Duplication    Length = 80-80 lines in 2 locations

system/modules/Ui/objects/DataManager.php 2 locations

@@ 280-359 (lines=80) @@
277
                }
278
            }
279
        }
280
        if (!empty($this->managerOptions['filters'])) {
281
            foreach ($this->managerOptions['filters'] as $col) {
282
                $colInfo = $modelName::getColInfo($col);
283
                switch ($colInfo['colParams']['type']) {
284
                    case 'select':
285
                        if (empty($params['filters'][$col]['value'])) {
286
                            continue;
287
                        }
288
                        if (is_array($params['filters'][$col]['value'])) {
289
                            foreach ($params['filters'][$col]['value'] as $key => $value) {
290
                                if ($value === '') {
291
                                    unset($params['filters'][$col]['value'][$key]);
292
                                }
293
                            }
294
                        }
295
                        if (!$params['filters'][$col]['value']) {
296
                            continue;
297
                        }
298
                        $queryParams['where'][] = [$col, $params['filters'][$col]['value'], is_array($params['filters'][$col]['value']) ? 'IN' : '='];
299
                        break;
300
                    case 'bool':
301
                        if (!isset($params['filters'][$col]['value']) || $params['filters'][$col]['value'] === '') {
302
                            continue;
303
                        }
304
                        $queryParams['where'][] = [$col, $params['filters'][$col]['value']];
305
                        break;
306
                    case 'dateTime':
307
                    case 'date':
308
                        if (empty($params['filters'][$col]['min']) && empty($params['filters'][$col]['max'])) {
309
                            continue;
310
                        }
311
                        if (!empty($params['filters'][$col]['min'])) {
312
                            $queryParams['where'][] = [$col, $params['filters'][$col]['min'], '>='];
313
                        }
314
                        if (!empty($params['filters'][$col]['max'])) {
315
                            if ($colInfo['colParams']['type'] == 'dateTime' && !strpos($params['filters'][$col]['max'], ' ')) {
316
317
                                $date = $params['filters'][$col]['max'] . ' 23:59:59';
318
                            } else {
319
                                $date = $params['filters'][$col]['max'];
320
                            }
321
                            $queryParams['where'][] = [$col, $date, '<='];
322
                        }
323
                        break;
324
                    case 'number':
325
                        if (empty($params['filters'][$col]['min']) && empty($params['filters'][$col]['max'])) {
326
                            continue;
327
                        }
328
                        if (!empty($params['filters'][$col]['min'])) {
329
                            $queryParams['where'][] = [$col, $params['filters'][$col]['min'], '>='];
330
                        }
331
                        if (!empty($params['filters'][$col]['max'])) {
332
                            $queryParams['where'][] = [$col, $params['filters'][$col]['max'], '<='];
333
                        }
334
                        break;
335
                    case 'email':
336
                    case 'text':
337
                    case 'textarea':
338
                    case 'html':
339
                        if (empty($params['filters'][$col]['value'])) {
340
                            continue;
341
                        }
342
                        switch ($params['filters'][$col]['compareType']) {
343
                            case 'contains':
344
                                $queryParams['where'][] = [$col, '%' . $params['filters'][$col]['value'] . '%', 'LIKE'];
345
                                break;
346
                            case 'equals':
347
                                $queryParams['where'][] = [$col, $params['filters'][$col]['value']];
348
                                break;
349
                            case 'starts_with':
350
                                $queryParams['where'][] = [$col, $params['filters'][$col]['value'] . '%', 'LIKE'];
351
                                break;
352
                            case 'ends_with':
353
                                $queryParams['where'][] = [$col, '%' . $params['filters'][$col]['value'], 'LIKE'];
354
                                break;
355
                        }
356
                        break;
357
                }
358
            }
359
        }
360
        if (!empty($params['mode']) && $params['mode'] == 'sort') {
361
            $queryParams['order'] = ['weight', 'asc'];
362
        } elseif (!empty($params['sortered']) && !empty($this->managerOptions['sortable'])) {
@@ 447-526 (lines=80) @@
444
                }
445
            }
446
        }
447
        if (!empty($this->managerOptions['filters'])) {
448
            foreach ($this->managerOptions['filters'] as $col) {
449
                $colInfo = $modelName::getColInfo($col);
450
                switch ($colInfo['colParams']['type']) {
451
                    case 'select':
452
                        if (empty($params['filters'][$col]['value'])) {
453
                            continue;
454
                        }
455
                        if (is_array($params['filters'][$col]['value'])) {
456
                            foreach ($params['filters'][$col]['value'] as $key => $value) {
457
                                if ($value === '') {
458
                                    unset($params['filters'][$col]['value'][$key]);
459
                                }
460
                            }
461
                        }
462
                        if (!$params['filters'][$col]['value']) {
463
                            continue;
464
                        }
465
                        $queryParams['where'][] = [$col, $params['filters'][$col]['value'], is_array($params['filters'][$col]['value']) ? 'IN' : '='];
466
                        break;
467
                    case 'bool':
468
                        if (!isset($params['filters'][$col]['value']) || $params['filters'][$col]['value'] === '') {
469
                            continue;
470
                        }
471
                        $queryParams['where'][] = [$col, $params['filters'][$col]['value']];
472
                        break;
473
                    case 'dateTime':
474
                    case 'date':
475
                        if (empty($params['filters'][$col]['min']) && empty($params['filters'][$col]['max'])) {
476
                            continue;
477
                        }
478
                        if (!empty($params['filters'][$col]['min'])) {
479
                            $queryParams['where'][] = [$col, $params['filters'][$col]['min'], '>='];
480
                        }
481
                        if (!empty($params['filters'][$col]['max'])) {
482
                            if ($colInfo['colParams']['type'] == 'dateTime' && !strpos($params['filters'][$col]['max'], ' ')) {
483
484
                                $date = $params['filters'][$col]['max'] . ' 23:59:59';
485
                            } else {
486
                                $date = $params['filters'][$col]['max'];
487
                            }
488
                            $queryParams['where'][] = [$col, $date, '<='];
489
                        }
490
                        break;
491
                    case 'number':
492
                        if (empty($params['filters'][$col]['min']) && empty($params['filters'][$col]['max'])) {
493
                            continue;
494
                        }
495
                        if (!empty($params['filters'][$col]['min'])) {
496
                            $queryParams['where'][] = [$col, $params['filters'][$col]['min'], '>='];
497
                        }
498
                        if (!empty($params['filters'][$col]['max'])) {
499
                            $queryParams['where'][] = [$col, $params['filters'][$col]['max'], '<='];
500
                        }
501
                        break;
502
                    case 'email':
503
                    case 'text':
504
                    case 'textarea':
505
                    case 'html':
506
                        if (empty($params['filters'][$col]['value'])) {
507
                            continue;
508
                        }
509
                        switch ($params['filters'][$col]['compareType']) {
510
                            case 'contains':
511
                                $queryParams['where'][] = [$col, '%' . $params['filters'][$col]['value'] . '%', 'LIKE'];
512
                                break;
513
                            case 'equals':
514
                                $queryParams['where'][] = [$col, $params['filters'][$col]['value']];
515
                                break;
516
                            case 'starts_with':
517
                                $queryParams['where'][] = [$col, $params['filters'][$col]['value'] . '%', 'LIKE'];
518
                                break;
519
                            case 'ends_with':
520
                                $queryParams['where'][] = [$col, '%' . $params['filters'][$col]['value'], 'LIKE'];
521
                                break;
522
                        }
523
                        break;
524
                }
525
            }
526
        }
527
        if (!empty($params['mode']) && $params['mode'] == 'sort') {
528
            $queryParams['order'] = ['weight', 'asc'];
529
        } elseif (!empty($params['sortered']) && !empty($this->managerOptions['sortable'])) {