auth->getInfo('user_lang'); $user_tz = $core->auth->getInfo('user_tz'); $user_post_status = ''; $user_options = $core->userDefaults(); foreach ($core->getFormaters() as $v) { $formaters_combo[$v] = $v; } foreach ($core->blog->getAllPostStatus() as $k => $v) { $status_combo[$v] = $k; } # Language codes $langs = l10n::getISOcodes(1,1); foreach ($langs as $k => $v) { $lang_avail = $v == 'en' || is_dir(DC_L10N_ROOT.'/'.$v); $lang_combo[] = new formSelectOption($k,$v,$lang_avail ? 'avail10n' : ''); } # 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(crypt::hmac(DC_MASTER_KEY,$_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 = $_POST['user_name']; $cur->user_firstname = $user_firstname = $_POST['user_firstname']; $cur->user_displayname = $user_displayname = $_POST['user_displayname']; $cur->user_email = $user_email = $_POST['user_email']; $cur->user_url = $user_url = $_POST['user_url']; $cur->user_lang = $user_lang = $_POST['user_lang']; $cur->user_tz = $user_tz = $_POST['user_tz']; $cur->user_post_status = $user_post_status = $_POST['user_post_status']; if ($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'] = $_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(); } http::redirect('user.php?id='.$new_id.'&upd=1'); } # Add user else { if ($core->getUsers(array('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); if (!empty($_POST['saveplus'])) { http::redirect('user.php?add=1'); } else { http::redirect('user.php?id='.$new_id.'&add=1'); } } } catch (Exception $e) { $core->error->add($e->getMessage()); } } /* DISPLAY -------------------------------------------------------- */ dcPage::open($page_title, dcPage::jsConfirmClose('user-form'). # --BEHAVIOR-- adminUserHeaders $core->callBehavior('adminUserHeaders'), dcPage::breadcrumb( array( __('System') => '', __('Users') => 'users.php', ''.$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,html::escapeHTML($user_id)). '

'. '

'.__('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). '

'. '

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

'. '

'. form::password('new_pwd_c',20,255). '

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

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

'. '

'. form::field('user_name',20,255,html::escapeHTML($user_name)). '

'. '

'. form::field('user_firstname',20,255,html::escapeHTML($user_firstname)). '

'. '

'. form::field('user_displayname',20,255,html::escapeHTML($user_displayname)). '

'. '

'. form::field('user_email',20,255,html::escapeHTML($user_email)). '

'. '

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

'. '

'. form::field('user_url',30,255,html::escapeHTML($user_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::field('user_edit_size',5,4,(integer) $user_options['edit_size']). '

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

'. form::password('your_pwd',20,255).'

'. '

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

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

'.__('Permissions').'

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

'. form::hidden(array('redir'),'user.php?id='.$user_id). form::hidden(array('action'),'blogs'). form::hidden(array('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($v['name']).' ('.html::escapeHTML($k).')

'; echo ''. '

'. form::hidden(array('redir'),'user.php?id='.$user_id). form::hidden(array('action'),'perms'). form::hidden(array('users[]'),$user_id). form::hidden(array('blogs[]'),$k). $core->formNonce(). '

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

'.sprintf(__('User %s is super admin.'),$user_id).'

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