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