1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
19:
20:
21:
22: 23: 24: 25: 26: 27: 28: 29:
30: function profile_getFieldForm(ProfileField $field, $action = false)
31: {
32: if ($action === false) {
33: $action = $_SERVER['REQUEST_URI'];
34: }
35: $title = $field->isNew() ? sprintf(_PROFILE_AM_ADD, _PROFILE_AM_FIELD) : sprintf(_PROFILE_AM_EDIT, _PROFILE_AM_FIELD);
36:
37: include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
38: $form = new XoopsThemeForm($title, 'form', $action, 'post', true);
39:
40: $form->addElement(new XoopsFormText(_PROFILE_AM_TITLE, 'field_title', 35, 255, $field->getVar('field_title', 'e')));
41: $form->addElement(new XoopsFormTextArea(_PROFILE_AM_DESCRIPTION, 'field_description', $field->getVar('field_description', 'e')));
42:
43: $fieldcat_id = 0;
44: if (!$field->isNew()) {
45: $fieldcat_id = $field->getVar('cat_id');
46: }
47: $category_handler = xoops_getModuleHandler('category');
48: $cat_select = new XoopsFormSelect(_PROFILE_AM_CATEGORY, 'field_category', $fieldcat_id);
49: $cat_select->addOption(0, _PROFILE_AM_DEFAULT);
50: $cat_select->addOptionArray($category_handler->getList());
51: $form->addElement($cat_select);
52: $form->addElement(new XoopsFormText(_PROFILE_AM_WEIGHT, 'field_weight', 10, 10, $field->getVar('field_weight', 'e')));
53: if ($field->getVar('field_config') || $field->isNew()) {
54: if (!$field->isNew()) {
55: $form->addElement(new XoopsFormLabel(_PROFILE_AM_NAME, $field->getVar('field_name')));
56: $form->addElement(new XoopsFormHidden('id', $field->getVar('field_id')));
57: } else {
58: $form->addElement(new XoopsFormText(_PROFILE_AM_NAME, 'field_name', 35, 255, $field->getVar('field_name', 'e')));
59: }
60:
61:
62: $fieldtypes = array(
63: 'checkbox' => _PROFILE_AM_CHECKBOX,
64: 'date' => _PROFILE_AM_DATE,
65: 'datetime' => _PROFILE_AM_DATETIME,
66: 'longdate' => _PROFILE_AM_LONGDATE,
67: 'group' => _PROFILE_AM_GROUP,
68: 'group_multi' => _PROFILE_AM_GROUPMULTI,
69: 'language' => _PROFILE_AM_LANGUAGE,
70: 'radio' => _PROFILE_AM_RADIO,
71: 'select' => _PROFILE_AM_SELECT,
72: 'select_multi' => _PROFILE_AM_SELECTMULTI,
73: 'textarea' => _PROFILE_AM_TEXTAREA,
74: 'dhtml' => _PROFILE_AM_DHTMLTEXTAREA,
75: 'textbox' => _PROFILE_AM_TEXTBOX,
76: 'timezone' => _PROFILE_AM_TIMEZONE,
77: 'yesno' => _PROFILE_AM_YESNO);
78:
79: $element_select = new XoopsFormSelect(_PROFILE_AM_TYPE, 'field_type', $field->getVar('field_type', 'e'));
80: $element_select->addOptionArray($fieldtypes);
81:
82: $form->addElement($element_select);
83:
84: switch ($field->getVar('field_type')) {
85: case 'textbox':
86: $valuetypes = array(
87: XOBJ_DTYPE_TXTBOX => _PROFILE_AM_TXTBOX,
88: XOBJ_DTYPE_EMAIL => _PROFILE_AM_EMAIL,
89: XOBJ_DTYPE_INT => _PROFILE_AM_INT,
90: XOBJ_DTYPE_FLOAT => _PROFILE_AM_FLOAT,
91: XOBJ_DTYPE_DECIMAL => _PROFILE_AM_DECIMAL,
92: XOBJ_DTYPE_TXTAREA => _PROFILE_AM_TXTAREA,
93: XOBJ_DTYPE_URL => _PROFILE_AM_URL,
94: XOBJ_DTYPE_OTHER => _PROFILE_AM_OTHER,
95: XOBJ_DTYPE_ARRAY => _PROFILE_AM_ARRAY,
96: XOBJ_DTYPE_UNICODE_ARRAY => _PROFILE_AM_UNICODE_ARRAY,
97: XOBJ_DTYPE_UNICODE_TXTBOX => _PROFILE_AM_UNICODE_TXTBOX,
98: XOBJ_DTYPE_UNICODE_TXTAREA => _PROFILE_AM_UNICODE_TXTAREA,
99: XOBJ_DTYPE_UNICODE_EMAIL => _PROFILE_AM_UNICODE_EMAIL,
100: XOBJ_DTYPE_UNICODE_URL => _PROFILE_AM_UNICODE_URL);
101:
102: $type_select = new XoopsFormSelect(_PROFILE_AM_VALUETYPE, 'field_valuetype', $field->getVar('field_valuetype', 'e'));
103: $type_select->addOptionArray($valuetypes);
104: $form->addElement($type_select);
105: break;
106:
107: case 'select':
108: case 'radio':
109: $valuetypes = array(
110: XOBJ_DTYPE_TXTBOX => _PROFILE_AM_TXTBOX,
111: XOBJ_DTYPE_EMAIL => _PROFILE_AM_EMAIL,
112: XOBJ_DTYPE_INT => _PROFILE_AM_INT,
113: XOBJ_DTYPE_FLOAT => _PROFILE_AM_FLOAT,
114: XOBJ_DTYPE_DECIMAL => _PROFILE_AM_DECIMAL,
115: XOBJ_DTYPE_TXTAREA => _PROFILE_AM_TXTAREA,
116: XOBJ_DTYPE_URL => _PROFILE_AM_URL,
117: XOBJ_DTYPE_OTHER => _PROFILE_AM_OTHER,
118: XOBJ_DTYPE_ARRAY => _PROFILE_AM_ARRAY,
119: XOBJ_DTYPE_UNICODE_ARRAY => _PROFILE_AM_UNICODE_ARRAY,
120: XOBJ_DTYPE_UNICODE_TXTBOX => _PROFILE_AM_UNICODE_TXTBOX,
121: XOBJ_DTYPE_UNICODE_TXTAREA => _PROFILE_AM_UNICODE_TXTAREA,
122: XOBJ_DTYPE_UNICODE_EMAIL => _PROFILE_AM_UNICODE_EMAIL,
123: XOBJ_DTYPE_UNICODE_URL => _PROFILE_AM_UNICODE_URL);
124:
125: $type_select = new XoopsFormSelect(_PROFILE_AM_VALUETYPE, 'field_valuetype', $field->getVar('field_valuetype', 'e'));
126: $type_select->addOptionArray($valuetypes);
127: $form->addElement($type_select);
128: break;
129: }
130:
131:
132:
133: if ($field->getVar('field_type') === 'select' || $field->getVar('field_type') === 'select_multi' || $field->getVar('field_type') === 'radio' || $field->getVar('field_type') === 'checkbox') {
134: $options = $field->getVar('field_options');
135: if (count($options) > 0) {
136: $remove_options = new XoopsFormCheckBox(_PROFILE_AM_REMOVEOPTIONS, 'removeOptions');
137: $remove_options->columns = 3;
138: asort($options);
139: foreach (array_keys($options) as $key) {
140: $options[$key] .= "[{$key}]";
141: }
142: $remove_options->addOptionArray($options);
143: $form->addElement($remove_options);
144: }
145:
146: $option_text = "<table cellspacing='1'><tr><td class='width20'>" . _PROFILE_AM_KEY . '</td><td>' . _PROFILE_AM_VALUE . '</td></tr>';
147: for ($i = 0; $i < 3; ++$i) {
148: $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>";
149: $option_text .= "<tr height='3px'><td colspan='2'> </td></tr>";
150: }
151: $option_text .= '</table>';
152: $form->addElement(new XoopsFormLabel(_PROFILE_AM_ADDOPTION, $option_text));
153: }
154: }
155:
156: if ($field->getVar('field_edit')) {
157: switch ($field->getVar('field_type')) {
158: case 'textbox':
159: case 'textarea':
160: case 'dhtml':
161: $form->addElement(new XoopsFormText(_PROFILE_AM_MAXLENGTH, 'field_maxlength', 35, 35, $field->getVar('field_maxlength', 'e')));
162: $form->addElement(new XoopsFormTextArea(_PROFILE_AM_DEFAULT, 'field_default', $field->getVar('field_default', 'e')));
163: break;
164:
165: case 'checkbox':
166: case 'select_multi':
167: $def_value = $field->getVar('field_default', 'e') != null ? unserialize($field->getVar('field_default', 'n')) : null;
168: $element = new XoopsFormSelect(_PROFILE_AM_DEFAULT, 'field_default', $def_value, 8, true);
169: $options = $field->getVar('field_options');
170: asort($options);
171:
172:
173: if (!array_key_exists('', $options)) {
174: $element->addOption('', _NONE);
175: }
176: $element->addOptionArray($options);
177: $form->addElement($element);
178: break;
179:
180: case 'select':
181: case 'radio':
182: $def_value = $field->getVar('field_default', 'e') != null ? $field->getVar('field_default') : null;
183: $element = new XoopsFormSelect(_PROFILE_AM_DEFAULT, 'field_default', $def_value);
184: $options = $field->getVar('field_options');
185: asort($options);
186:
187:
188: if (!array_key_exists('', $options)) {
189: $element->addOption('', _NONE);
190: }
191: $element->addOptionArray($options);
192: $form->addElement($element);
193: break;
194:
195: case 'date':
196: $form->addElement(new XoopsFormTextDateSelect(_PROFILE_AM_DEFAULT, 'field_default', 15, $field->getVar('field_default', 'e')));
197: break;
198:
199: case 'longdate':
200: $form->addElement(new XoopsFormTextDateSelect(_PROFILE_AM_DEFAULT, 'field_default', 15, strtotime($field->getVar('field_default', 'e'))));
201: break;
202:
203: case 'datetime':
204: $form->addElement(new XoopsFormDateTime(_PROFILE_AM_DEFAULT, 'field_default', 15, $field->getVar('field_default', 'e')));
205: break;
206:
207: case 'yesno':
208: $form->addElement(new XoopsFormRadioYN(_PROFILE_AM_DEFAULT, 'field_default', $field->getVar('field_default', 'e')));
209: break;
210:
211: case 'timezone':
212: $form->addElement(new XoopsFormSelectTimezone(_PROFILE_AM_DEFAULT, 'field_default', $field->getVar('field_default', 'e')));
213: break;
214:
215: case 'language':
216: $form->addElement(new XoopsFormSelectLang(_PROFILE_AM_DEFAULT, 'field_default', $field->getVar('field_default', 'e')));
217: break;
218:
219: case 'group':
220: $form->addElement(new XoopsFormSelectGroup(_PROFILE_AM_DEFAULT, 'field_default', true, $field->getVar('field_default', 'e')));
221: break;
222:
223: case 'group_multi':
224: $form->addElement(new XoopsFormSelectGroup(_PROFILE_AM_DEFAULT, 'field_default', true, unserialize($field->getVar('field_default', 'n')), 5, true));
225: break;
226:
227: case 'theme':
228: $form->addElement(new XoopsFormSelectTheme(_PROFILE_AM_DEFAULT, 'field_default', $field->getVar('field_default', 'e')));
229: break;
230:
231: case 'autotext':
232: $form->addElement(new XoopsFormTextArea(_PROFILE_AM_DEFAULT, 'field_default', $field->getVar('field_default', 'e')));
233: break;
234: }
235: }
236:
237: $groupperm_handler = xoops_getHandler('groupperm');
238: $searchable_types = array(
239: 'textbox',
240: 'select',
241: 'radio',
242: 'yesno',
243: 'date',
244: 'datetime',
245: 'timezone',
246: 'language');
247: if (in_array($field->getVar('field_type'), $searchable_types)) {
248: $search_groups = $groupperm_handler->getGroupIds('profile_search', $field->getVar('field_id'), $GLOBALS['xoopsModule']->getVar('mid'));
249: $form->addElement(new XoopsFormSelectGroup(_PROFILE_AM_PROF_SEARCH, 'profile_search', true, $search_groups, 5, true));
250: }
251: if ($field->getVar('field_edit') || $field->isNew()) {
252: $editable_groups = array();
253: if (!$field->isNew()) {
254:
255: $editable_groups = $groupperm_handler->getGroupIds('profile_edit', $field->getVar('field_id'), $GLOBALS['xoopsModule']->getVar('mid'));
256: }
257: $form->addElement(new XoopsFormSelectGroup(_PROFILE_AM_PROF_EDITABLE, 'profile_edit', false, $editable_groups, 5, true));
258: $form->addElement(new XoopsFormRadioYN(_PROFILE_AM_REQUIRED, 'field_required', $field->getVar('field_required', 'e')));
259: $regstep_select = new XoopsFormSelect(_PROFILE_AM_PROF_REGISTER, 'step_id', $field->getVar('step_id', 'e'));
260: $regstep_select->addOption(0, _NO);
261: $regstep_handler = xoops_getModuleHandler('regstep');
262: $regstep_select->addOptionArray($regstep_handler->getList());
263: $form->addElement($regstep_select);
264: }
265: $form->addElement(new XoopsFormHidden('op', 'save'));
266: $form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
267:
268: return $form;
269: }
270:
271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281:
282: function profile_getRegisterForm(XoopsUser $user, $profile, $step = null)
283: {
284: global $opkey;
285: if (empty($opkey)) {
286: $opkey = 'profile_opname';
287: }
288: $next_opname = 'op' . mt_rand(10000, 99999);
289: $_SESSION[$opkey] = $next_opname;
290:
291: include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
292: if (empty($GLOBALS['xoopsConfigUser'])) {
293:
294: $config_handler = xoops_getHandler('config');
295: $GLOBALS['xoopsConfigUser'] = $config_handler->getConfigsByCat(XOOPS_CONF_USER);
296: }
297: $action = $_SERVER['REQUEST_URI'];
298: $step_no = $step['step_no'];
299: $use_token = $step['step_no'] > 0;
300: $reg_form = new XoopsThemeForm($step['step_name'], 'regform', $action, 'post', $use_token);
301:
302: if ($step['step_desc']) {
303: $reg_form->addElement(new XoopsFormLabel('', $step['step_desc']));
304: }
305:
306: if ($step_no == 1) {
307:
308:
309: $elements[0][] = array(
310: 'element' => new XoopsFormText(_US_NICKNAME, 'uname', 35, $GLOBALS['xoopsConfigUser']['maxuname'], $user->getVar('uname', 'e')),
311: 'required' => true);
312: $weights[0][] = 0;
313:
314: $elements[0][] = array('element' => new XoopsFormText(_US_EMAIL, 'email', 35, 255, $user->getVar('email', 'e')), 'required' => true);
315: $weights[0][] = 0;
316:
317: $elements[0][] = array('element' => new XoopsFormPassword(_US_PASSWORD, 'pass', 35, 32, ''), 'required' => true);
318: $weights[0][] = 0;
319:
320: $elements[0][] = array('element' => new XoopsFormPassword(_US_VERIFYPASS, 'vpass', 35, 32, ''), 'required' => true);
321: $weights[0][] = 0;
322: }
323:
324:
325: $profile_handler = xoops_getModuleHandler('profile');
326: $fields = $profile_handler->loadFields();
327: $_SESSION['profile_required'] = array();
328: foreach (array_keys($fields) as $i) {
329: if ($fields[$i]->getVar('step_id') == $step['step_id']) {
330: $fieldinfo['element'] = $fields[$i]->getEditElement($user, $profile);
331:
332: if ($fieldinfo['required'] = $fields[$i]->getVar('field_required')) {
333: $_SESSION['profile_required'][$fields[$i]->getVar('field_name')] = $fields[$i]->getVar('field_title');
334: }
335:
336: $key = $fields[$i]->getVar('cat_id');
337: $elements[$key][] = $fieldinfo;
338: $weights[$key][] = $fields[$i]->getVar('field_weight');
339: }
340: }
341: ksort($elements);
342:
343:
344: $cat_handler = xoops_getModuleHandler('category');
345: $categories = $cat_handler->getObjects(null, true, false);
346:
347: foreach (array_keys($elements) as $k) {
348: array_multisort($weights[$k], SORT_ASC, array_keys($elements[$k]), SORT_ASC, $elements[$k]);
349:
350:
351:
352:
353: foreach (array_keys($elements[$k]) as $i) {
354: $reg_form->addElement($elements[$k][$i]['element'], $elements[$k][$i]['required']);
355: }
356: }
357:
358:
359: if ($step_no == 1 && $GLOBALS['xoopsConfigUser']['reg_dispdsclmr'] != 0 && $GLOBALS['xoopsConfigUser']['reg_disclaimer'] != '') {
360: $disc_tray = new XoopsFormElementTray(_US_DISCLAIMER, '<br>');
361: $disc_text = new XoopsFormLabel('', "<div class=\"pad5\">" . $GLOBALS['myts']->displayTarea($GLOBALS['xoopsConfigUser']['reg_disclaimer'], 1) . '</div>');
362: $disc_tray->addElement($disc_text);
363: $agree_chk = new XoopsFormCheckBox('', 'agree_disc');
364: $agree_chk->addOption(1, _US_IAGREE);
365: $disc_tray->addElement($agree_chk);
366: $reg_form->addElement($disc_tray);
367: }
368: global $xoopsModuleConfig;
369: $useCaptchaAfterStep2 = $xoopsModuleConfig['profileCaptchaAfterStep1'] + 1;
370:
371: if ($step_no <= $useCaptchaAfterStep2) {
372: $reg_form->addElement(new XoopsFormCaptcha(), true);
373: }
374:
375: $reg_form->addElement(new XoopsFormHidden($next_opname, 'register'));
376: $reg_form->addElement(new XoopsFormHidden('uid', $user->getVar('uid')));
377: $reg_form->addElement(new XoopsFormHidden('step', $step_no));
378: $reg_form->addElement(new XoopsFormButton('', 'submitButton', _SUBMIT, 'submit'));
379:
380: return $reg_form;
381: }
382:
383: 384: 385: 386: 387: 388: 389: 390: 391:
392: function profile_getUserForm(XoopsUser $user, ProfileProfile $profile = null, $action = false)
393: {
394: if ($action === false) {
395: $action = $_SERVER['REQUEST_URI'];
396: }
397: if (empty($GLOBALS['xoopsConfigUser'])) {
398:
399: $config_handler = xoops_getHandler('config');
400: $GLOBALS['xoopsConfigUser'] = $config_handler->getConfigsByCat(XOOPS_CONF_USER);
401: }
402:
403: include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
404:
405: $title = $user->isNew() ? _PROFILE_AM_ADDUSER : _US_EDITPROFILE;
406:
407: $form = new XoopsThemeForm($title, 'userinfo', $action, 'post', true);
408:
409: $profile_handler = xoops_getModuleHandler('profile');
410:
411: if (!$profile) {
412:
413: $profile_handler = xoops_getModuleHandler('profile', 'profile');
414: $profile = $profile_handler->get($user->getVar('uid'));
415: }
416:
417: $fields = $profile_handler->loadFields();
418:
419:
420: $gperm_handler = xoops_getHandler('groupperm');
421: $editable_fields = $gperm_handler->getItemIds('profile_edit', $GLOBALS['xoopsUser']->getGroups(), $GLOBALS['xoopsModule']->getVar('mid'));
422:
423: if ($user->isNew() || $GLOBALS['xoopsUser']->isAdmin()) {
424: $elements[0][] = array(
425: 'element' => new XoopsFormText(_US_NICKNAME, 'uname', 25, $GLOBALS['xoopsUser']->isAdmin() ? 60 : $GLOBALS['xoopsConfigUser']['maxuname'], $user->getVar('uname', 'e')),
426: 'required' => 1);
427: $email_text = new XoopsFormText('', 'email', 30, 60, $user->getVar('email'));
428: } else {
429: $elements[0][] = array('element' => new XoopsFormLabel(_US_NICKNAME, $user->getVar('uname')), 'required' => 0);
430: $email_text = new XoopsFormLabel('', $user->getVar('email'));
431: }
432: $email_tray = new XoopsFormElementTray(_US_EMAIL, '<br>');
433: $email_tray->addElement($email_text, ($user->isNew() || $GLOBALS['xoopsUser']->isAdmin()) ? 1 : 0);
434: $weights[0][] = 0;
435: $elements[0][] = array('element' => $email_tray, 'required' => 0);
436: $weights[0][] = 0;
437:
438: if ($GLOBALS['xoopsUser']->isAdmin() && $user->getVar('uid') != $GLOBALS['xoopsUser']->getVar('uid')) {
439:
440: $pwd_text = new XoopsFormPassword('', 'password', 10, 32);
441: $pwd_text2 = new XoopsFormPassword('', 'vpass', 10, 32);
442: $pwd_tray = new XoopsFormElementTray(_US_PASSWORD . '<br>' . _US_TYPEPASSTWICE);
443: $pwd_tray->addElement($pwd_text);
444: $pwd_tray->addElement($pwd_text2);
445: $elements[0][] = array('element' => $pwd_tray, 'required' => 0);
446: $weights[0][] = 0;
447:
448: $level_radio = new XoopsFormRadio(_PROFILE_MA_USERLEVEL, 'level', $user->getVar('level'));
449: $level_radio->addOption(1, _PROFILE_MA_ACTIVE);
450: $level_radio->addOption(0, _PROFILE_MA_INACTIVE);
451:
452: $elements[0][] = array('element' => $level_radio, 'required' => 0);
453: $weights[0][] = 0;
454: }
455:
456: $elements[0][] = array('element' => new XoopsFormHidden('uid', $user->getVar('uid')), 'required' => 0);
457: $weights[0][] = 0;
458: $elements[0][] = array('element' => new XoopsFormHidden('op', 'save'), 'required' => 0);
459: $weights[0][] = 0;
460:
461: $cat_handler = xoops_getModuleHandler('category');
462: $categories = array();
463: $all_categories = $cat_handler->getObjects(null, true, false);
464: $count_fields = count($fields);
465:
466: foreach (array_keys($fields) as $i) {
467: if (in_array($fields[$i]->getVar('field_id'), $editable_fields)) {
468:
469: if ($user->isNew()) {
470: $default = $fields[$i]->getVar('field_default');
471: if ($default !== '' && $default !== null) {
472: $user->setVar($fields[$i]->getVar('field_name'), $default);
473: }
474: }
475:
476: if ($profile->getVar($fields[$i]->getVar('field_name'), 'n') === null) {
477: $default = $fields[$i]->getVar('field_default', 'n');
478: $profile->setVar($fields[$i]->getVar('field_name'), $default);
479: }
480:
481: $fieldinfo['element'] = $fields[$i]->getEditElement($user, $profile);
482: $fieldinfo['required'] = $fields[$i]->getVar('field_required');
483:
484: $key = @$all_categories[$fields[$i]->getVar('cat_id')]['cat_weight'] * $count_fields + $fields[$i]->getVar('cat_id');
485: $elements[$key][] = $fieldinfo;
486: $weights[$key][] = $fields[$i]->getVar('field_weight');
487: $categories[$key] = @$all_categories[$fields[$i]->getVar('cat_id')];
488: }
489: }
490:
491: if ($GLOBALS['xoopsUser'] && $GLOBALS['xoopsUser']->isAdmin()) {
492: xoops_loadLanguage('admin', 'profile');
493:
494: $gperm_handler = xoops_getHandler('groupperm');
495:
496: include_once $GLOBALS['xoops']->path('modules/system/constants.php');
497: if ($gperm_handler->checkRight('system_admin', XOOPS_SYSTEM_GROUP, $GLOBALS['xoopsUser']->getGroups(), 1)) {
498:
499: $group_select = new XoopsFormSelectGroup(_US_GROUPS, 'groups', false, $user->getGroups(), 5, true);
500: $elements[0][] = array('element' => $group_select, 'required' => 0);
501:
502: $weights[0][] = $count_fields + 1;
503: }
504: }
505:
506: ksort($elements);
507: foreach (array_keys($elements) as $k) {
508: array_multisort($weights[$k], SORT_ASC, array_keys($elements[$k]), SORT_ASC, $elements[$k]);
509: $title = isset($categories[$k]) ? $categories[$k]['cat_title'] : _PROFILE_MA_DEFAULT;
510: $desc = isset($categories[$k]) ? $categories[$k]['cat_description'] : '';
511: $form->addElement(new XoopsFormLabel("<h3>{$title}</h3>", $desc), false);
512: foreach (array_keys($elements[$k]) as $i) {
513: $form->addElement($elements[$k][$i]['element'], $elements[$k][$i]['required']);
514: }
515: }
516:
517: $form->addElement(new XoopsFormHidden('uid', $user->getVar('uid')));
518: $form->addElement(new XoopsFormButton('', 'submit', _US_SAVECHANGES, 'submit'));
519:
520: return $form;
521: }
522:
523: 524: 525: 526: 527: 528: 529: 530:
531: function profile_getStepForm(ProfileRegstep $step = null, $action = false)
532: {
533: if ($action === false) {
534: $action = $_SERVER['REQUEST_URI'];
535: }
536: if (empty($GLOBALS['xoopsConfigUser'])) {
537:
538: $config_handler = xoops_getHandler('config');
539: $GLOBALS['xoopsConfigUser'] = $config_handler->getConfigsByCat(XOOPS_CONF_USER);
540: }
541: include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
542:
543: $form = new XoopsThemeForm(_PROFILE_AM_STEP, 'stepform', 'step.php', 'post', true);
544:
545: if (!$step->isNew()) {
546: $form->addElement(new XoopsFormHidden('id', $step->getVar('step_id')));
547: }
548: $form->addElement(new XoopsFormHidden('op', 'save'));
549: $form->addElement(new XoopsFormText(_PROFILE_AM_STEPNAME, 'step_name', 25, 255, $step->getVar('step_name', 'e')));
550: $form->addElement(new XoopsFormText(_PROFILE_AM_STEPINTRO, 'step_desc', 25, 255, $step->getVar('step_desc', 'e')));
551: $form->addElement(new XoopsFormText(_PROFILE_AM_STEPORDER, 'step_order', 10, 10, $step->getVar('step_order', 'e')));
552: $form->addElement(new XoopsFormRadioYN(_PROFILE_AM_STEPSAVE, 'step_save', $step->getVar('step_save', 'e')));
553: $form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
554:
555: return $form;
556: }
557: