auth->getInfo('user_name'); $user_firstname = $core->auth->getInfo('user_firstname'); $user_displayname = $core->auth->getInfo('user_displayname'); $user_email = $core->auth->getInfo('user_email'); $user_url = $core->auth->getInfo('user_url'); $user_lang = $core->auth->getInfo('user_lang'); $user_tz = $core->auth->getInfo('user_tz'); $user_post_status = $core->auth->getInfo('user_post_status'); $user_options = $core->auth->getOptions(); if (empty($user_options['editor']) || !is_array($user_options['editor'])) { $user_options['editor'] = array(); } $core->auth->user_prefs->addWorkspace('dashboard'); $user_dm_doclinks = $core->auth->user_prefs->dashboard->doclinks; $user_dm_dcnews = $core->auth->user_prefs->dashboard->dcnews; $user_dm_quickentry = $core->auth->user_prefs->dashboard->quickentry; $user_dm_nofavicons = $core->auth->user_prefs->dashboard->nofavicons; $core->auth->user_prefs->addWorkspace('accessibility'); $user_acc_nodragdrop = $core->auth->user_prefs->accessibility->nodragdrop; $core->auth->user_prefs->addWorkspace('interface'); $user_ui_enhanceduploader = $core->auth->user_prefs->interface->enhanceduploader; if ($core->auth->isSuperAdmin()) { $user_ui_hide_std_favicon = $core->auth->user_prefs->interface->hide_std_favicon; } $user_ui_iconset = @$core->auth->user_prefs->interface->iconset; $user_ui_nofavmenu = $core->auth->user_prefs->interface->nofavmenu; $user_ui_media_by_page = ($core->auth->user_prefs->interface->media_by_page ? $core->auth->user_prefs->interface->media_by_page : 30); $user_ui_media_nb_last_dirs = $core->auth->user_prefs->interface->media_nb_last_dirs; $default_tab = !empty($_GET['tab']) ? html::escapeHTML($_GET['tab']) : 'user-profile'; if (!empty($_GET['append']) || !empty($_GET['removed']) || !empty($_GET['neworder']) || !empty($_GET['replaced']) || !empty($_POST['appendaction']) || !empty($_POST['removeaction']) || !empty($_GET['db-updated'])) { $default_tab = 'user-favorites'; } elseif (!empty($_GET['updated'])) { $default_tab = 'user-options'; } if (($default_tab != 'user-profile') && ($default_tab != 'user-options') && ($default_tab != 'user-favorites')) { $default_tab = 'user-profile'; } # Editors combo $editors_combo = dcAdminCombos::getEditorsCombo(); $editors = array_keys($editors_combo); # Format by editors $formaters = $core->getFormaters(); $format_by_editors = array(); foreach ($formaters as $editor => $formats) { foreach ($formats as $format) { $format_by_editors[$format][$editor] = $editor; } } $available_formats = array('' => ''); foreach (array_keys($format_by_editors) as $format) { $available_formats[$format] = $format; if (!isset($user_options['editor'][$format])) { $user_options['editor'][$format] = ''; } } $status_combo = dcAdminCombos::getPostStatusescombo(); $iconsets_combo = array(__('Default') => ''); $iconsets_root = dirname(__FILE__).'/images/iconset/'; if (is_dir($iconsets_root) && is_readable($iconsets_root)) { if (($d = @dir($iconsets_root)) !== false) { while (($entry = $d->read()) !== false) { if ($entry != '.' && $entry != '..' && substr($entry, 0, 1) != '.' && is_dir($iconsets_root.'/'.$entry)) { $iconsets_combo[$entry] = $entry; } } } } # Language codes $lang_combo = dcAdminCombos::getAdminLangsCombo(); # Get default colums (admin lists) $cols = array( 'posts' => array(__('Posts'), array( 'date' => array(true,__('Date')), 'category' => array(true,__('Category')), 'author' => array(true,__('Author')), 'comments' => array(true,__('Comments')), 'trackbacks' => array(true,__('Trackbacks')) )) ); $cols = new arrayObject($cols); $core->callBehavior('adminColumnsLists',$core,$cols); # Load user settings $cols_user = @$core->auth->user_prefs->interface->cols; if (is_array($cols_user)) { foreach ($cols_user as $ct => $cv) { foreach ($cv as $cn => $cd) { if (isset($cols[$ct][1][$cn])) { $cols[$ct][1][$cn][0] = $cd; } } } } # Add or update user if (isset($_POST['user_name'])) { try { $pwd_check = !empty($_POST['cur_pwd']) && $core->auth->checkPassword($core->auth->crypt($_POST['cur_pwd'])); if ($core->auth->allowPassChange() && !$pwd_check && $user_email != $_POST['user_email']) { throw new Exception(__('If you want to change your email or password you must provide your current password.')); } $cur = $core->con->openCursor($core->prefix.'user'); $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_options = new ArrayObject($user_options); if ($core->auth->allowPassChange() && !empty($_POST['new_pwd'])) { if (!$pwd_check) { throw new Exception(__('If you want to change your email or password you must provide your current password.')); } if ($_POST['new_pwd'] != $_POST['new_pwd_c']) { throw new Exception(__("Passwords don't match")); } $cur->user_pwd = $_POST['new_pwd']; } # --BEHAVIOR-- adminBeforeUserUpdate $core->callBehavior('adminBeforeUserProfileUpdate',$cur,$core->auth->userID()); # Udate user $core->updUser($core->auth->userID(),$cur); # --BEHAVIOR-- adminAfterUserUpdate $core->callBehavior('adminAfterUserProfileUpdate',$cur,$core->auth->userID()); dcPage::addSuccessNotice(__('Personal information has been successfully updated.')); $core->adminurl->redirect("admin.user.preferences"); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Update user options if (isset($_POST['user_editor'])) { try { $cur = $core->con->openCursor($core->prefix.'user'); $cur->user_name = $user_name; $cur->user_firstname = $user_firstname; $cur->user_displayname = $user_displayname; $cur->user_email = $user_email; $cur->user_url = $user_url; $cur->user_lang = $user_lang; $cur->user_tz = $user_tz; $cur->user_post_status = $user_post_status = $_POST['user_post_status']; $user_options['edit_size'] = (integer) $_POST['user_edit_size']; if ($user_options['edit_size'] < 1) { $user_options['edit_size'] = 10; } $user_options['post_format'] = $_POST['user_post_format']; $user_options['editor'] = $_POST['user_editor']; $user_options['enable_wysiwyg'] = !empty($_POST['user_wysiwyg']); $user_options['toolbar_bottom'] = !empty($_POST['user_toolbar_bottom']); $cur->user_options = new ArrayObject($user_options); # --BEHAVIOR-- adminBeforeUserOptionsUpdate $core->callBehavior('adminBeforeUserOptionsUpdate',$cur,$core->auth->userID()); # Update user prefs $core->auth->user_prefs->accessibility->put('nodragdrop',!empty($_POST['user_acc_nodragdrop']),'boolean'); $core->auth->user_prefs->interface->put('enhanceduploader',!empty($_POST['user_ui_enhanceduploader']),'boolean'); if ($core->auth->isSuperAdmin()) { # Applied to all users $core->auth->user_prefs->interface->put('hide_std_favicon',!empty($_POST['user_ui_hide_std_favicon']),'boolean',null,true,true); } $core->auth->user_prefs->interface->put('media_by_page',(integer)$_POST['user_ui_media_by_page'],'integer'); $core->auth->user_prefs->interface->put('media_nb_last_dirs',(integer)$_POST['user_ui_media_nb_last_dirs'],'integer'); $core->auth->user_prefs->interface->put('media_last_dirs',array(),'array',null,false); $core->auth->user_prefs->interface->put('media_fav_dirs',array(),'array',null,false); # Update user columns (lists) $cu = array(); foreach ($cols as $col_type => $cols_list) { $ct = array(); foreach ($cols_list[1] as $col_name => $col_data) { $ct[$col_name] = isset($_POST['cols_'.$col_type]) && in_array($col_name,$_POST['cols_'.$col_type],true) ? true : false; } if (count($ct)) { $cu[$col_type] = $ct; } } $core->auth->user_prefs->interface->put('cols',$cu,'array'); # Update user $core->updUser($core->auth->userID(),$cur); # --BEHAVIOR-- adminAfterUserOptionsUpdate $core->callBehavior('adminAfterUserOptionsUpdate',$cur,$core->auth->userID()); dcPage::addSuccessNotice(__('Personal options has been successfully updated.')); $core->adminurl->redirect("admin.user.preferences",array(),'#user-options'); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Dashboard options if (isset($_POST['db-options'])) { try { # --BEHAVIOR-- adminBeforeUserOptionsUpdate $core->callBehavior('adminBeforeDashboardOptionsUpdate',$core->auth->userID()); # Update user prefs $core->auth->user_prefs->dashboard->put('doclinks',!empty($_POST['user_dm_doclinks']),'boolean'); $core->auth->user_prefs->dashboard->put('dcnews',!empty($_POST['user_dm_dcnews']),'boolean'); $core->auth->user_prefs->dashboard->put('quickentry',!empty($_POST['user_dm_quickentry']),'boolean'); $core->auth->user_prefs->dashboard->put('nofavicons',empty($_POST['user_dm_nofavicons']),'boolean'); $core->auth->user_prefs->interface->put('iconset',(!empty($_POST['user_ui_iconset']) ? $_POST['user_ui_iconset'] : '')); $core->auth->user_prefs->interface->put('nofavmenu',empty($_POST['user_ui_nofavmenu']),'boolean'); # --BEHAVIOR-- adminAfterUserOptionsUpdate $core->callBehavior('adminAfterDashboardOptionsUpdate',$core->auth->userID()); dcPage::addSuccessNotice(__('Dashboard options has been successfully updated.')); $core->adminurl->redirect("admin.user.preferences",array(),'#user-favorites'); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Add selected favorites if (!empty($_POST['appendaction'])) { try { if (empty($_POST['append'])) { throw new Exception(__('No favorite selected')); } $user_favs = $core->favs->getFavoriteIDs(false); foreach ($_POST['append'] as $k => $v) { if ($core->favs->exists($v)) { $user_favs[] = $v; } } $core->favs->setFavoriteIDs($user_favs,false); if (!$core->error->flag()) { dcPage::addSuccessNotice(__('Favorites have been successfully added.')); $core->adminurl->redirect("admin.user.preferences",array(),'#user-favorites'); } } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Delete selected favorites if (!empty($_POST['removeaction'])) { try { if (empty($_POST['remove'])) { throw new Exception(__('No favorite selected')); } $user_fav_ids = array(); foreach ($core->favs->getFavoriteIDs(false) as $v) { $user_fav_ids[$v]=true; } foreach ($_POST['remove'] as $v) { if (isset($user_fav_ids[$v])) { unset($user_fav_ids[$v]); } } $core->favs->setFavoriteIDs(array_keys($user_fav_ids),false); if (!$core->error->flag()) { dcPage::addSuccessNotice(__('Favorites have been successfully removed.')); $core->adminurl->redirect("admin.user.preferences",array(),'#user-favorites'); } } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Order favs $order = array(); if (empty($_POST['favs_order']) && !empty($_POST['order'])) { $order = $_POST['order']; asort($order); $order = array_keys($order); } elseif (!empty($_POST['favs_order'])) { $order = explode(',',$_POST['favs_order']); } if (!empty($_POST['saveorder']) && !empty($order)) { foreach ($order as $k => $v) { if (!$core->favs->exists($v)) { unset($order[$k]); } } $core->favs->setFavoriteIDs($order,false); if (!$core->error->flag()) { dcPage::addSuccessNotice(__('Favorites have been successfully updated.')); $core->adminurl->redirect("admin.user.preferences",array(),'#user-favorites'); } } # Replace default favorites by current set (super admin only) if (!empty($_POST['replace']) && $core->auth->isSuperAdmin()) { $user_favs = $core->favs->getFavoriteIDs(false); $core->favs->setFavoriteIDs($user_favs,true); if (!$core->error->flag()) { dcPage::addSuccessNotice(__('Default favorites have been successfully updated.')); $core->adminurl->redirect("admin.user.preferences",array(),'#user-favorites'); } } /* DISPLAY -------------------------------------------------------- */ dcPage::open($page_title, dcPage::jsLoad('js/_preferences.js'). ($user_acc_nodragdrop ? '' : dcPage::jsLoad('js/_preferences-dragdrop.js')). dcPage::jsLoad('js/jquery/jquery-ui.custom.js'). dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js'). dcPage::jsLoad('js/jquery/jquery.pwstrength.js'). '\n". dcPage::jsPageTabs($default_tab). dcPage::jsConfirmClose('user-form'). # --BEHAVIOR-- adminPreferencesHeaders $core->callBehavior('adminPreferencesHeaders'), dcPage::breadcrumb( array( html::escapeHTML($core->auth->userID()) => '', $page_title => '' )) ); # User profile echo '