ModuleFeedback::getInstance()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 0
1
<?php declare(strict_types=1);
2
3
namespace XoopsModules\Suico\Common;
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
 * Feedback plugin for XOOPS modules
17
 *
18
 * @copyright      XOOPS Project  (https://xoops.org)
19
 * @license        GNU GPL 2.0 or later (https://www.gnu.org/licenses/gpl-2.0.html)
20
 * @author         Michael Beck <[email protected]>
21
 * @author         Wedega - Email:<[email protected]>
22
 * @author         Fernando Santos (topet05) <[email protected]>
23
 */
24
25
use XoopsFormButtonTray;
26
use XoopsFormEditor;
27
use XoopsFormHidden;
28
use XoopsFormSelect;
29
use XoopsFormText;
30
use XoopsObject;
31
use XoopsThemeForm;
32
33
/**
34
 * Class Object ModuleFeedback
35
 */
36
class ModuleFeedback extends XoopsObject
37
{
38
    public string $name    = '';
39
    public string $email   = '';
40
    public string $site    = '';
41
    public string $type    = '';
42
    public string $content = '';
43
44
    /**
45
     * Constructor
46
     */
47
    public function __construct()
48
    {
49
    }
50
51
    /**
52
     * @static function &getInstance
53
     */
54
    public static function getInstance(): void
55
    {
56
        static $instance = false;
57
        if (!$instance) {
58
            $instance = new self();
59
        }
60
    }
61
62
    /**
63
     * @public function getFormFeedback:
64
     * provide form for sending a feedback to module author
65
     * @param bool $action
66
     * @return \XoopsThemeForm
67
     */
68
    public function getFormFeedback(
69
        $action = false
70
    ) {
71
        if (!$action) {
72
            $action = $_SERVER['REQUEST_URI'];
0 ignored issues
show
Unused Code introduced by
The assignment to $action is dead and can be removed.
Loading history...
73
        }
74
        $moduleDirName      = \basename(\dirname(__DIR__, 2));
75
        $moduleDirNameUpper = \mb_strtoupper($moduleDirName);
76
        // Get Theme Form
77
        \xoops_load('XoopsFormLoader');
78
        $form = new XoopsThemeForm(
79
            \constant(
80
                'CO_' . $moduleDirNameUpper . '_' . 'FB_FORM_TITLE'
81
            ), 'formfeedback', 'feedback.php', 'post', true
82
        );
83
        $form->setExtra('enctype="multipart/form-data"');
84
        $recipient = new XoopsFormText(
85
            \constant(
86
                'CO_' . $moduleDirNameUpper . '_' . 'FB_RECIPIENT'
87
            ), 'recipient', 50, 255, $GLOBALS['xoopsModule']->getInfo(
88
                'author_mail'
89
            )
90
        );
91
        $recipient->setExtra('disabled="disabled"');
92
        $form->addElement($recipient);
93
        $your_name = new XoopsFormText(
94
            \constant(
95
                'CO_' . $moduleDirNameUpper . '_' . 'FB_NAME'
96
            ), 'your_name', 50, 255, $this->name
97
        );
98
        $your_name->setExtra(
99
            'placeholder="' . \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_NAME_PLACEHOLER') . '"'
100
        );
101
        $form->addElement($your_name);
102
        $your_site = new XoopsFormText(
103
            \constant(
104
                'CO_' . $moduleDirNameUpper . '_' . 'FB_SITE'
105
            ), 'your_site', 50, 255, $this->site
106
        );
107
        $your_site->setExtra(
108
            'placeholder="' . \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_SITE_PLACEHOLER') . '"'
109
        );
110
        $form->addElement($your_site);
111
        $your_mail = new XoopsFormText(
112
            \constant(
113
                'CO_' . $moduleDirNameUpper . '_' . 'FB_MAIL'
114
            ), 'your_mail', 50, 255, $this->email
115
        );
116
        $your_mail->setExtra(
117
            'placeholder="' . \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_MAIL_PLACEHOLER') . '"'
118
        );
119
        $form->addElement($your_mail);
120
        $fbtypeSelect = new XoopsFormSelect(
121
            \constant(
122
                'CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE'
123
            ), 'fb_type', $this->type
124
        );
125
        $fbtypeSelect->addOption('', '');
126
        $fbtypeSelect->addOption(
127
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_SUGGESTION'),
128
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_SUGGESTION')
129
        );
130
        $fbtypeSelect->addOption(
131
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_BUGS'),
132
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_BUGS')
133
        );
134
        $fbtypeSelect->addOption(
135
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_TESTIMONIAL'),
136
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_TESTIMONIAL')
137
        );
138
        $fbtypeSelect->addOption(
139
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_FEATURES'),
140
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_FEATURES')
141
        );
142
        $fbtypeSelect->addOption(
143
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_OTHERS'),
144
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_OTHERS')
145
        );
146
        $form->addElement($fbtypeSelect, true);
147
        $editorConfigs           = [];
148
        $editorConfigs['name']   = 'fb_content';
149
        $editorConfigs['value']  = $this->content;
150
        $editorConfigs['rows']   = 5;
151
        $editorConfigs['cols']   = 40;
152
        $editorConfigs['width']  = '100%';
153
        $editorConfigs['height'] = '400px';
154
        /** @var \XoopsModuleHandler $moduleHandler */
155
        $moduleHandler = \xoops_getHandler('module');
156
        $module        = $moduleHandler->getByDirname('system');
157
        /** @var \XoopsConfigHandler $configHandler */
158
        $configHandler           = \xoops_getHandler('config');
159
        $config                  = $configHandler->getConfigsByCat(0, $module->getVar('mid'));
160
        $editorConfigs['editor'] = $config['general_editor'];
161
        $editor                  = new XoopsFormEditor(
162
            \constant(
163
                'CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_CONTENT'
164
            ), 'fb_content', $editorConfigs
165
        );
166
        $form->addElement($editor, true);
167
        $form->addElement(new XoopsFormHidden('op', 'send'));
168
        $form->addElement(new XoopsFormButtonTray('', \_SUBMIT, 'submit', '', false));
169
170
        return $form;
171
    }
172
}
173