| Total Complexity | 377 |
| Total Lines | 1298 |
| Duplicated Lines | 0 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
Complex classes like FormController often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use FormController, and based on these observations, apply Extract Interface, too.
| 1 | <?php declare(strict_types=1); |
||
| 17 | class FormController |
||
| 18 | { |
||
| 19 | /** |
||
| 20 | * Get {@link XoopsThemeForm} for adding/editing fields |
||
| 21 | * |
||
| 22 | * @param object $field {@link ProfileField} object to get edit form for |
||
| 23 | * @param mixed $action URL to submit to - or false for $_SERVER['SCRIPT_NAME'] |
||
| 24 | * |
||
| 25 | * @return object |
||
| 26 | */ |
||
| 27 | public static function getFieldForm($field, $action = false) |
||
| 28 | { |
||
| 29 | if (false === $action) { |
||
| 30 | $action = $_SERVER['SCRIPT_NAME']; |
||
| 31 | } |
||
| 32 | |||
| 33 | $helper = Helper::getInstance(); |
||
| 34 | $helper->loadLanguage('forms'); |
||
| 35 | |||
| 36 | $title = $field->isNew() ? sprintf(_FRM_SONGLIST_FIELDS_ADD, _FRM_SONGLIST_FIELDS_FIELD) : sprintf(_FRM_SONGLIST_FIELDS_EDIT, _FRM_SONGLIST_FIELDS_FIELD); |
||
| 37 | |||
| 38 | xoops_load('XoopsFormLoader'); |
||
| 39 | |||
| 40 | $form = new \XoopsThemeForm($title, 'form', $action, 'post', true); |
||
| 41 | |||
| 42 | $form->addElement(new \XoopsFormText(_FRM_SONGLIST_FIELDS_TITLE, 'field_title', 35, 255, $field->getVar('field_title', 'e'))); |
||
| 43 | $form->addElement(new \XoopsFormTextArea(_FRM_SONGLIST_FIELDS_DESCRIPTION, 'field_description', $field->getVar('field_description', 'e'))); |
||
| 44 | |||
| 45 | if ($field->isNew()) { |
||
| 46 | $fieldcid = [1 => 0]; |
||
| 47 | } else { |
||
| 48 | $fieldcid = $field->getVar('cids'); |
||
| 49 | } |
||
| 50 | $categoryHandler = Helper::getInstance() |
||
| 51 | ->getHandler('Category'); |
||
| 52 | $cat_select = new \XoopsFormSelect(_FRM_SONGLIST_FIELDS_CATEGORY, 'cids', $fieldcid, 7, true); |
||
| 53 | $cat_select->addOption(0, _FRM_SONGLIST_FIELDS_DEFAULT); |
||
| 54 | foreach ($categoryHandler->getObjects(null, true) as $cid => $category) { |
||
| 55 | $cat_select->addOption($cid, $category->getVar('name')); |
||
| 56 | } |
||
| 57 | $form->addElement($cat_select); |
||
| 58 | $form->addElement(new \XoopsFormText(_FRM_SONGLIST_FIELDS_WEIGHT, 'field_weight', 10, 10, $field->getVar('field_weight', 'e'))); |
||
| 59 | if ($field->getVar('field_config') || $field->isNew()) { |
||
| 60 | if ($field->isNew()) { |
||
| 61 | $form->addElement(new \XoopsFormText(_FRM_SONGLIST_FIELDS_NAME, 'field_name', 35, 255, $field->getVar('field_name', 'e'))); |
||
| 62 | } else { |
||
| 63 | $form->addElement(new \XoopsFormLabel(_FRM_SONGLIST_FIELDS_NAME, $field->getVar('field_name'))); |
||
| 64 | $form->addElement(new \XoopsFormHidden('id', $field->getVar('field_id'))); |
||
| 65 | } |
||
| 66 | |||
| 67 | //autotext and theme left out of this one as fields of that type should never be changed (valid assumption, I think) |
||
| 68 | $fieldtypes = [ |
||
| 69 | 'checkbox' => _FRM_SONGLIST_FIELDS_CHECKBOX, |
||
| 70 | 'date' => _FRM_SONGLIST_FIELDS_DATE, |
||
| 71 | 'datetime' => _FRM_SONGLIST_FIELDS_DATETIME, |
||
| 72 | 'longdate' => _FRM_SONGLIST_FIELDS_LONGDATE, |
||
| 73 | 'group' => _FRM_SONGLIST_FIELDS_GROUP, |
||
| 74 | 'group_multi' => _FRM_SONGLIST_FIELDS_GROUPMULTI, |
||
| 75 | 'language' => _FRM_SONGLIST_FIELDS_LANGUAGE, |
||
| 76 | 'radio' => _FRM_SONGLIST_FIELDS_RADIO, |
||
| 77 | 'select' => _FRM_SONGLIST_FIELDS_SELECT, |
||
| 78 | 'select_multi' => _FRM_SONGLIST_FIELDS_SELECTMULTI, |
||
| 79 | 'textarea' => _FRM_SONGLIST_FIELDS_TEXTAREA, |
||
| 80 | 'dhtml' => _FRM_SONGLIST_FIELDS_DHTMLTEXTAREA, |
||
| 81 | 'textbox' => _FRM_SONGLIST_FIELDS_TEXTBOX, |
||
| 82 | 'timezone' => _FRM_SONGLIST_FIELDS_TIMEZONE, |
||
| 83 | 'yesno' => _FRM_SONGLIST_FIELDS_YESNO, |
||
| 84 | ]; |
||
| 85 | |||
| 86 | $element_select = new \XoopsFormSelect(_FRM_SONGLIST_FIELDS_TYPE, 'field_type', $field->getVar('field_type', 'e')); |
||
| 87 | $element_select->addOptionArray($fieldtypes); |
||
| 88 | |||
| 89 | $form->addElement($element_select); |
||
| 90 | |||
| 91 | switch ($field->getVar('field_type')) { |
||
| 92 | case 'textbox': |
||
| 93 | $valuetypes = [ |
||
| 94 | XOBJ_DTYPE_ARRAY => _FRM_SONGLIST_FIELDS_ARRAY, |
||
| 95 | XOBJ_DTYPE_EMAIL => _FRM_SONGLIST_FIELDS_EMAIL, |
||
| 96 | XOBJ_DTYPE_INT => _FRM_SONGLIST_FIELDS_INT, |
||
| 97 | XOBJ_DTYPE_FLOAT => _FRM_SONGLIST_FIELDS_FLOAT, |
||
| 98 | XOBJ_DTYPE_DECIMAL => _FRM_SONGLIST_FIELDS_DECIMAL, |
||
| 99 | XOBJ_DTYPE_TXTAREA => _FRM_SONGLIST_FIELDS_TXTAREA, |
||
| 100 | XOBJ_DTYPE_TXTBOX => _FRM_SONGLIST_FIELDS_TXTBOX, |
||
| 101 | XOBJ_DTYPE_URL => _FRM_SONGLIST_FIELDS_URL, |
||
| 102 | XOBJ_DTYPE_OTHER => _FRM_SONGLIST_FIELDS_OTHER, |
||
| 103 | ]; |
||
| 104 | |||
| 105 | $type_select = new \XoopsFormSelect(_FRM_SONGLIST_FIELDS_VALUETYPE, 'field_valuetype', $field->getVar('field_valuetype', 'e')); |
||
| 106 | $type_select->addOptionArray($valuetypes); |
||
| 107 | $form->addElement($type_select); |
||
| 108 | break; |
||
| 109 | case 'select': |
||
| 110 | case 'radio': |
||
| 111 | $valuetypes = [ |
||
| 112 | XOBJ_DTYPE_ARRAY => _FRM_SONGLIST_FIELDS_ARRAY, |
||
| 113 | XOBJ_DTYPE_EMAIL => _FRM_SONGLIST_FIELDS_EMAIL, |
||
| 114 | XOBJ_DTYPE_INT => _FRM_SONGLIST_FIELDS_INT, |
||
| 115 | XOBJ_DTYPE_FLOAT => _FRM_SONGLIST_FIELDS_FLOAT, |
||
| 116 | XOBJ_DTYPE_DECIMAL => _FRM_SONGLIST_FIELDS_DECIMAL, |
||
| 117 | XOBJ_DTYPE_TXTAREA => _FRM_SONGLIST_FIELDS_TXTAREA, |
||
| 118 | XOBJ_DTYPE_TXTBOX => _FRM_SONGLIST_FIELDS_TXTBOX, |
||
| 119 | XOBJ_DTYPE_URL => _FRM_SONGLIST_FIELDS_URL, |
||
| 120 | XOBJ_DTYPE_OTHER => _FRM_SONGLIST_FIELDS_OTHER, |
||
| 121 | ]; |
||
| 122 | |||
| 123 | $type_select = new \XoopsFormSelect(_FRM_SONGLIST_FIELDS_VALUETYPE, 'field_valuetype', $field->getVar('field_valuetype', 'e')); |
||
| 124 | $type_select->addOptionArray($valuetypes); |
||
| 125 | $form->addElement($type_select); |
||
| 126 | break; |
||
| 127 | } |
||
| 128 | |||
| 129 | //$form->addElement(new \XoopsFormRadioYN(_FRM_SONGLIST_FIELDS_NOTNULL, 'field_notnull', $field->getVar('field_notnull', 'e') )); |
||
| 130 | |||
| 131 | if ('select' === $field->getVar('field_type') || 'select_multi' === $field->getVar('field_type') || 'radio' === $field->getVar('field_type') || 'checkbox' === $field->getVar('field_type')) { |
||
| 132 | $options = $field->getVar('field_options'); |
||
| 133 | if (count($options) > 0) { |
||
| 134 | $remove_options = new \XoopsFormCheckBox(_FRM_SONGLIST_FIELDS_REMOVEOPTIONS, 'removeOptions'); |
||
| 135 | $remove_options->columns = 3; |
||
| 136 | asort($options); |
||
| 137 | foreach (array_keys($options) as $key) { |
||
| 138 | $options[$key] .= "[{$key}]"; |
||
| 139 | } |
||
| 140 | $remove_options->addOptionArray($options); |
||
| 141 | $form->addElement($remove_options); |
||
| 142 | } |
||
| 143 | |||
| 144 | $option_text = "<table cellspacing='1'><tr><td width='20%'>" . _FRM_SONGLIST_FIELDS_KEY . '</td><td>' . _FRM_SONGLIST_FIELDS_VALUE . '</td></tr>'; |
||
| 145 | for ($i = 0; $i < 3; ++$i) { |
||
| 146 | $option_text .= "<tr><td><input type='text' name='addOption[{$i}][key]' id='addOption[{$i}][key]' size='15'></td><td><input type='text' name='addOption[{$i}][value]' id='addOption[{$i}][value]' size='35'></td></tr>"; |
||
| 147 | $option_text .= "<tr height='3px'><td colspan='2'> </td></tr>"; |
||
| 148 | } |
||
| 149 | $option_text .= '</table>'; |
||
| 150 | $form->addElement(new \XoopsFormLabel(_FRM_SONGLIST_FIELDS_ADDOPTION, $option_text)); |
||
| 151 | } |
||
| 152 | } |
||
| 153 | |||
| 154 | if ($field->getVar('field_edit')) { |
||
| 155 | switch ($field->getVar('field_type')) { |
||
| 156 | case 'textbox': |
||
| 157 | case 'textarea': |
||
| 158 | case 'dhtml': |
||
| 159 | $form->addElement(new \XoopsFormText(_FRM_SONGLIST_FIELDS_MAXLENGTH, 'field_maxlength', 35, 35, $field->getVar('field_maxlength', 'e'))); |
||
| 160 | $form->addElement(new \XoopsFormTextArea(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', $field->getVar('field_default', 'e'))); |
||
| 161 | break; |
||
| 162 | case 'checkbox': |
||
| 163 | case 'select_multi': |
||
| 164 | $def_value = null !== $field->getVar('field_default', 'e') ? unserialize(($field->getVar('field_default', 'n')) ?? '') : null; |
||
| 165 | $element = new \XoopsFormSelect(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', $def_value, 8, true); |
||
| 166 | $options = $field->getVar('field_options'); |
||
| 167 | asort($options); |
||
| 168 | // If options do not include an empty element, then add a blank option to prevent any default selection |
||
| 169 | if (!array_key_exists('', $options)) { |
||
| 170 | $element->addOption('', _NONE); |
||
| 171 | } |
||
| 172 | $element->addOptionArray($options); |
||
| 173 | $form->addElement($element); |
||
| 174 | break; |
||
| 175 | case 'select': |
||
| 176 | case 'radio': |
||
| 177 | $def_value = null !== $field->getVar('field_default', 'e') ? $field->getVar('field_default') : null; |
||
| 178 | $element = new \XoopsFormSelect(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', $def_value); |
||
| 179 | $options = $field->getVar('field_options'); |
||
| 180 | asort($options); |
||
| 181 | // If options do not include an empty element, then add a blank option to prevent any default selection |
||
| 182 | if (!array_key_exists('', $options)) { |
||
| 183 | $element->addOption('', _NONE); |
||
| 184 | } |
||
| 185 | $element->addOptionArray($options); |
||
| 186 | $form->addElement($element); |
||
| 187 | break; |
||
| 188 | case 'date': |
||
| 189 | $form->addElement(new \XoopsFormTextDateSelect(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', 15, $field->getVar('field_default', 'e'))); |
||
| 190 | break; |
||
| 191 | case 'longdate': |
||
| 192 | $form->addElement(new \XoopsFormTextDateSelect(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', 15, strtotime($field->getVar('field_default', 'e')))); |
||
| 193 | break; |
||
| 194 | case 'datetime': |
||
| 195 | $form->addElement(new \XoopsFormDateTime(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', 15, $field->getVar('field_default', 'e'))); |
||
| 196 | break; |
||
| 197 | case 'yesno': |
||
| 198 | $form->addElement(new \XoopsFormRadioYN(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', $field->getVar('field_default', 'e'))); |
||
| 199 | break; |
||
| 200 | case 'timezone': |
||
| 201 | $form->addElement(new \XoopsFormSelectTimezone(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', $field->getVar('field_default', 'e'))); |
||
| 202 | break; |
||
| 203 | case 'language': |
||
| 204 | $form->addElement(new \XoopsFormSelectLang(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', $field->getVar('field_default', 'e'))); |
||
| 205 | break; |
||
| 206 | case 'group': |
||
| 207 | $form->addElement(new \XoopsFormSelectGroup(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', true, $field->getVar('field_default', 'e'))); |
||
| 208 | break; |
||
| 209 | case 'group_multi': |
||
| 210 | $form->addElement(new \XoopsFormSelectGroup(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', true, $field->getVar('field_default', 'e'), 5, true)); |
||
| 211 | break; |
||
| 212 | case 'theme': |
||
| 213 | $form->addElement(new \XoopsFormSelectTheme(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', $field->getVar('field_default', 'e'))); |
||
| 214 | break; |
||
| 215 | case 'autotext': |
||
| 216 | $form->addElement(new \XoopsFormTextArea(_FRM_SONGLIST_FIELDS_DEFAULT, 'field_default', $field->getVar('field_default', 'e'))); |
||
| 217 | break; |
||
| 218 | } |
||
| 219 | } |
||
| 220 | |||
| 221 | /** @var \XoopsGroupPermHandler $grouppermHandler */ |
||
| 222 | $grouppermHandler = xoops_getHandler('groupperm'); |
||
| 223 | $searchable_types = [ |
||
| 224 | 'textbox', |
||
| 225 | 'select', |
||
| 226 | 'radio', |
||
| 227 | 'yesno', |
||
| 228 | 'date', |
||
| 229 | 'datetime', |
||
| 230 | 'timezone', |
||
| 231 | 'language', |
||
| 232 | ]; |
||
| 233 | if (in_array($field->getVar('field_type'), $searchable_types, true)) { |
||
| 234 | $search_groups = $grouppermHandler->getGroupIds('songlist_search', $field->getVar('field_id'), $GLOBALS['songlistModule']->getVar('mid')); |
||
| 235 | $form->addElement(new \XoopsFormSelectGroup(_FRM_SONGLIST_FIELDS_PROF_SEARCH, 'songlist_search', true, $search_groups, 5, true)); |
||
| 236 | } |
||
| 237 | if ($field->getVar('field_edit') || $field->isNew()) { |
||
| 238 | if ($field->isNew()) { |
||
| 239 | $editable_groups = []; |
||
| 240 | } else { |
||
| 241 | //Load groups |
||
| 242 | $editable_groups = $grouppermHandler->getGroupIds('songlist_edit', $field->getVar('field_id'), $GLOBALS['songlistModule']->getVar('mid')); |
||
| 243 | } |
||
| 244 | $form->addElement(new \XoopsFormSelectGroup(_FRM_SONGLIST_FIELDS_PROF_EDITABLE, 'songlist_edit', false, $editable_groups, 5, true)); |
||
| 245 | // $form->addElement($steps_select); |
||
| 246 | } |
||
| 247 | $form->addElement(new \XoopsFormHidden('op', 'save')); |
||
| 248 | $form->addElement(new \XoopsFormButton('', 'submit', _SUBMIT, 'submit')); |
||
| 249 | |||
| 250 | return $form; |
||
| 251 | } |
||
| 252 | |||
| 253 | /** |
||
| 254 | * Get {@link XoopsThemeForm} for editing a user |
||
| 255 | * |
||
| 256 | * @param bool $action |
||
| 257 | * @return object |
||
| 258 | * @internal param object $user <a href='psi_element://XoopsUser'>XoopsUser</a> to edit to edit |
||
| 259 | */ |
||
| 260 | public static function getUserSearchForm($action = false) |
||
| 261 | { |
||
| 262 | xoops_loadLanguage('forms', 'songlist'); |
||
| 263 | |||
| 264 | if (!$action) { |
||
| 265 | $action = $_SERVER['SCRIPT_NAME']; |
||
| 266 | } |
||
| 267 | if (empty($GLOBALS['xoopsConfigUser'])) { |
||
| 268 | /** @var \XoopsConfigHandler $configHandler */ |
||
| 269 | $configHandler = xoops_getHandler('config'); |
||
| 270 | $GLOBALS['xoopsConfigUser'] = $configHandler->getConfigsByCat(XOOPS_CONF_USER); |
||
| 271 | } |
||
| 272 | |||
| 273 | $helper = Helper::getInstance(); |
||
|
|
|||
| 274 | |||
| 275 | $title = _FRM_SONGLIST_FIELDS_SEARCH; |
||
| 276 | |||
| 277 | $form = new \XoopsThemeForm($title, 'search', $action, 'post', true); |
||
| 278 | |||
| 279 | $songlistHandler = Helper::getInstance() |
||
| 280 | ->getHandler('Profile', 'objects'); |
||
| 281 | // Get fields |
||
| 282 | $fields = $songlistHandler->loadFields(); |
||
| 283 | |||
| 284 | /** @var \XoopsGroupPermHandler $grouppermHandler */ |
||
| 285 | $grouppermHandler = xoops_getHandler('groupperm'); |
||
| 286 | /** @var \XoopsConfigHandler $configHandler */ |
||
| 287 | $configHandler = xoops_getHandler('config'); |
||
| 288 | $groups = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getGroups() : [XOOPS_GROUP_ANONYMOUS]; |
||
| 289 | /** @var \XoopsModuleHandler $moduleHandler */ |
||
| 290 | $moduleHandler = xoops_getHandler('module'); |
||
| 291 | $xoModule = $moduleHandler->getByDirname('objects'); |
||
| 292 | $modid = $xoModule->getVar('mid'); |
||
| 293 | |||
| 294 | // Get ids of fields that can be edited |
||
| 295 | /** @var \XoopsGroupPermHandler $grouppermHandler */ |
||
| 296 | $grouppermHandler = xoops_getHandler('groupperm'); |
||
| 297 | |||
| 298 | $editable_fields = $grouppermHandler->getItemIds('songlist_search', $groups, $modid); |
||
| 299 | |||
| 300 | $catHandler = Helper::getInstance() |
||
| 301 | ->getHandler('Category'); |
||
| 302 | |||
| 303 | $selcat = new \XoopsFormSelect('Form', 'cid', !empty($_REQUEST['cid']) ? Request::getInt('cid', 0, 'REQUEST') : 0, 1, false, false, false, true); |
||
| 304 | $selcat->setExtra(' onChange="window.location=\'' . XOOPS_URL . '/modules/objects/search.php?op=search&fct=form&cid=\'+document.search.cid.options[document.search.cid.selectedIndex].value"'); |
||
| 305 | |||
| 306 | $form->addElement($selcat, true); |
||
| 307 | |||
| 308 | $categories = []; |
||
| 309 | |||
| 310 | $criteria = new \CriteriaCompo(new \Criteria('cid', !empty($_REQUEST['cid']) ? Request::getInt('cid', 0, 'REQUEST') : '0'), 'OR'); |
||
| 311 | $all_categories = $catHandler->getObjects($criteria, true, false); |
||
| 312 | $count_fields = count($fields); |
||
| 313 | |||
| 314 | foreach (array_keys($fields) as $i) { |
||
| 315 | if (in_array($fields[$i]->getVar('field_id'), $editable_fields, true)) { |
||
| 316 | // Set default value for user fields if available |
||
| 317 | $fieldinfo['element'] = $fields[$i]->getSearchElement(); |
||
| 318 | $fieldinfo['required'] = false; |
||
| 319 | |||
| 320 | foreach ($fields[$i]->getVar('cids') as $catidid => $cid) { |
||
| 321 | if (array_key_exists($cid, $all_categories)) { |
||
| 322 | $key = $all_categories[$cid]['cat_weight'] * $count_fields + $cid; |
||
| 323 | $elements[$key][] = $fieldinfo; |
||
| 324 | $weights[$key][] = $fields[$i]->getVar('field_weight'); |
||
| 325 | $categories[$key] = $all_categories[$cid]; |
||
| 326 | } elseif (in_array(0, $fields[$i]->getVar('cids'), true)) { |
||
| 327 | $key = $all_categories[$cid]['cat_weight'] * $count_fields + $cid; |
||
| 328 | $elements[$key][] = $fieldinfo; |
||
| 329 | $weights[$key][] = $fields[$i]->getVar('field_weight'); |
||
| 330 | $categories[$key] = $all_categories[$cid]; |
||
| 331 | } |
||
| 332 | } |
||
| 333 | } |
||
| 334 | } |
||
| 335 | |||
| 336 | ksort($elements); |
||
| 337 | foreach (array_keys($elements) as $k) { |
||
| 338 | array_multisort($weights[$k], SORT_ASC, array_keys($elements[$k]), SORT_ASC, $elements[$k]); |
||
| 339 | $title = isset($categories[$k]) ? $categories[$k]['cat_title'] : _FRM_SONGLIST_FORM_DEFAULT; |
||
| 340 | $desc = isset($categories[$k]) ? $categories[$k]['cat_description'] : ''; |
||
| 341 | $form->addElement(new \XoopsFormLabel("<h3>{$title}</h3>", $desc), false); |
||
| 342 | foreach (array_keys($elements[$k]) as $i) { |
||
| 343 | $form->addElement($elements[$k][$i]['element'], $elements[$k][$i]['required']); |
||
| 344 | } |
||
| 345 | } |
||
| 346 | |||
| 347 | $form->addElement(new \XoopsFormHidden('fct', 'objects')); |
||
| 348 | $form->addElement(new \XoopsFormHidden('op', 'search')); |
||
| 349 | $form->addElement(new \XoopsFormButton('', 'submit', _SUBMIT, 'submit')); |
||
| 350 | |||
| 351 | return $form; |
||
| 352 | } |
||
| 353 | |||
| 354 | /** |
||
| 355 | * @param bool $as_array |
||
| 356 | * @return string |
||
| 357 | */ |
||
| 358 | public static function getFormImport($as_array = false): string |
||
| 359 | { |
||
| 360 | xoops_loadLanguage('forms', 'songlist'); |
||
| 361 | |||
| 362 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_ISNEW_IMPORT, 'import', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 363 | $sform->setExtra("enctype='multipart/form-data'"); |
||
| 364 | |||
| 365 | $ele['op'] = new \XoopsFormHidden('op', 'import'); |
||
| 366 | $ele['fct'] = new \XoopsFormHidden('fct', 'upload'); |
||
| 367 | $ele['xmlfile'] = new \XoopsFormFile((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_UPLOAD_XML : ''), 'xmlfile', 1024 * 1024 * 1024 * 32); |
||
| 368 | $ele['xmlfile']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_UPLOAD_XML_DESC : '')); |
||
| 369 | $ele['file'] = new \XoopsFormSelect((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_EXISTING_XML : ''), 'file'); |
||
| 370 | $ele['file']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_EXISTING_XML_DESC : '')); |
||
| 371 | $ele['file']->addOption('', '*********'); |
||
| 372 | xoops_load('XoopsLists'); |
||
| 373 | foreach (\XoopsLists::getFileListAsArray($GLOBALS['xoops']->path($GLOBALS['songlistModuleConfig']['upload_areas'])) as $file) { |
||
| 374 | if ('xml' === mb_substr($file, mb_strlen($file) - 3, 3)) { |
||
| 375 | $ele['file']->addOption($file, $file); |
||
| 376 | } |
||
| 377 | } |
||
| 378 | $ele['submit'] = new \XoopsFormButton('', 'submit', _SUBMIT, 'submit'); |
||
| 379 | |||
| 380 | $required = []; |
||
| 381 | |||
| 382 | foreach ($ele as $id => $obj) { |
||
| 383 | if (in_array($id, $required, true)) { |
||
| 384 | $sform->addElement($obj, true); |
||
| 385 | } else { |
||
| 386 | $sform->addElement($obj, false); |
||
| 387 | } |
||
| 388 | } |
||
| 389 | |||
| 390 | return $sform->render(); |
||
| 391 | } |
||
| 392 | |||
| 393 | /** |
||
| 394 | * @param $file |
||
| 395 | * @param bool $as_array |
||
| 396 | * @return string |
||
| 397 | */ |
||
| 398 | public static function getFormImportb($file, $as_array = false): string |
||
| 399 | { |
||
| 400 | xoops_loadLanguage('forms', 'songlist'); |
||
| 401 | |||
| 402 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_ISNEW_ELEMENTS, 'elements', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 403 | |||
| 404 | $filesize = filesize($GLOBALS['xoops']->path($GLOBALS['songlistModuleConfig']['upload_areas'] . $file)); |
||
| 405 | $mb = floor($filesize / 1024 / 1024); |
||
| 406 | if ($mb > 32) { |
||
| 407 | set_ini('memory_limit', ($mb + 128) . 'M'); |
||
| 408 | } |
||
| 409 | set_time_limit(3600); |
||
| 410 | |||
| 411 | $i = 0; |
||
| 412 | foreach (file($GLOBALS['xoops']->path($GLOBALS['songlistModuleConfig']['upload_areas'] . $_SESSION['xmlfile'])) as $data) { |
||
| 413 | ++$i; |
||
| 414 | if ($i < 20) { |
||
| 415 | $line .= htmlspecialchars($data, ENT_QUOTES | ENT_HTML5) . ($i < 19 ? "\n" : ''); |
||
| 416 | } |
||
| 417 | } |
||
| 418 | |||
| 419 | $ele['op'] = new \XoopsFormHidden('op', 'import'); |
||
| 420 | $ele['fct'] = new \XoopsFormHidden('fct', 'import'); |
||
| 421 | $ele['example'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_EXAMPLE : ''), '<pre>' . $line . '</pre>'); |
||
| 422 | $ele['example']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_EXAMPLE_DESC : '')); |
||
| 423 | $ele['collection'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_COLLECTION : ''), 'collection', 32, 128, 'collection'); |
||
| 424 | $ele['collection']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_COLLECTION_DESC : '')); |
||
| 425 | $ele['record'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_RECORD : ''), 'record', 32, 128, 'record'); |
||
| 426 | $ele['record']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_RECORD_DESC : '')); |
||
| 427 | $ele['genre'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_GENRES : ''), 'genre', 32, 128, 'genre'); |
||
| 428 | $ele['genre']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_GENRES_DESC : '')); |
||
| 429 | $ele['voice'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_VOICE : ''), 'voice', 32, 128, 'voice'); |
||
| 430 | $ele['voice']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_VOICE_DESC : '')); |
||
| 431 | $ele['category'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_CATEGORY : ''), 'category', 32, 128, 'category'); |
||
| 432 | $ele['category']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_CATEGORY_DESC : '')); |
||
| 433 | $ele['artist'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_ARTIST : ''), 'artist', 32, 128, 'artist'); |
||
| 434 | $ele['artist']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_ARTIST_DESC : '')); |
||
| 435 | $ele['album'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_ALBUM : ''), 'album', 32, 128, 'album'); |
||
| 436 | $ele['album']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_ALBUM_DESC : '')); |
||
| 437 | $ele['songid'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_SONGID : ''), 'songid', 32, 128, 'songid'); |
||
| 438 | $ele['songid']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_SONGID_DESC : '')); |
||
| 439 | $ele['traxid'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_TRAXID : ''), 'traxid', 32, 128, 'trackno'); |
||
| 440 | $ele['traxid']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_TRAXID_DESC : '')); |
||
| 441 | $ele['title'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_TITLE : ''), 'title', 32, 128, 'title'); |
||
| 442 | $ele['title']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_TITLE_DESC : '')); |
||
| 443 | $ele['lyrics'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_LYRICS : ''), 'lyrics', 32, 128, 'lyric'); |
||
| 444 | $ele['lyrics']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_LYRICS_DESC : '')); |
||
| 445 | $ele['tags'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_TAGS : ''), 'tags', 32, 128, 'tags'); |
||
| 446 | $ele['tags']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_TAGS_DESC : '')); |
||
| 447 | $ele['mp3'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_MP3 : ''), 'mp3', 32, 128, 'mp3'); |
||
| 448 | $ele['mp3']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ELEMENT_MP3_DESC : '')); |
||
| 449 | $extrasHandler = Helper::getInstance() |
||
| 450 | ->getHandler('Extras'); |
||
| 451 | $fields = $extrasHandler->getFields(null); |
||
| 452 | foreach ($fields as $field) { |
||
| 453 | $ele[$field->getVar('field_name')] = new \XoopsFormText((!$as_array ? $field->getVar('field_title') : ''), $field->getVar('field_name'), 32, 128, $field->getVar('field_name')); |
||
| 454 | $ele[$field->getVar('field_name')]->setDescription((!$as_array ? $field->getVar('field_description') : '')); |
||
| 455 | } |
||
| 456 | $ele['limiting'] = new \XoopsFormRadioYN((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_LIMITING : ''), 'limiting'); |
||
| 457 | $ele['limiting']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_LIMITING_DESC : '')); |
||
| 458 | $ele['records'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_RECORDS : ''), 'records', 10, 10, '250'); |
||
| 459 | $ele['records']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_RECORDS_DESC : '')); |
||
| 460 | $ele['wait'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_WAIT : ''), 'wait', 10, 10, '40'); |
||
| 461 | $ele['wait']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_IMPORT_WAIT_DESC : '')); |
||
| 462 | |||
| 463 | $ele['submit'] = new \XoopsFormButton('', 'submit', _SUBMIT, 'submit'); |
||
| 464 | |||
| 465 | $required = []; |
||
| 466 | |||
| 467 | foreach ($ele as $id => $obj) { |
||
| 468 | if (in_array($id, $required, true)) { |
||
| 469 | $sform->addElement($obj, true); |
||
| 470 | } else { |
||
| 471 | $sform->addElement($obj, false); |
||
| 472 | } |
||
| 473 | } |
||
| 474 | |||
| 475 | return $sform->render(); |
||
| 476 | } |
||
| 477 | |||
| 478 | /** |
||
| 479 | * @param $object |
||
| 480 | * @param bool $as_array |
||
| 481 | * @return array|string |
||
| 482 | */ |
||
| 483 | public static function getFormGenre($object, $as_array = false) |
||
| 484 | { |
||
| 485 | if (!is_object($object)) { |
||
| 486 | $handler = Helper::getInstance() |
||
| 487 | ->getHandler('Genre'); |
||
| 488 | $object = $handler->create(); |
||
| 489 | } |
||
| 490 | |||
| 491 | xoops_loadLanguage('forms', 'songlist'); |
||
| 492 | $ele = []; |
||
| 493 | |||
| 494 | if ($object->isNew()) { |
||
| 495 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_ISNEW_GENRE, 'genre', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 496 | $ele['mode'] = new \XoopsFormHidden('mode', 'new'); |
||
| 497 | } else { |
||
| 498 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_EDIT_GENRE, 'genre', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 499 | $ele['mode'] = new \XoopsFormHidden('mode', 'edit'); |
||
| 500 | } |
||
| 501 | |||
| 502 | $sform->setExtra("enctype='multipart/form-data'"); |
||
| 503 | |||
| 504 | $id = $object->getVar('gid'); |
||
| 505 | if (empty($id)) { |
||
| 506 | $id = '0'; |
||
| 507 | } |
||
| 508 | |||
| 509 | $ele['op'] = new \XoopsFormHidden('op', 'genre'); |
||
| 510 | $ele['fct'] = new \XoopsFormHidden('fct', 'save'); |
||
| 511 | if ($as_array) { |
||
| 512 | $ele['id'] = new \XoopsFormHidden('id[' . $id . ']', $id); |
||
| 513 | } else { |
||
| 514 | $ele['id'] = new \XoopsFormHidden('id', $id); |
||
| 515 | } |
||
| 516 | $ele['sort'] = new \XoopsFormHidden('sort', $_REQUEST['sort'] ?? 'created'); |
||
| 517 | $ele['order'] = new \XoopsFormHidden('order', $_REQUEST['order'] ?? 'DESC'); |
||
| 518 | $ele['start'] = new \XoopsFormHidden('start', (string)Request::getInt('start', 0, 'REQUEST')); |
||
| 519 | $ele['limit'] = new \XoopsFormHidden('limit', (string)Request::getInt('limit', 0, 'REQUEST')); |
||
| 520 | $ele['filter'] = new \XoopsFormHidden('filter', $_REQUEST['filter'] ?? '1,1'); |
||
| 521 | |||
| 522 | $ele['name'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_GENRE_NAME : ''), $id . '[name]', (!$as_array ? 55 : 21), 128, $object->getVar('name')); |
||
| 523 | $ele['name']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_GENRE_NAME_DESC : '')); |
||
| 524 | $ele['albums'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_GENRE_ALBUMS : ''), $object->getVar('albums')); |
||
| 525 | $ele['artists'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_GENRE_ARTISTS : ''), $object->getVar('artists')); |
||
| 526 | $ele['songs'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_GENRE_SONGS : ''), $object->getVar('songs')); |
||
| 527 | $ele['hits'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_GENRE_HITS : ''), $object->getVar('hits')); |
||
| 528 | $ele['rank'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_GENRE_RANK : ''), number_format(($object->getVar('rank') > 0 && $object->getVar('votes') > 0 ? $object->getVar('rank') / $object->getVar('votes') : 0), 2) . ' of 10'); |
||
| 529 | if ($object->getVar('created') > 0) { |
||
| 530 | $ele['created'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_GENRE_CREATED : ''), date(_DATESTRING, $object->getVar('created'))); |
||
| 531 | } |
||
| 532 | if ($object->getVar('updated') > 0) { |
||
| 533 | $ele['updated'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_GENRE_UPDATED : ''), date(_DATESTRING, $object->getVar('updated'))); |
||
| 534 | } |
||
| 535 | |||
| 536 | if ($as_array) { |
||
| 537 | return $ele; |
||
| 538 | } |
||
| 539 | |||
| 540 | $ele['submit'] = new \XoopsFormButton('', 'submit', _SUBMIT, 'submit'); |
||
| 541 | |||
| 542 | $required = ['name']; |
||
| 543 | |||
| 544 | foreach ($ele as $id => $obj) { |
||
| 545 | if (in_array($id, $required, true)) { |
||
| 546 | $sform->addElement($obj, true); |
||
| 547 | } else { |
||
| 548 | $sform->addElement($obj, false); |
||
| 549 | } |
||
| 550 | } |
||
| 551 | |||
| 552 | return $sform->render(); |
||
| 553 | } |
||
| 554 | |||
| 555 | /** |
||
| 556 | * @param $object |
||
| 557 | * @param bool $as_array |
||
| 558 | * @return array|string |
||
| 559 | */ |
||
| 560 | public static function getFormVoice($object, $as_array = false) |
||
| 561 | { |
||
| 562 | if (!is_object($object)) { |
||
| 563 | $handler = Helper::getInstance() |
||
| 564 | ->getHandler('Voice'); |
||
| 565 | $object = $handler->create(); |
||
| 566 | } |
||
| 567 | |||
| 568 | xoops_loadLanguage('forms', 'songlist'); |
||
| 569 | $ele = []; |
||
| 570 | |||
| 571 | if ($object->isNew()) { |
||
| 572 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_ISNEW_VOICE, 'voice', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 573 | $ele['mode'] = new \XoopsFormHidden('mode', 'new'); |
||
| 574 | } else { |
||
| 575 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_EDIT_VOICE, 'voice', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 576 | $ele['mode'] = new \XoopsFormHidden('mode', 'edit'); |
||
| 577 | } |
||
| 578 | |||
| 579 | $sform->setExtra("enctype='multipart/form-data'"); |
||
| 580 | |||
| 581 | $id = $object->getVar('vcid'); |
||
| 582 | if (empty($id)) { |
||
| 583 | $id = '0'; |
||
| 584 | } |
||
| 585 | |||
| 586 | $ele['op'] = new \XoopsFormHidden('op', 'voice'); |
||
| 587 | $ele['fct'] = new \XoopsFormHidden('fct', 'save'); |
||
| 588 | if ($as_array) { |
||
| 589 | $ele['id'] = new \XoopsFormHidden('id[' . $id . ']', $id); |
||
| 590 | } else { |
||
| 591 | $ele['id'] = new \XoopsFormHidden('id', $id); |
||
| 592 | } |
||
| 593 | $ele['sort'] = new \XoopsFormHidden('sort', $_REQUEST['sort'] ?? 'created'); |
||
| 594 | $ele['order'] = new \XoopsFormHidden('order', $_REQUEST['order'] ?? 'DESC'); |
||
| 595 | $ele['start'] = new \XoopsFormHidden('start', (string)Request::getInt('start', 0, 'REQUEST')); |
||
| 596 | $ele['limit'] = new \XoopsFormHidden('limit', (string)Request::getInt('limit', 0, 'REQUEST')); |
||
| 597 | $ele['filter'] = new \XoopsFormHidden('filter', $_REQUEST['filter'] ?? '1,1'); |
||
| 598 | |||
| 599 | $ele['name'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_VOICE_NAME : ''), $id . '[name]', (!$as_array ? 55 : 21), 128, $object->getVar('name')); |
||
| 600 | $ele['name']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_VOICE_NAME_DESC : '')); |
||
| 601 | $ele['albums'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_VOICE_ALBUMS : ''), $object->getVar('albums')); |
||
| 602 | $ele['artists'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_VOICE_ARTISTS : ''), $object->getVar('artists')); |
||
| 603 | $ele['songs'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_VOICE_SONGS : ''), $object->getVar('songs')); |
||
| 604 | $ele['hits'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_VOICE_HITS : ''), $object->getVar('hits')); |
||
| 605 | $ele['rank'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_VOICE_RANK : ''), number_format(($object->getVar('rank') > 0 && $object->getVar('votes') > 0 ? $object->getVar('rank') / $object->getVar('votes') : 0), 2) . ' of 10'); |
||
| 606 | if ($object->getVar('created') > 0) { |
||
| 607 | $ele['created'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_VOICE_CREATED : ''), date(_DATESTRING, $object->getVar('created'))); |
||
| 608 | } |
||
| 609 | if ($object->getVar('updated') > 0) { |
||
| 610 | $ele['updated'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_VOICE_UPDATED : ''), date(_DATESTRING, $object->getVar('updated'))); |
||
| 611 | } |
||
| 612 | |||
| 613 | if ($as_array) { |
||
| 614 | return $ele; |
||
| 615 | } |
||
| 616 | |||
| 617 | $ele['submit'] = new \XoopsFormButton('', 'submit', _SUBMIT, 'submit'); |
||
| 618 | |||
| 619 | $required = ['name']; |
||
| 620 | |||
| 621 | foreach ($ele as $id => $obj) { |
||
| 622 | if (in_array($id, $required, true)) { |
||
| 623 | $sform->addElement($obj, true); |
||
| 624 | } else { |
||
| 625 | $sform->addElement($obj, false); |
||
| 626 | } |
||
| 627 | } |
||
| 628 | |||
| 629 | return $sform->render(); |
||
| 630 | } |
||
| 631 | |||
| 632 | /** |
||
| 633 | * @param $object |
||
| 634 | * @param bool $as_array |
||
| 635 | * @return array|string |
||
| 636 | */ |
||
| 637 | public static function getFormAlbums($object, $as_array = false) |
||
| 638 | { |
||
| 639 | if (!is_object($object)) { |
||
| 640 | $handler = Helper::getInstance() |
||
| 641 | ->getHandler('Albums'); |
||
| 642 | $object = $handler->create(); |
||
| 643 | } |
||
| 644 | |||
| 645 | xoops_loadLanguage('forms', 'songlist'); |
||
| 646 | $ele = []; |
||
| 647 | |||
| 648 | if ($object->isNew()) { |
||
| 649 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_ISNEW_ALBUMS, 'albums', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 650 | $ele['mode'] = new \XoopsFormHidden('mode', 'new'); |
||
| 651 | } else { |
||
| 652 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_EDIT_ALBUMS, 'albums', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 653 | $ele['mode'] = new \XoopsFormHidden('mode', 'edit'); |
||
| 654 | } |
||
| 655 | |||
| 656 | $sform->setExtra("enctype='multipart/form-data'"); |
||
| 657 | |||
| 658 | $id = $object->getVar('abid'); |
||
| 659 | if (empty($id)) { |
||
| 660 | $id = '0'; |
||
| 661 | } |
||
| 662 | |||
| 663 | $ele['op'] = new \XoopsFormHidden('op', 'albums'); |
||
| 664 | $ele['fct'] = new \XoopsFormHidden('fct', 'save'); |
||
| 665 | if ($as_array) { |
||
| 666 | $ele['id'] = new \XoopsFormHidden('id[' . $id . ']', $id); |
||
| 667 | } else { |
||
| 668 | $ele['id'] = new \XoopsFormHidden('id', $id); |
||
| 669 | } |
||
| 670 | $ele['sort'] = new \XoopsFormHidden('sort', $_REQUEST['sort'] ?? 'created'); |
||
| 671 | $ele['order'] = new \XoopsFormHidden('order', $_REQUEST['order'] ?? 'DESC'); |
||
| 672 | $ele['start'] = new \XoopsFormHidden('start', (string)Request::getInt('start', 0, 'REQUEST')); |
||
| 673 | $ele['limit'] = new \XoopsFormHidden('limit', (string)Request::getInt('limit', 0, 'REQUEST')); |
||
| 674 | $ele['filter'] = new \XoopsFormHidden('filter', $_REQUEST['filter'] ?? '1,1'); |
||
| 675 | |||
| 676 | $ele['cid'] = new SelectCategoryForm((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_CATEGORY : ''), $id . '[cid]', $object->getVar('cid'), 1, false, false, false); |
||
| 677 | $ele['cid']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_CATEGORY_DESC : '')); |
||
| 678 | $ele['title'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_TITLE : ''), $id . '[title]', (!$as_array ? 55 : 21), 128, $object->getVar('title')); |
||
| 679 | $ele['title']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_TITLE_DESC : '')); |
||
| 680 | $ele['image'] = new \XoopsFormFile((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_UPLOAD_POSTER : ''), 'image', $GLOBALS['songlistModuleConfig']['filesize_upload']); |
||
| 681 | $ele['image']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_UPLOAD_POSTER_DESC : '')); |
||
| 682 | if ('' != $object->getVar('image') && file_exists($GLOBALS['xoops']->path($object->getVar('path') . $object->getVar('image')))) { |
||
| 683 | $ele['image_preview'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_POSTER : ''), '<img src="' . $object->getImage('image') . '" width="340px">'); |
||
| 684 | $ele['image_preview']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_POSTER_DESC : '')); |
||
| 685 | } |
||
| 686 | $ele['artists'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_ARTISTS : ''), $object->getVar('artists')); |
||
| 687 | $ele['songs'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_SONGS : ''), $object->getVar('songs')); |
||
| 688 | $ele['hits'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_HITS : ''), $object->getVar('hits')); |
||
| 689 | $ele['rank'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_RANK : ''), number_format(($object->getVar('rank') > 0 && $object->getVar('votes') > 0 ? $object->getVar('rank') / $object->getVar('votes') : 0), 2) . ' of 10'); |
||
| 690 | if ($object->getVar('created') > 0) { |
||
| 691 | $ele['created'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_CREATED : ''), date(_DATESTRING, $object->getVar('created'))); |
||
| 692 | } |
||
| 693 | if ($object->getVar('updated') > 0) { |
||
| 694 | $ele['updated'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_ALBUMS_UPDATED : ''), date(_DATESTRING, $object->getVar('updated'))); |
||
| 695 | } |
||
| 696 | |||
| 697 | if ($as_array) { |
||
| 698 | return $ele; |
||
| 699 | } |
||
| 700 | |||
| 701 | $ele['submit'] = new \XoopsFormButton('', 'submit', _SUBMIT, 'submit'); |
||
| 702 | |||
| 703 | $required = ['name', 'id', 'source']; |
||
| 704 | |||
| 705 | foreach ($ele as $id => $obj) { |
||
| 706 | if (in_array($id, $required, true)) { |
||
| 707 | $sform->addElement($obj, true); |
||
| 708 | } else { |
||
| 709 | $sform->addElement($obj, false); |
||
| 710 | } |
||
| 711 | } |
||
| 712 | |||
| 713 | return $sform->render(); |
||
| 714 | } |
||
| 715 | |||
| 716 | /** |
||
| 717 | * @param Songlist\Artists $object |
||
| 718 | * @param bool $as_array |
||
| 719 | * @return array|string |
||
| 720 | */ |
||
| 721 | public static function getFormArtists($object, $as_array = false) |
||
| 792 | } |
||
| 793 | |||
| 794 | /** |
||
| 795 | * @param $object |
||
| 796 | * @param bool $as_array |
||
| 797 | * @return array|string |
||
| 798 | */ |
||
| 799 | public static function getFormCategory($object, $as_array = false) |
||
| 885 | } |
||
| 886 | |||
| 887 | /** |
||
| 888 | * @param $object |
||
| 889 | * @param bool $as_array |
||
| 890 | * @return array|string |
||
| 891 | */ |
||
| 892 | public static function getFormUtf8map($object, $as_array = false) |
||
| 893 | { |
||
| 894 | if (!is_object($object)) { |
||
| 895 | $handler = Helper::getInstance() |
||
| 896 | ->getHandler('Utf8map'); |
||
| 897 | $object = $handler->create(); |
||
| 898 | } |
||
| 899 | |||
| 900 | xoops_loadLanguage('forms', 'songlist'); |
||
| 901 | $ele = []; |
||
| 902 | |||
| 903 | if ($object->isNew()) { |
||
| 904 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_ISNEW_UTF8MAP, 'utf8map', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 905 | $ele['mode'] = new \XoopsFormHidden('mode', 'new'); |
||
| 906 | } else { |
||
| 907 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_EDIT_UTF8MAP, 'utf8map', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 908 | $ele['mode'] = new \XoopsFormHidden('mode', 'edit'); |
||
| 909 | } |
||
| 910 | |||
| 911 | $sform->setExtra("enctype='multipart/form-data'"); |
||
| 912 | |||
| 913 | $id = $object->getVar('utfid'); |
||
| 914 | if (empty($id)) { |
||
| 915 | $id = '0'; |
||
| 916 | } |
||
| 917 | |||
| 918 | $ele['op'] = new \XoopsFormHidden('op', 'utf8map'); |
||
| 919 | $ele['fct'] = new \XoopsFormHidden('fct', 'save'); |
||
| 920 | if ($as_array) { |
||
| 921 | $ele['id'] = new \XoopsFormHidden('id[' . $id . ']', $id); |
||
| 922 | } else { |
||
| 923 | $ele['id'] = new \XoopsFormHidden('id', $id); |
||
| 924 | } |
||
| 925 | $ele['sort'] = new \XoopsFormHidden('sort', $_REQUEST['sort'] ?? 'created'); |
||
| 926 | $ele['order'] = new \XoopsFormHidden('order', $_REQUEST['order'] ?? 'DESC'); |
||
| 927 | $ele['start'] = new \XoopsFormHidden('start', (string)Request::getInt('start', 0, 'REQUEST')); |
||
| 928 | $ele['limit'] = new \XoopsFormHidden('limit', (string)Request::getInt('limit', 0, 'REQUEST')); |
||
| 929 | $ele['filter'] = new \XoopsFormHidden('filter', $_REQUEST['filter'] ?? '1,1'); |
||
| 930 | |||
| 931 | $ele['from'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_UTF8MAP_FROM : ''), $id . '[from]', (!$as_array ? 6 : 4), 2, $object->getVar('from')); |
||
| 932 | $ele['from']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_UTF8MAP_FROM_DESC : '')); |
||
| 933 | $ele['to'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_UTF8MAP_TO : ''), $id . '[to]', (!$as_array ? 6 : 4), 2, $object->getVar('to')); |
||
| 934 | $ele['to']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_UTF8MAP_TO_DESC : '')); |
||
| 935 | |||
| 936 | if ($object->getVar('created') > 0) { |
||
| 937 | $ele['created'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_UTF8MAP_CREATED : ''), date(_DATESTRING, $object->getVar('created'))); |
||
| 938 | } |
||
| 939 | if ($object->getVar('updated') > 0) { |
||
| 940 | $ele['updated'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_UTF8MAP_UPDATED : ''), date(_DATESTRING, $object->getVar('updated'))); |
||
| 941 | } |
||
| 942 | |||
| 943 | if ($as_array) { |
||
| 944 | return $ele; |
||
| 945 | } |
||
| 946 | |||
| 947 | $ele['submit'] = new \XoopsFormButton('', 'submit', _SUBMIT, 'submit'); |
||
| 948 | |||
| 949 | $required = ['from', 'to']; |
||
| 950 | |||
| 951 | foreach ($ele as $id => $obj) { |
||
| 952 | if (in_array($id, $required, true)) { |
||
| 953 | $sform->addElement($obj, true); |
||
| 954 | } else { |
||
| 955 | $sform->addElement($obj, false); |
||
| 956 | } |
||
| 957 | } |
||
| 958 | |||
| 959 | return $sform->render(); |
||
| 960 | } |
||
| 961 | |||
| 962 | /** |
||
| 963 | * @param $object |
||
| 964 | * @param bool $as_array |
||
| 965 | * @return array|string |
||
| 966 | */ |
||
| 967 | public static function getFormRequests($object, $as_array = false) |
||
| 968 | { |
||
| 969 | if (!is_object($object)) { |
||
| 970 | $handler = Helper::getInstance() |
||
| 971 | ->getHandler('Requests'); |
||
| 972 | $object = $handler->create(); |
||
| 973 | } |
||
| 974 | |||
| 975 | xoops_loadLanguage('forms', 'songlist'); |
||
| 976 | $ele = []; |
||
| 977 | |||
| 978 | if ($object->isNew()) { |
||
| 979 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_ISNEW_REQUESTS, 'requests', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 980 | $ele['mode'] = new \XoopsFormHidden('mode', 'new'); |
||
| 981 | } else { |
||
| 982 | $sform = new \XoopsThemeForm(_FRM_SONGLIST_FORM_EDIT_REQUESTS, 'requests', $_SERVER['SCRIPT_NAME'], 'post', true); |
||
| 983 | $ele['mode'] = new \XoopsFormHidden('mode', 'edit'); |
||
| 984 | } |
||
| 985 | |||
| 986 | $sform->setExtra("enctype='multipart/form-data'"); |
||
| 987 | |||
| 988 | $id = $object->getVar('rid'); |
||
| 989 | if (empty($id)) { |
||
| 990 | $id = '0'; |
||
| 991 | } |
||
| 992 | |||
| 993 | $ele['op'] = new \XoopsFormHidden('op', 'requests'); |
||
| 994 | $ele['fct'] = new \XoopsFormHidden('fct', 'save'); |
||
| 995 | if ($as_array) { |
||
| 996 | $ele['id'] = new \XoopsFormHidden('id', $id); |
||
| 997 | } else { |
||
| 998 | $ele['id'] = new \XoopsFormHidden('id[' . $id . ']', $id); |
||
| 999 | } |
||
| 1000 | $ele['sort'] = new \XoopsFormHidden('sort', $_REQUEST['sort'] ?? 'created'); |
||
| 1001 | $ele['order'] = new \XoopsFormHidden('order', $_REQUEST['order'] ?? 'DESC'); |
||
| 1002 | $ele['start'] = new \XoopsFormHidden('start', (string)Request::getInt('start', 0, 'REQUEST')); |
||
| 1003 | $ele['limit'] = new \XoopsFormHidden('limit', (string)Request::getInt('limit', 0, 'REQUEST')); |
||
| 1004 | $ele['filter'] = new \XoopsFormHidden('filter', $_REQUEST['filter'] ?? '1,1'); |
||
| 1005 | |||
| 1006 | $ele['artist'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_ARTIST : ''), $id . '[artist]', (!$as_array ? 55 : 21), 128, $object->getVar('artist')); |
||
| 1007 | $ele['artist']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_ARTIST_DESC : '')); |
||
| 1008 | $ele['album'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_ALBUM : ''), $id . '[album]', (!$as_array ? 55 : 21), 128, $object->getVar('album')); |
||
| 1009 | $ele['album']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_ALBUM_DESC : '')); |
||
| 1010 | $ele['title'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_TITLE : ''), $id . '[title]', (!$as_array ? 55 : 21), 128, $object->getVar('title')); |
||
| 1011 | $ele['title']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_TITLE_DESC : '')); |
||
| 1012 | $ele['lyrics'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_LYRICS : ''), $id . '[lyrics]', (!$as_array ? 55 : 21), 128, $object->getVar('lyrics')); |
||
| 1013 | $ele['lyrics']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_LYRICS_DESC : '')); |
||
| 1014 | |||
| 1015 | if (is_object($GLOBALS['xoopsUser'])) { |
||
| 1016 | $ele['uid'] = new \XoopsFormHidden('uid', $GLOBALS['xoopsUser']->getVar('uid')); |
||
| 1017 | $ele['name'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_NAME : ''), $id . '[name]', (!$as_array ? 55 : 21), 128, ($object->isNew() ? $GLOBALS['xoopsUser']->getVar('name') : $object->getVar('name'))); |
||
| 1018 | $ele['name']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_NAME_DESC : '')); |
||
| 1019 | $ele['email'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_EMAIL : ''), $id . '[email]', (!$as_array ? 55 : 21), 128, ($object->isNew() ? $GLOBALS['xoopsUser']->getVar('email') : $object->getVar('email'))); |
||
| 1020 | $ele['email']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_EMAIL_DESC : '')); |
||
| 1021 | } else { |
||
| 1022 | $ele['uid'] = new \XoopsFormHidden('uid', 0); |
||
| 1023 | $ele['name'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_NAME : ''), $id . '[name]', (!$as_array ? 55 : 21), 128, ($object->isNew() ? '' : $object->getVar('name'))); |
||
| 1024 | $ele['name']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_NAME_DESC : '')); |
||
| 1025 | $ele['email'] = new \XoopsFormText((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_EMAIL : ''), $id . '[email]', (!$as_array ? 55 : 21), 128, ($object->isNew() ? '' : $object->getVar('email'))); |
||
| 1026 | $ele['email']->setDescription((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_EMAIL_DESC : '')); |
||
| 1027 | } |
||
| 1028 | if ($object->getVar('created') > 0) { |
||
| 1029 | $ele['created'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_CREATED : ''), date(_DATESTRING, $object->getVar('created'))); |
||
| 1030 | } |
||
| 1031 | if ($object->getVar('updated') > 0) { |
||
| 1032 | $ele['updated'] = new \XoopsFormLabel((!$as_array ? _FRM_SONGLIST_FORM_REQUESTS_UPDATED : ''), date(_DATESTRING, $object->getVar('updated'))); |
||
| 1033 | } |
||
| 1034 | |||
| 1035 | if ($as_array) { |
||
| 1036 | return $ele; |
||
| 1037 | } |
||
| 1038 | |||
| 1039 | $ele['submit'] = new \XoopsFormButton('', 'submit', _SUBMIT, 'submit'); |
||
| 1040 | |||
| 1041 | $required = ['name', 'email']; |
||
| 1042 | |||
| 1043 | foreach ($ele as $id => $obj) { |
||
| 1044 | if (in_array($id, $required, true)) { |
||
| 1045 | $sform->addElement($obj, true); |
||
| 1046 | } else { |
||
| 1047 | $sform->addElement($obj, false); |
||
| 1048 | } |
||
| 1049 | } |
||
| 1050 | |||
| 1051 | return $sform->render(); |
||
| 1052 | } |
||
| 1053 | |||
| 1054 | /** |
||
| 1055 | * @param $object |
||
| 1056 | * @param bool $as_array |
||
| 1057 | * @return array|string |
||
| 1058 | */ |
||
| 1059 | public static function getFormSongs($object, $as_array = false) |
||
| 1233 | } |
||
| 1234 | |||
| 1235 | /** |
||
| 1236 | * @param $object |
||
| 1237 | * @param bool $as_array |
||
| 1238 | * @return array|string |
||
| 1239 | */ |
||
| 1240 | public static function getFormVotes($object, $as_array = false) |
||
| 1317 |