auth->getInfo('user_lang'); $user_tz = $core->auth->getInfo('user_tz'); $user_post_status = ''; $user_options = $core->userDefaults(); # Formaters combo $formaters_combo = dcAdminCombos::getFormatersCombo(); $status_combo = dcAdminCombos::getPostStatusesCombo(); # Language codes $lang_combo = dcAdminCombos::getAdminLangsCombo(); # Get user if we have an ID if (!empty($_REQUEST['id'])) { try { $rs = $core->getUser($_REQUEST['id']); $user_id = $rs->user_id; $user_super = $rs->user_super; $user_pwd = $rs->user_pwd; $user_change_pwd = $rs->user_change_pwd; $user_name = $rs->user_name; $user_firstname = $rs->user_firstname; $user_displayname = $rs->user_displayname; $user_email = $rs->user_email; $user_url = $rs->user_url; $user_lang = $rs->user_lang; $user_tz = $rs->user_tz; $user_post_status = $rs->user_post_status; $user_options = array_merge($user_options, $rs->options()); $page_title = $user_id; } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Add or update user if (isset($_POST['user_name'])) { try { if (empty($_POST['your_pwd']) || !$core->auth->checkPassword($_POST['your_pwd'])) { throw new Exception(__('Password verification failed')); } $cur = $core->con->openCursor($core->prefix . 'user'); $cur->user_id = $_POST['user_id']; $cur->user_super = $user_super = !empty($_POST['user_super']) ? 1 : 0; $cur->user_name = $user_name = html::escapeHTML($_POST['user_name']); $cur->user_firstname = $user_firstname = html::escapeHTML($_POST['user_firstname']); $cur->user_displayname = $user_displayname = html::escapeHTML($_POST['user_displayname']); $cur->user_email = $user_email = html::escapeHTML($_POST['user_email']); $cur->user_url = $user_url = html::escapeHTML($_POST['user_url']); $cur->user_lang = $user_lang = html::escapeHTML($_POST['user_lang']); $cur->user_tz = $user_tz = html::escapeHTML($_POST['user_tz']); $cur->user_post_status = $user_post_status = html::escapeHTML($_POST['user_post_status']); if ($user_id && $cur->user_id == $core->auth->userID() && $core->auth->isSuperAdmin()) { // force super_user to true if current user $cur->user_super = $user_super = true; } if ($core->auth->allowPassChange()) { $cur->user_change_pwd = !empty($_POST['user_change_pwd']) ? 1 : 0; } if (!empty($_POST['new_pwd'])) { if ($_POST['new_pwd'] != $_POST['new_pwd_c']) { throw new Exception(__("Passwords don't match")); } else { $cur->user_pwd = $_POST['new_pwd']; } } $user_options['post_format'] = html::escapeHTML($_POST['user_post_format']); $user_options['edit_size'] = (integer) $_POST['user_edit_size']; if ($user_options['edit_size'] < 1) { $user_options['edit_size'] = 10; } $cur->user_options = new ArrayObject($user_options); # Udate user if ($user_id) { # --BEHAVIOR-- adminBeforeUserUpdate $core->callBehavior('adminBeforeUserUpdate', $cur, $user_id); $new_id = $core->updUser($user_id, $cur); # --BEHAVIOR-- adminAfterUserUpdate $core->callBehavior('adminAfterUserUpdate', $cur, $new_id); if ($user_id == $core->auth->userID() && $user_id != $new_id) { $core->session->destroy(); } dcPage::addSuccessNotice(__('User has been successfully updated.')); $core->adminurl->redirect("admin.user", ['id' => $new_id]); } # Add user else { if ($core->getUsers(['user_id' => $cur->user_id], true)->f(0) > 0) { throw new Exception(sprintf(__('User "%s" already exists.'), html::escapeHTML($cur->user_id))); } # --BEHAVIOR-- adminBeforeUserCreate $core->callBehavior('adminBeforeUserCreate', $cur); $new_id = $core->addUser($cur); # --BEHAVIOR-- adminAfterUserCreate $core->callBehavior('adminAfterUserCreate', $cur, $new_id); dcPage::addSuccessNotice(__('User has been successfully created.')); if (!empty($_POST['saveplus'])) { $core->adminurl->redirect("admin.user"); } else { $core->adminurl->redirect("admin.user", ['id' => $new_id]); } } } catch (Exception $e) { $core->error->add($e->getMessage()); } } /* DISPLAY -------------------------------------------------------- */ dcPage::open($page_title, dcPage::jsConfirmClose('user-form') . dcPage::jsLoad('js/jquery/jquery.pwstrength.js') . '\n" . # --BEHAVIOR-- adminUserHeaders $core->callBehavior('adminUserHeaders'), dcPage::breadcrumb( [ __('System') => '', __('Users') => $core->adminurl->get("admin.users"), $page_title => '' ]) ); if (!empty($_GET['upd'])) { dcPage::success(__('User has been successfully updated.')); } if (!empty($_GET['add'])) { dcPage::success(__('User has been successfully created.')); } echo '
' . '
' . '
' . '

