xref: /dokuwiki/inc/Ui/UserProfile.php (revision 83f8872c29e69f18f6c8d8e30c47dd178a40e04d)
1877c5a1bSSatoshi Sahara<?php
2877c5a1bSSatoshi Sahara
3877c5a1bSSatoshi Saharanamespace dokuwiki\Ui;
4877c5a1bSSatoshi Sahara
5877c5a1bSSatoshi Saharause dokuwiki\Extension\Event;
6877c5a1bSSatoshi Saharause dokuwiki\Form\Form;
7877c5a1bSSatoshi Sahara
8877c5a1bSSatoshi Sahara/**
9f9dfcbbeSSatoshi Sahara * DokuWiki User Profile Interface
10877c5a1bSSatoshi Sahara *
11877c5a1bSSatoshi Sahara * @package dokuwiki\Ui
12877c5a1bSSatoshi Sahara */
13877c5a1bSSatoshi Saharaclass UserProfile extends Ui
14877c5a1bSSatoshi Sahara{
15877c5a1bSSatoshi Sahara    /**
16877c5a1bSSatoshi Sahara     * Display the User Profile Form Panel
17877c5a1bSSatoshi Sahara     *
18877c5a1bSSatoshi Sahara     * @author   Andreas Gohr <andi@splitbrain.org>
19877c5a1bSSatoshi Sahara     *
20877c5a1bSSatoshi Sahara     * @triggers HTML_UPDATEPROFILEFORM_OUTPUT
21877c5a1bSSatoshi Sahara     * @triggers HTML_PROFILEDELETEFORM_OUTPUT
22877c5a1bSSatoshi Sahara     * @return void
23877c5a1bSSatoshi Sahara     */
24877c5a1bSSatoshi Sahara    public function show()
25877c5a1bSSatoshi Sahara    {
26877c5a1bSSatoshi Sahara        global $lang;
27877c5a1bSSatoshi Sahara        global $conf;
28877c5a1bSSatoshi Sahara        global $INPUT;
29877c5a1bSSatoshi Sahara        global $INFO;
30877c5a1bSSatoshi Sahara        /** @var AuthPlugin $auth */
31877c5a1bSSatoshi Sahara        global $auth;
32877c5a1bSSatoshi Sahara
33877c5a1bSSatoshi Sahara        // print intro
34877c5a1bSSatoshi Sahara        print p_locale_xhtml('updateprofile');
35877c5a1bSSatoshi Sahara        print '<div class="centeralign">'.DOKU_LF;
36877c5a1bSSatoshi Sahara
37877c5a1bSSatoshi Sahara        $fullname = $INPUT->post->str('fullname', $INFO['userinfo']['name'], true);
38877c5a1bSSatoshi Sahara        $email = $INPUT->post->str('email', $INFO['userinfo']['mail'], true);
39877c5a1bSSatoshi Sahara
40877c5a1bSSatoshi Sahara        // create the updateprofile form
41877c5a1bSSatoshi Sahara        $form = new Form(['id' => 'dw__register']);
42877c5a1bSSatoshi Sahara        $form->addTagOpen('div')->addClass('no');
43877c5a1bSSatoshi Sahara        $form->addFieldsetOpen($lang['profile']);
44877c5a1bSSatoshi Sahara        $form->setHiddenField('do', 'profile');
45877c5a1bSSatoshi Sahara        $form->setHiddenField('save', '1');
46877c5a1bSSatoshi Sahara
47877c5a1bSSatoshi Sahara        $attr = array('size' => '50', 'disabled' => 'disabled');
48877c5a1bSSatoshi Sahara        $input = $form->addTextInput('login', $lang['user'])->attrs($attr)->addClass('edit')
49*83f8872cSSatoshi Sahara            ->val($INPUT->server->str('REMOTE_USER'));
50877c5a1bSSatoshi Sahara        $input->getLabel()->attr('class', 'block');
51877c5a1bSSatoshi Sahara        $form->addHTML("<br>\n");
52877c5a1bSSatoshi Sahara
53877c5a1bSSatoshi Sahara        $attr = array('size' => '50');
54877c5a1bSSatoshi Sahara        if (!$auth->canDo('modName')) $attr['disabled'] = 'disabled';
55877c5a1bSSatoshi Sahara        $input = $form->addTextInput('fullname', $lang['fullname'])->attrs($attr)->addClass('edit')
56877c5a1bSSatoshi Sahara            ->val($fullname);
57877c5a1bSSatoshi Sahara        $input->getLabel()->attr('class', 'block');
58877c5a1bSSatoshi Sahara        $form->addHTML("<br>\n");
59877c5a1bSSatoshi Sahara
60877c5a1bSSatoshi Sahara        $attr = array('type' => 'email', 'size' =>  '50');
61877c5a1bSSatoshi Sahara        if (!$auth->canDo('modMail')) $attr['disabled'] = 'disabled';
62877c5a1bSSatoshi Sahara        $input = $form->addTextInput('email', $lang['email'])->attrs($attr)->addClass('edit')
63877c5a1bSSatoshi Sahara            ->val($email);
64877c5a1bSSatoshi Sahara        $input->getLabel()->attr('class', 'block');
65877c5a1bSSatoshi Sahara        $form->addHTML("<br>\n");
66877c5a1bSSatoshi Sahara
67877c5a1bSSatoshi Sahara        if ($auth->canDo('modPass')) {
68877c5a1bSSatoshi Sahara            $attr = array('size'=>'50');
69877c5a1bSSatoshi Sahara            $input = $form->addPasswordInput('newpass', $lang['newpass'])->attrs($attr)->addClass('edit');
70877c5a1bSSatoshi Sahara            $input->getLabel()->attr('class', 'block');
71877c5a1bSSatoshi Sahara            $form->addHTML("<br>\n");
72877c5a1bSSatoshi Sahara
73877c5a1bSSatoshi Sahara            $input = $form->addPasswordInput('passchk', $lang['passchk'])->attrs($attr)->addClass('edit');
74877c5a1bSSatoshi Sahara            $input->getLabel()->attr('class', 'block');
75877c5a1bSSatoshi Sahara            $form->addHTML("<br>\n");
76877c5a1bSSatoshi Sahara        }
77877c5a1bSSatoshi Sahara
78877c5a1bSSatoshi Sahara        if ($conf['profileconfirm']) {
79877c5a1bSSatoshi Sahara            $form->addHTML("<br>\n");
80877c5a1bSSatoshi Sahara            $attr = array('size' => '50', 'required' => 'required');
81877c5a1bSSatoshi Sahara            $input = $form->addPasswordInput('oldpass', $lang['oldpass'])->attrs($attr)->addClass('edit');
82877c5a1bSSatoshi Sahara            $input->getLabel()->attr('class', 'block');
83877c5a1bSSatoshi Sahara            $form->addHTML("<br>\n");
84877c5a1bSSatoshi Sahara        }
85877c5a1bSSatoshi Sahara
86877c5a1bSSatoshi Sahara        $form->addButton('', $lang['btn_save'])->attr('type', 'submit');
87877c5a1bSSatoshi Sahara        $form->addButton('', $lang['btn_reset'])->attr('type', 'reset');
88877c5a1bSSatoshi Sahara
89877c5a1bSSatoshi Sahara        $form->addFieldsetClose();
90877c5a1bSSatoshi Sahara        $form->addTagClose('div');
91877c5a1bSSatoshi Sahara
92c29600d0SSatoshi Sahara        // emit HTML_UPDATEPROFILEFORM_OUTPUT event
93c29600d0SSatoshi Sahara        Event::createAndTrigger('HTML_UPDATEPROFILEFORM_OUTPUT', $form, null, false);
94c29600d0SSatoshi Sahara        print $form->toHTML();
95877c5a1bSSatoshi Sahara
96877c5a1bSSatoshi Sahara
97877c5a1bSSatoshi Sahara        if ($auth->canDo('delUser') && actionOK('profile_delete')) {
98877c5a1bSSatoshi Sahara
99877c5a1bSSatoshi Sahara            // create the profiledelete form
100877c5a1bSSatoshi Sahara            $form = new Form(['id' => 'dw__profiledelete']);
101877c5a1bSSatoshi Sahara            $form->addTagOpen('div')->addClass('no');
102877c5a1bSSatoshi Sahara            $form->addFieldsetOpen($lang['profdeleteuser']);
103877c5a1bSSatoshi Sahara            $form->setHiddenField('do', 'profile_delete');
104877c5a1bSSatoshi Sahara            $form->setHiddenField('delete', '1');
105877c5a1bSSatoshi Sahara
106877c5a1bSSatoshi Sahara            $form->addCheckbox('confirm_delete', $lang['profconfdelete'])
107877c5a1bSSatoshi Sahara                ->attrs(['required' => 'required'])
108877c5a1bSSatoshi Sahara                ->id('dw__confirmdelete')
109877c5a1bSSatoshi Sahara                ->val('1');
110877c5a1bSSatoshi Sahara
111877c5a1bSSatoshi Sahara            if ($conf['profileconfirm']) {
112877c5a1bSSatoshi Sahara                $form->addHTML("<br>\n");
113877c5a1bSSatoshi Sahara                $attr = array('size' => '50', 'required' => 'required');
114877c5a1bSSatoshi Sahara                $input = $form->addPasswordInput('oldppass', $lang['oldpass'])->attrs($attr)
115877c5a1bSSatoshi Sahara                    ->addClass('edit');
116877c5a1bSSatoshi Sahara                $input->getLabel()->attr('class', 'block');
117877c5a1bSSatoshi Sahara                $form->addHTML("<br>\n");
118877c5a1bSSatoshi Sahara            }
119877c5a1bSSatoshi Sahara
120877c5a1bSSatoshi Sahara            $form->addButton('', $lang['btn_deleteuser'])->attr('type', 'submit');
121877c5a1bSSatoshi Sahara            $form->addFieldsetClose();
122877c5a1bSSatoshi Sahara            $form->addTagClose('div');
123877c5a1bSSatoshi Sahara
124c29600d0SSatoshi Sahara            // emit HTML_PROFILEDELETEFORM_OUTPUT event
125c29600d0SSatoshi Sahara            Event::createAndTrigger('HTML_PROFILEDELETEFORM_OUTPUT', $form, null, false);
126c29600d0SSatoshi Sahara            print $form->toHTML();
127877c5a1bSSatoshi Sahara        }
128877c5a1bSSatoshi Sahara
129877c5a1bSSatoshi Sahara        print '</div>'.DOKU_LF;
130877c5a1bSSatoshi Sahara    }
131877c5a1bSSatoshi Sahara
132877c5a1bSSatoshi Sahara}
133