Failed Conditions
Push — tokenauth ( b0ac60 )
by Andreas
11:30 queued 08:14
created

Profile   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 117
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 117
rs 10
c 1
b 0
f 0
wmc 11
lcom 1
cbo 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
B show() 0 24 3
B profileForm() 0 32 5
A tokenForm() 0 17 1
A deletionForm() 0 20 2
1
<?php
2
3
namespace dokuwiki\Ui;
4
use dokuwiki\AuthenticationToken;
5
use dokuwiki\Form\Form;
6
7
/**
8
 * @author Christopher Smith <[email protected]>
9
 * @author Andreas Gohr <[email protected]>
10
 */
11
class Profile extends Ui {
12
13
    /** @inheritdoc */
14
    public function show() {
15
        /** @var \DokuWiki_Auth_Plugin $auth */
16
        global $auth;
17
        global $INFO;
18
        global $INPUT;
19
20
        $userinfo = [
21
            'user' => $_SERVER['REMOTE_USER'],
22
            'name' => $INPUT->post->str('fullname', $INFO['userinfo']['name'], true),
23
            'mail' => $INPUT->post->str('email', $INFO['userinfo']['mail'], true),
24
25
        ];
26
27
        print p_locale_xhtml('updateprofile');
28
        print '<div class="centeralign">' . NL;
29
30
        html_form('updateprofile', $this->profileForm($userinfo));
0 ignored issues
show
Bug introduced by
$this->profileForm($userinfo) cannot be passed to html_form() as the parameter $form expects a reference.
Loading history...
31
        echo $this->tokenForm($userinfo['user'])->toHTML();
32
        if($auth->canDo('delUser') && actionOK('profile_delete')) {
33
            html_form('profiledelete', $this->deletionForm());
0 ignored issues
show
Bug introduced by
$this->deletionForm() cannot be passed to html_form() as the parameter $form expects a reference.
Loading history...
34
        }
35
36
        print '</div>' . NL;
37
    }
38
39
    /**
40
     * Get the profile form
41
     *
42
     * @param array $userinfo
43
     * @return \Doku_Form
44
     */
45
    protected function profileForm($userinfo) {
46
        /** @var \DokuWiki_Auth_Plugin $auth */
47
        global $auth;
48
        global $conf;
49
        global $lang;
50
51
        $form = new \Doku_Form(array('id' => 'dw__register'));
52
        $form->startFieldset($lang['profile']);
53
        $form->addHidden('do', 'profile');
54
        $form->addHidden('save', '1');
55
        $form->addElement(form_makeTextField('login', $userinfo['user'], $lang['user'], '', 'block', array('size' => '50', 'disabled' => 'disabled')));
56
        $attr = array('size' => '50');
57
        if(!$auth->canDo('modName')) $attr['disabled'] = 'disabled';
58
        $form->addElement(form_makeTextField('fullname', $userinfo['name'], $lang['fullname'], '', 'block', $attr));
59
        $attr = array('size' => '50', 'class' => 'edit');
60
        if(!$auth->canDo('modMail')) $attr['disabled'] = 'disabled';
61
        $form->addElement(form_makeField('email', 'email', $userinfo['mail'], $lang['email'], '', 'block', $attr));
62
        $form->addElement(form_makeTag('br'));
63
        if($auth->canDo('modPass')) {
64
            $form->addElement(form_makePasswordField('newpass', $lang['newpass'], '', 'block', array('size' => '50')));
65
            $form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', array('size' => '50')));
66
        }
67
        if($conf['profileconfirm']) {
68
            $form->addElement(form_makeTag('br'));
69
            $form->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size' => '50', 'required' => 'required')));
70
        }
71
        $form->addElement(form_makeButton('submit', '', $lang['btn_save']));
72
        $form->addElement(form_makeButton('reset', '', $lang['btn_reset']));
73
74
        $form->endFieldset();
75
        return $form;
76
    }
77
78
    /**
79
     * Get the authentication token form
80
     * 
81
     * @param string $user
82
     * @return Form
83
     */
84
    protected function tokenForm($user) {
85
        global $lang;
86
        global $ID;
87
88
        $token = AuthenticationToken::fromUser($user);
89
90
        $form = new Form(['id' => 'dw__profiletoken', 'action'=>wl(), 'method'=>'POST']);
91
        $form->setHiddenField('do', 'authtoken');
92
        $form->setHiddenField('id', 'ID');
93
        $form->addFieldsetOpen($lang['proftokenlegend']);
94
        $form->addHTML('<p>'.$lang['proftokeninfo'].'</p>');
95
        $form->addHTML('<pre>'.$token->getToken().'</pre>');
96
        $form->addButton('regen', $lang['proftokengenerate']);
97
        $form->addFieldsetClose();
98
99
        return $form;
100
    }
101
102
    /**
103
     * Get the user deletion form
104
     *
105
     * @return \Doku_Form
106
     */
107
    protected function deletionForm() {
108
        /** @var \DokuWiki_Auth_Plugin $auth */
109
        global $auth;
110
        global $lang;
111
        global $conf;
112
113
        $form = new \Doku_Form(array('id' => 'dw__profiledelete'));
114
        $form->startFieldset($lang['profdeleteuser']);
115
        $form->addHidden('do', 'profile_delete');
116
        $form->addHidden('delete', '1');
117
        $form->addElement(form_makeCheckboxField('confirm_delete', '1', $lang['profconfdelete'], 'dw__confirmdelete', '', array('required' => 'required')));
118
        if($conf['profileconfirm']) {
119
            $form->addElement(form_makeTag('br'));
120
            $form->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size' => '50', 'required' => 'required')));
121
        }
122
        $form->addElement(form_makeButton('submit', '', $lang['btn_deleteuser']));
123
        $form->endFieldset();
124
125
        return $form;
126
    }
127
}
128