' . __('User profile') . '

' . '

' . form::field('user_id', 20, 255, [ 'default' => html::escapeHTML($user_id), 'extra_html' => 'required placeholder="' . __('Login') . '"', 'autocomplete' => 'username' ]) . '

' . '

' . __('At least 2 characters using letters, numbers or symbols.') . '

'; if ($user_id == $core->auth->userID()) { echo '

' . __('Warning:') . ' ' . __('If you change your username, you will have to log in again.') . '

'; } echo '
' . '

' . '' . form::password('new_pwd', 20, 255, [ 'extra_html' => 'data-indicator="pwindicator"' . ($user_id != '' ? '' : ' required placeholder="' . __('Password') . '"'), 'autocomplete' => 'new-password'] ) . '

' . '
' . '
' . '

' . '
' . '
' . '

' . __('Password must contain at least 6 characters.') . '

' . '

' . form::password('new_pwd_c', 20, 255, [ 'extra_html' => ($user_id != '' ? '' : 'required placeholder="' . __('Password') . '"'), 'autocomplete' => 'new-password']) . '

'; if ($core->auth->allowPassChange()) { echo '

'; } $super_disabled = $user_super && $user_id == $core->auth->userID(); echo '

' . ($super_disabled ? form::hidden(['user_super'], $user_super) : '') . '

' . form::field('user_name', 20, 255, [ 'default' => html::escapeHTML($user_name), 'autocomplete' => 'family-name' ]) . '

' . '

' . form::field('user_firstname', 20, 255, [ 'default' => html::escapeHTML($user_firstname), 'autocomplete' => 'given-name' ]) . '

' . '

' . form::field('user_displayname', 20, 255, [ 'default' => html::escapeHTML($user_displayname), 'autocomplete' => 'nickname' ]) . '

' . '

' . form::email('user_email', [ 'default' => html::escapeHTML($user_email), 'autocomplete' => 'email' ]) . '

' . '

' . __('Mandatory for password recovering procedure.') . '

' . '

' . form::url('user_url', [ 'size' => 30, 'default' => html::escapeHTML($user_url), 'autocomplete' => 'url' ]) . '

' . '
' . '
' . '

' . __('Options') . '

' . '

' . __('Interface') . '

' . '

' . form::combo('user_lang', $lang_combo, $user_lang, 'l10n') . '

' . '

' . form::combo('user_tz', dt::getZones(true, true), $user_tz) . '

' . '

' . __('Edition') . '

' . '

' . form::combo('user_post_format', $formaters_combo, $user_options['post_format']) . '

' . '

' . form::combo('user_post_status', $status_combo, $user_post_status) . '

' . '

' . form::number('user_edit_size', 10, 999, (integer) $user_options['edit_size']) . '

'; # --BEHAVIOR-- adminUserForm $core->callBehavior('adminUserForm', isset($rs) ? $rs : null); echo '
' . '
'; echo '

' . form::password('your_pwd', 20, 255, [ 'extra_html' => 'required placeholder="' . __('Password') . '"', 'autocomplete' => 'current-password' ] ) . '

' . '

' . ($user_id != '' ? '' : ' ') . ($user_id != '' ? form::hidden('id', $user_id) : '') . $core->formNonce() . '

' . '
'; if ($user_id) { echo '
' . '

' . __('Permissions') . '

'; if (!$user_super) { echo '
' . '

' . form::hidden(['redir'], $core->adminurl->get("admin.user", ['id' => $user_id])) . form::hidden(['action'], 'blogs') . form::hidden(['users[]'], $user_id) . $core->formNonce() . '

' . '
'; $permissions = $core->getUserPermissions($user_id); $perm_types = $core->auth->getPermissionsTypes(); if (count($permissions) == 0) { echo '

' . __('No permissions so far.') . '

'; } else { foreach ($permissions as $k => $v) { if (count($v['p']) > 0) { echo '
' . '

' . __('Blog:') . ' html::escapeHTML($k)]) . '">' . html::escapeHTML($v['name']) . ' (' . html::escapeHTML($k) . ')

'; echo '' . '

' . form::hidden(['redir'], $core->adminurl->get("admin.user", ['id' => $user_id])) . form::hidden(['action'], 'perms') . form::hidden(['users[]'], $user_id) . form::hidden(['blogs[]'], $k) . $core->formNonce() . '

' . '
'; } } } } else { echo '

' . sprintf(__('%s is super admin (all rights on all blogs).'), '' . $user_id . '') . '

'; } echo '
'; } dcPage::helpBlock('core_user'); dcPage::close();