1<?php
2
3namespace dokuwiki\Ui;
4
5use dokuwiki\Form\Form;
6
7/**
8 * DokuWiki User Profile Interface
9 *
10 * @package dokuwiki\Ui
11 */
12class UserProfile extends Ui
13{
14    /**
15     * Display the User Profile Form Panel
16     *
17     * @author   Andreas Gohr <andi@splitbrain.org>
18     *
19     * @return void
20     */
21    public function show()
22    {
23        global $lang;
24        global $conf;
25        global $INPUT;
26        global $INFO;
27        /** @var AuthPlugin $auth */
28        global $auth;
29
30        // print intro
31        print p_locale_xhtml('updateprofile');
32        print '<div class="centeralign">';
33
34        $fullname = $INPUT->post->str('fullname', $INFO['userinfo']['name'], true);
35        $email = $INPUT->post->str('email', $INFO['userinfo']['mail'], true);
36
37        // create the updateprofile form
38        $form = new Form(['id' => 'dw__register']);
39        $form->addTagOpen('div')->addClass('no');
40        $form->addFieldsetOpen($lang['profile']);
41        $form->setHiddenField('do', 'profile');
42        $form->setHiddenField('save', '1');
43
44        $attr = array('size' => '50', 'disabled' => 'disabled');
45        $input = $form->addTextInput('login', $lang['user'])->attrs($attr)->addClass('edit')
46            ->val($INPUT->server->str('REMOTE_USER'));
47        $input->getLabel()->attr('class', 'block');
48        $form->addHTML("<br>\n");
49
50        $attr = array('size' => '50');
51        if (!$auth->canDo('modName')) $attr['disabled'] = 'disabled';
52        $input = $form->addTextInput('fullname', $lang['fullname'])->attrs($attr)->addClass('edit')
53            ->val($fullname);
54        $input->getLabel()->attr('class', 'block');
55        $form->addHTML("<br>\n");
56
57        $attr = array('type' => 'email', 'size' =>  '50');
58        if (!$auth->canDo('modMail')) $attr['disabled'] = 'disabled';
59        $input = $form->addTextInput('email', $lang['email'])->attrs($attr)->addClass('edit')
60            ->val($email);
61        $input->getLabel()->attr('class', 'block');
62        $form->addHTML("<br>\n");
63
64        if ($auth->canDo('modPass')) {
65            $attr = array('size'=>'50');
66            $input = $form->addPasswordInput('newpass', $lang['newpass'])->attrs($attr)->addClass('edit');
67            $input->getLabel()->attr('class', 'block');
68            $form->addHTML("<br>\n");
69
70            $input = $form->addPasswordInput('passchk', $lang['passchk'])->attrs($attr)->addClass('edit');
71            $input->getLabel()->attr('class', 'block');
72            $form->addHTML("<br>\n");
73        }
74
75        if ($conf['profileconfirm']) {
76            $form->addHTML("<br>\n");
77            $attr = array('size' => '50', 'required' => 'required');
78            $input = $form->addPasswordInput('oldpass', $lang['oldpass'])->attrs($attr)->addClass('edit');
79            $input->getLabel()->attr('class', 'block');
80            $form->addHTML("<br>\n");
81        }
82
83        $form->addButton('', $lang['btn_save'])->attr('type', 'submit');
84        $form->addButton('', $lang['btn_reset'])->attr('type', 'reset');
85
86        $form->addFieldsetClose();
87        $form->addTagClose('div');
88
89        print $form->toHTML('UpdateProfile');
90
91
92        if ($auth->canDo('delUser') && actionOK('profile_delete')) {
93
94            // create the profiledelete form
95            $form = new Form(['id' => 'dw__profiledelete']);
96            $form->addTagOpen('div')->addClass('no');
97            $form->addFieldsetOpen($lang['profdeleteuser']);
98            $form->setHiddenField('do', 'profile_delete');
99            $form->setHiddenField('delete', '1');
100
101            $form->addCheckbox('confirm_delete', $lang['profconfdelete'])
102                ->attrs(['required' => 'required'])
103                ->id('dw__confirmdelete')
104                ->val('1');
105
106            if ($conf['profileconfirm']) {
107                $form->addHTML("<br>\n");
108                $attr = array('size' => '50', 'required' => 'required');
109                $input = $form->addPasswordInput('oldppass', $lang['oldpass'])->attrs($attr)
110                    ->addClass('edit');
111                $input->getLabel()->attr('class', 'block');
112                $form->addHTML("<br>\n");
113            }
114
115            $form->addButton('', $lang['btn_deleteuser'])->attr('type', 'submit');
116            $form->addFieldsetClose();
117            $form->addTagClose('div');
118
119            print $form->toHTML('ProfileDelete');
120        }
121
122        print '</div>';
123    }
124
125}
126