TicketValues::getTicketFields()   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\Xhelp;
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
 * @copyright    {@link https://xoops.org/ XOOPS Project}
17
 * @license      {@link https://www.gnu.org/licenses/gpl-2.0.html GNU GPL 2 or later}
18
 * @author       Eric Juden <[email protected]>
19
 * @author       XOOPS Development Team
20
 */
21
22
if (!\defined('XHELP_CONSTANTS_INCLUDED')) {
23
    exit();
24
}
25
26
// require_once XHELP_CLASS_PATH . '/BaseObjectHandler.php';
27
28
/**
29
 * TicketValues class
30
 *
31
 * Metadata that represents a custom value created for xhelp
32
 *
33
 * @author  Eric Juden <[email protected]>
34
 */
35
class TicketValues extends \XoopsObject
36
{
37
    private $fields = [];
38
    private $helper;
39
40
    /**
41
     * Class Constructor
42
     *
43
     * @param int|array|null $id
44
     * @internal param mixed $ticketid: null for a new object, hash table for an existing object
45
     */
46
    public function __construct($id = null)
47
    {
48
        $this->initVar('ticketid', \XOBJ_DTYPE_INT, null, false);
49
        $this->helper = Helper::getInstance();
50
        $this->helper->loadLanguage('admin');
51
52
        /** @var \XoopsModules\Xhelp\TicketFieldHandler $ticketFieldHandler */
53
        $ticketFieldHandler = $this->helper->getHandler('TicketField');
54
        $fields             = $ticketFieldHandler->getObjects(null, true);
55
56
        foreach ($fields as $field) {
57
            $key       = $field->getVar('fieldname');
58
            $datatype  = $this->getDataType($field->getVar('datatype'), $field->getVar('controltype'));
59
            $value     = $this->getValueFromXoopsDataType($datatype);
0 ignored issues
show
Unused Code introduced by
The assignment to $value is dead and can be removed.
Loading history...
60
            $required  = $field->getVar('required');
61
            $maxlength = ($field->getVar('fieldlength') < 50 ? $field->getVar('fieldlength') : 50);
62
            $options   = '';
63
64
            $this->initVar($key, $datatype, null, $required, $maxlength, $options);
65
66
            $this->fields[$key] = ((\_XHELP_DATATYPE_TEXT == $field->getVar('datatype')) ? '%s' : '%d');
67
        }
68
        $this->fields['ticketid'] = '%u';
69
70
        if (null !== $id) {
71
            if (\is_array($id)) {
72
                $this->assignVars($id);
73
            }
74
        } else {
75
            $this->setNew();
76
        }
77
    }
78
79
    /**
80
     * @param string $datatype
81
     * @param int    $controltype
82
     * @return int
83
     */
84
    private function getDataType(string $datatype, int $controltype): ?int
85
    {
86
        switch ($controltype) {
87
            case \XHELP_CONTROL_TXTBOX:
88
                return $this->getXoopsDataType($datatype);
89
            case \XHELP_CONTROL_TXTAREA:
90
                return $this->getXoopsDataType($datatype);
91
            case \XHELP_CONTROL_SELECT:
92
                return \XOBJ_DTYPE_TXTAREA;
93
            case \XHELP_CONTROL_YESNO:
94
                return \XOBJ_DTYPE_INT;
95
            case \XHELP_CONTROL_RADIOBOX:
96
                return \XOBJ_DTYPE_TXTBOX;
97
            case \XHELP_CONTROL_DATETIME:
98
                return $this->getXoopsDataType($datatype);
99
            case \XHELP_CONTROL_FILE:
100
                return \XOBJ_DTYPE_TXTBOX;
101
            default:
102
                return \XOBJ_DTYPE_TXTBOX;
103
        }
104
    }
105
106
    /**
107
     * @param string $datatype
108
     * @return int
109
     */
110
    private function getXoopsDataType(string $datatype): ?int
111
    {
112
        switch ($datatype) {
113
            case \_XHELP_DATATYPE_TEXT:
114
                return \XOBJ_DTYPE_TXTBOX;
115
            case \_XHELP_DATATYPE_NUMBER_INT:
116
                return \XOBJ_DTYPE_INT;
117
            case \_XHELP_DATATYPE_NUMBER_DEC:
118
                return \XOBJ_DTYPE_OTHER;
119
            default:
120
                return \XOBJ_DTYPE_TXTBOX;
121
        }
122
    }
123
124
    /**
125
     * @param int $datatype
126
     * @return float|int|null|string
127
     */
128
    private function getValueFromXoopsDataType(int $datatype)
129
    {
130
        switch ($datatype) {
131
            case \XOBJ_DTYPE_TXTBOX:
132
            case \XOBJ_DTYPE_TXTAREA:
133
                return '';
134
            case \XOBJ_DTYPE_INT:
135
                return 0;
136
            case \XOBJ_DTYPE_OTHER:
137
                return 0.0;
138
            default:
139
                return null;
140
        }
141
    }
142
143
    /**
144
     * @return array
145
     */
146
    public function getTicketFields(): array
147
    {
148
        return $this->fields;
149
    }
150
}
151