Passed
Push — master ( 05ee30...e8b784 )
by Michael
05:15
created

ModuleFeedback   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 138
Duplicated Lines 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
wmc 5
eloc 88
c 1
b 1
f 0
dl 0
loc 138
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 2 1
B getFormFeedback() 0 102 2
A getInstance() 0 5 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace XoopsModules\Adslight\Common;
6
7
use XoopsConfigHandler;
8
use XoopsFormButtonTray;
9
use XoopsFormEditor;
10
use XoopsFormHidden;
11
use XoopsFormSelect;
12
use XoopsFormText;
13
use XoopsModuleHandler;
14
use XoopsObject;
15
use XoopsThemeForm;
16
17
/*
18
 You may not change or alter any portion of this comment or credits
19
 of supporting developers from this source code or any supporting source code
20
 which is considered copyrighted (c) material of the original comment or credit authors.
21
22
 This program is distributed in the hope that it will be useful,
23
 but WITHOUT ANY WARRANTY; without even the implied warranty of
24
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
25
*/
26
/**
27
 * Feedback plugin for xoops modules
28
 *
29
 * @copyright      XOOPS Project  (https://xoops.org)
30
 * @license        GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
31
 * @author         Michael Beck <[email protected]>
32
 * @author         Wedega - Email:<[email protected]>
33
 * @author         Fernando Santos (topet05) <[email protected]>
34
 */
35
\defined('XOOPS_ROOT_PATH') || die('Restricted access');
36
37
/**
38
 * Class Object ModuleFeedback
39
 */
40
class ModuleFeedback extends XoopsObject
41
{
42
    public $name    = '';
43
    public $email   = '';
44
    public $site    = '';
45
    public $type    = '';
46
    public $content = '';
47
48
    /**
49
     * Constructor
50
     *
51
     * @param null
52
     */
53
    public function __construct()
54
    {
55
    }
56
57
    /**
58
     * @static function &getInstance
59
     *
60
     * @param null
61
     */
62
    public static function getInstance(): void
63
    {
64
        static $instance = false;
65
        if (!$instance) {
66
            $instance = new self();
67
        }
68
    }
69
70
    /**
71
     * @public function getFormFeedback:
72
     * provide form for sending a feedback to module author
73
     * @param bool $action
74
     * @return XoopsThemeForm
75
     */
76
    public function getFormFeedback($action = false): XoopsThemeForm
77
    {
78
        if (!$action) {
79
            $action = $_SERVER['REQUEST_URI'];
0 ignored issues
show
Unused Code introduced by
The assignment to $action is dead and can be removed.
Loading history...
80
        }
81
82
        $moduleDirName      = \basename(\dirname(__DIR__, 2));
83
        $moduleDirNameUpper = \mb_strtoupper($moduleDirName);
84
        // Get Theme Form
85
        \xoops_load('XoopsFormLoader');
86
        $form = new \XoopsThemeForm(
87
            \constant(
88
                'CO_' . $moduleDirNameUpper . '_' . 'FB_FORM_TITLE'
89
            ), 'formfeedback', 'feedback.php', 'post', true
90
        );
91
        $form->setExtra('enctype="multipart/form-data"');
92
        $recipient = new \XoopsFormText(
93
            \constant(
94
                'CO_' . $moduleDirNameUpper . '_' . 'FB_RECIPIENT'
95
            ), 'recipient', 50, 255, $GLOBALS['xoopsModule']->getInfo(
96
            'author_mail'
97
        )
98
        );
99
        $recipient->setExtra('disabled="disabled"');
100
        $form->addElement($recipient);
101
        $your_name = new \XoopsFormText(
102
            \constant(
103
                'CO_' . $moduleDirNameUpper . '_' . 'FB_NAME'
104
            ), 'your_name', 50, 255, $this->name
105
        );
106
        $your_name->setExtra(
107
            'placeholder="' . \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_NAME_PLACEHOLER') . '"'
108
        );
109
        $form->addElement($your_name);
110
        $your_site = new \XoopsFormText(
111
            \constant(
112
                'CO_' . $moduleDirNameUpper . '_' . 'FB_SITE'
113
            ), 'your_site', 50, 255, $this->site
114
        );
115
        $your_site->setExtra(
116
            'placeholder="' . \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_SITE_PLACEHOLER') . '"'
117
        );
118
        $form->addElement($your_site);
119
        $your_mail = new \XoopsFormText(
120
            \constant(
121
                'CO_' . $moduleDirNameUpper . '_' . 'FB_MAIL'
122
            ), 'your_mail', 50, 255, $this->email
123
        );
124
        $your_mail->setExtra(
125
            'placeholder="' . \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_MAIL_PLACEHOLER') . '"'
126
        );
127
        $form->addElement($your_mail);
128
        $fbtypeSelect = new \XoopsFormSelect(
129
            \constant(
130
                'CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE'
131
            ), 'fb_type', $this->type
132
        );
133
        $fbtypeSelect->addOption('', '');
134
        $fbtypeSelect->addOption(
135
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_SUGGESTION'),
136
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_SUGGESTION')
137
        );
138
        $fbtypeSelect->addOption(
139
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_BUGS'),
140
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_BUGS')
141
        );
142
        $fbtypeSelect->addOption(
143
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_TESTIMONIAL'),
144
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_TESTIMONIAL')
145
        );
146
        $fbtypeSelect->addOption(
147
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_FEATURES'),
148
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_FEATURES')
149
        );
150
        $fbtypeSelect->addOption(
151
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_OTHERS'),
152
            \constant('CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_OTHERS')
153
        );
154
        $form->addElement($fbtypeSelect, true);
155
        $editorConfigs           = [];
156
        $editorConfigs['name']   = 'fb_content';
157
        $editorConfigs['value']  = $this->content;
158
        $editorConfigs['rows']   = 5;
159
        $editorConfigs['cols']   = 40;
160
        $editorConfigs['width']  = '100%';
161
        $editorConfigs['height'] = '400px';
162
        /** @var XoopsModuleHandler $moduleHandler */
163
        $moduleHandler = \xoops_getHandler('module');
164
        $module        = $moduleHandler->getByDirname('system');
165
        /** @var XoopsConfigHandler $configHandler */
166
        $configHandler           = \xoops_getHandler('config');
167
        $config                  = $configHandler->getConfigsByCat(0, $module->getVar('mid'));
168
        $editorConfigs['editor'] = $config['general_editor'];
169
        $editor                  = new \XoopsFormEditor(
170
            \constant(
171
                'CO_' . $moduleDirNameUpper . '_' . 'FB_TYPE_CONTENT'
172
            ), 'fb_content', $editorConfigs
173
        );
174
        $form->addElement($editor, true);
175
        $form->addElement(new \XoopsFormHidden('op', 'send'));
176
        $form->addElement(new \XoopsFormButtonTray('', \_SUBMIT, 'submit', '', false));
177
        return $form;
178
    }
179
}
180