Test Failed
Push — master ( e3c39f...fe570d )
by Mihail
07:20
created

Apps/Controller/Admin/User/ActionIndex.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace Apps\Controller\Admin\User;
4
5
use Apps\ActiveRecord\User as UserRecord;
6
use Ffcms\Core\Arch\View;
7
use Ffcms\Core\Helper\Type\Any;
8
use Ffcms\Core\Helper\Type\Str;
9
use Ffcms\Core\Network\Request;
10
use Ffcms\Core\Network\Response;
11
12
/**
13
 * Class ActionIndex
14
 * @package Apps\Controller\Admin\User
15
 * @property Request $request
16
 * @property Response $response
17
 * @property View $view
18
 */
19
trait ActionIndex
20
{
21
    /**
22
     * List all users as table
23
     * @return string|null
24
     */
25
    public function index(): ?string
26
    {
27
        // init Active Record user object relation
28
        $record = new UserRecord();
29
30
        // check if search query passed
31
        $query = $this->request->query->get('search', null);
32
        if ($query && Any::isStr($query) && Str::length($query) > 1) {
33
            $record = $record->where(function ($db) use ($query) {
34
                $db->where('login', 'like', '%' . $query . '%')
35
                    ->orWhere('email', 'like', '%' . $query . '%');
36
            });
37
        }
38
39
        // set current page num and offset
40
        $page = (int)$this->request->query->get('page', 0);
41
        $offset = $page * self::ITEM_PER_PAGE;
0 ignored issues
show
The constant Apps\Controller\Admin\Us...ionIndex::ITEM_PER_PAGE was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
42
43
        // prepare pagination data
44
        $pagination = [
45
            'url' => ['user/index'],
46
            'page' => $page,
47
            'step' => self::ITEM_PER_PAGE,
48
            'total' => $record->count()
49
        ];
50
51
        // build listing objects
52
        $records = $record->orderBy('id', 'desc')
53
            ->skip($offset)
54
            ->take(self::ITEM_PER_PAGE)
55
            ->get();
56
57
        // display viewer
58
        return $this->view->render('user/index', [
59
            'records' => $records,
60
            'pagination' => $pagination,
61
            'search' => $query
62
        ]);
63
    }
64
}
65