FieldHandler::getInsertId()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php declare(strict_types=1);
2
3
namespace XoopsModules\Wgevents;
4
5
/*
6
 You may not change or alter any portion of this comment or credits
7
 of supporting developers from this source code or any supporting source code
8
 which is considered copyrighted (c) material of the original comment or credit authors.
9
10
 This program is distributed in the hope that it will be useful,
11
 but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
*/
14
15
/**
16
 * wgEvents module for xoops
17
 *
18
 * @copyright    2021 XOOPS Project (https://xoops.org)
19
 * @license      GPL 2.0 or later
20
 * @package      wgevents
21
 * @since        1.0.0
22
 * @min_xoops    2.5.11 Beta1
23
 * @author       Goffy - Wedega - Email:[email protected] - Website:https://xoops.wedega.com
24
 */
25
26
use XoopsModules\Wgevents;
27
28
29
/**
30
 * Class Object Handler Field
31
 */
32
class FieldHandler extends \XoopsPersistableObjectHandler
33
{
34
    /**
35
     * Constructor
36
     *
37
     * @param \XoopsDatabase $db
38
     */
39
    public function __construct(\XoopsDatabase $db)
40
    {
41
        parent::__construct($db, 'wgevents_field', Field::class, 'id', 'caption');
42
    }
43
44
    /**
45
     * @param bool $isNew
46
     *
47
     * @return object
48
     */
49
    public function create($isNew = true)
50
    {
51
        return parent::create($isNew);
52
    }
53
54
    /**
55
     * retrieve a field
56
     *
57
     * @param int $id field id
58
     * @param $fields
59
     * @return \XoopsObject|null reference to the {@link Get} object
60
     */
61
    public function get($id = null, $fields = null)
62
    {
63
        return parent::get($id, $fields);
64
    }
65
66
    /**
67
     * get inserted id
68
     *
69
     * @return int reference to the {@link Get} object
70
     */
71
    public function getInsertId()
72
    {
73
        return $this->db->getInsertId();
74
    }
75
76
    /**
77
     * Get Count Field in the database
78
     * @param int    $start
79
     * @param int    $limit
80
     * @param string $sort
81
     * @param string $order
82
     * @return int
83
     */
84
    public function getCountFields($start = 0, $limit = 0, $sort = 'weight ASC, id', $order = 'ASC')
85
    {
86
        $crCountFields = new \CriteriaCompo();
87
        $crCountFields = $this->getFieldsCriteria($crCountFields, $start, $limit, $sort, $order);
88
        return $this->getCount($crCountFields);
0 ignored issues
show
Bug introduced by
$crCountFields of type integer is incompatible with the type CriteriaElement|null expected by parameter $criteria of XoopsPersistableObjectHandler::getCount(). ( Ignorable by Annotation )

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

88
        return $this->getCount(/** @scrutinizer ignore-type */ $crCountFields);
Loading history...
89
    }
90
91
    /**
92
     * Get All Field in the database
93
     * @param int    $start
94
     * @param int    $limit
95
     * @param string $sort
96
     * @param string $order
97
     * @return array
98
     */
99
    public function getAllFields($start = 0, $limit = 0, $sort = 'weight ASC, id', $order = 'ASC')
100
    {
101
        $crAllFields = new \CriteriaCompo();
102
        $crAllFields = $this->getFieldsCriteria($crAllFields, $start, $limit, $sort, $order);
103
        return $this->getAll($crAllFields);
0 ignored issues
show
Bug introduced by
$crAllFields of type integer is incompatible with the type CriteriaElement|null expected by parameter $criteria of XoopsPersistableObjectHandler::getAll(). ( Ignorable by Annotation )

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

103
        return $this->getAll(/** @scrutinizer ignore-type */ $crAllFields);
Loading history...
104
    }
105
106
    /**
107
     * Get Criteria Field
108
     * @param        $crField
109
     * @param int $start
110
     * @param int $limit
111
     * @param string $sort
112
     * @param string $order
113
     * @return int
114
     */
115
    private function getFieldsCriteria($crField, int $start, int $limit, string $sort, string $order)
116
    {
117
        $crField->setStart($start);
118
        $crField->setLimit($limit);
119
        $crField->setSort($sort);
120
        $crField->setOrder($order);
121
        return $crField;
122
    }
123
124
    /**
125
     * @public function to get next value for sorting
126
     *
127
     * @return int
128
     */
129
    public function getNextWeight()
130
    {
131
        $nextValue = 0;
132
133
        $crField = new \CriteriaCompo();
134
        $crField->setSort('weight');
135
        $crField->setOrder('DESC');
136
        $crField->setLimit(1);
137
        $fieldsCount = $this->getCount($crField);
138
        if ($fieldsCount > 0) {
139
            $fieldsAll = $this->getAll($crField);
140
            foreach (\array_keys($fieldsAll) as $i) {
141
                $nextValue = $fieldsAll[$i]->getVar('weight');
142
            }
143
        }
144
145
        return $nextValue + 1;
146
147
    }
148
}
149