* */ public function show() { /** @var AuthPlugin $auth */ global $auth; global $INFO; global $INPUT; $userinfo = [ 'user' => $_SERVER['REMOTE_USER'], 'name' => $INPUT->post->str('fullname', $INFO['userinfo']['name'], true), 'mail' => $INPUT->post->str('email', $INFO['userinfo']['mail'], true), ]; echo p_locale_xhtml('updateprofile'); echo '
'; echo $this->updateProfileForm($userinfo)->toHTML('UpdateProfile'); echo $this->tokenForm($userinfo['user'])->toHTML(); if ($auth->canDo('delUser') && actionOK('profile_delete')) { echo $this->deleteProfileForm()->toHTML('ProfileDelete'); } echo '
'; } /** * Add the password confirmation field to the form if configured * * @param Form $form * @return void */ protected function addPasswordConfirmation(Form $form) { global $lang; global $conf; if (!$conf['profileconfirm']) return; $form->addHTML("
\n"); $attr = ['size' => '50', 'required' => 'required']; $input = $form->addPasswordInput('oldpass', $lang['oldpass'])->attrs($attr) ->addClass('edit'); $input->getLabel()->attr('class', 'block'); $form->addHTML("
\n"); } /** * Create the profile form * * @return Form */ protected function updateProfileForm($userinfo) { global $lang; /** @var AuthPlugin $auth */ global $auth; $form = new Form(['id' => 'dw__register']); $form->addTagOpen('div')->addClass('no'); $form->addFieldsetOpen($lang['profile']); $form->setHiddenField('do', 'profile'); $form->setHiddenField('save', '1'); $attr = ['size' => '50', 'disabled' => 'disabled']; $input = $form->addTextInput('login', $lang['user']) ->attrs($attr) ->addClass('edit') ->val($userinfo['user']); $input->getLabel()->attr('class', 'block'); $form->addHTML("
\n"); $attr = ['size' => '50']; if (!$auth->canDo('modName')) $attr['disabled'] = 'disabled'; $input = $form->addTextInput('fullname', $lang['fullname']) ->attrs($attr) ->addClass('edit') ->val($userinfo['name']); $input->getLabel()->attr('class', 'block'); $form->addHTML("
\n"); $attr = ['type' => 'email', 'size' => '50']; if (!$auth->canDo('modMail')) $attr['disabled'] = 'disabled'; $input = $form->addTextInput('email', $lang['email']) ->attrs($attr) ->addClass('edit') ->val($userinfo['mail']); $input->getLabel()->attr('class', 'block'); $form->addHTML("
\n"); if ($auth->canDo('modPass')) { $attr = ['size' => '50']; $input = $form->addPasswordInput('newpass', $lang['newpass'])->attrs($attr)->addClass('edit'); $input->getLabel()->attr('class', 'block'); $form->addHTML("
\n"); $input = $form->addPasswordInput('passchk', $lang['passchk'])->attrs($attr)->addClass('edit'); $input->getLabel()->attr('class', 'block'); $form->addHTML("
\n"); } $this->addPasswordConfirmation($form); $form->addButton('', $lang['btn_save'])->attr('type', 'submit'); $form->addButton('', $lang['btn_reset'])->attr('type', 'reset'); $form->addFieldsetClose(); $form->addTagClose('div'); return $form; } /** * Create the profile delete form * * @return Form */ protected function deleteProfileForm() { global $lang; $form = new Form(['id' => 'dw__profiledelete']); $form->addTagOpen('div')->addClass('no'); $form->addFieldsetOpen($lang['profdeleteuser']); $form->setHiddenField('do', 'profile_delete'); $form->setHiddenField('delete', '1'); $form->addCheckbox('confirm_delete', $lang['profconfdelete']) ->attrs(['required' => 'required']) ->id('dw__confirmdelete') ->val('1'); $this->addPasswordConfirmation($form); $form->addButton('', $lang['btn_deleteuser'])->attr('type', 'submit'); $form->addFieldsetClose(); $form->addTagClose('div'); return $form; } /** * Get the authentication token form * * @param string $user * @return Form */ protected function tokenForm($user) { global $lang; $token = JWT::fromUser($user); $form = new Form(['id' => 'dw__profiletoken', 'action' => wl(), 'method' => 'POST']); $form->setHiddenField('do', 'authtoken'); $form->setHiddenField('id', 'ID'); $form->addFieldsetOpen($lang['proftokenlegend']); $form->addHTML('

' . $lang['proftokeninfo'] . '

'); $form->addHTML('

' . $token->getToken() . '

'); $form->addButton('regen', $lang['proftokengenerate']); $form->addFieldsetClose(); return $form; } }