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 '
'; echo '

'.__('My profile').'

'. '
'. '

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

'. '

'. form::field('user_url',30,255,html::escapeHTML($user_url)).'

'. '

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

'. '

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

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

'.__('Change my password').'

'. '
'. '

'. form::password('new_pwd',20,255,'','','',false,' data-indicator="pwindicator" ').'

'. '
'. '
'. '

'. '
'. '
'. '

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

'. '

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

'. '

'. __('If you have changed your email or password you must provide your current password to save these modifications.'). '

'; } echo '

'. $core->formNonce(). '

'. '
'. '
'; # User options : some from actual user profile, dashboard modules, ... echo '
'; echo '
'. '

'.__('My options').'

'; echo '
'. '

'.__('Interface').'

'. '

'. '

'. '

'.__('If checked, numeric fields will allow to type the elements\' ordering number.').'

'; echo '

'. form::field('user_ui_media_by_page',5,3,(integer) $user_ui_media_by_page).'

'; echo '

'. form::field('user_ui_media_nb_last_dirs',5,3,(integer) $user_ui_media_nb_last_dirs).'

'. '

'.__('Leave empty to ignore, displayed only if Javascript is enabled in your browser.').'

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

'. ''.__('This will be applied for all users').'.'. '

';//Opera sucks; } echo '
'; echo '
'. '

'.__('Optional columns displayed in lists').'

'; foreach ($cols as $col_type => $col_list) { echo '
'.$col_list[0].'
'; foreach ($col_list[1] as $col_name => $col_data) { echo '

'; } } echo '

'; echo '
'. '

'.__('Edition').'

'; foreach ($format_by_editors as $format => $editors) { echo '

'. form::combo( array('user_editor['.$format.']', 'user_editor_'.$format), array_merge(array(__('Choose an editor') => ''),$editors), $user_options['editor'][$format] ).'

'; } echo '

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

'; echo '

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

'. '

'. form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).'

'. '

'. '

'. '
'; echo '

'.__('Other options').'

'; # --BEHAVIOR-- adminPreferencesForm $core->callBehavior('adminPreferencesForm',$core); echo '

'. $core->formNonce(). '

'. '
'; echo '
'; # My dashboard echo '
'; $ws = $core->auth->user_prefs->addWorkspace('favorites'); echo '

'.__('My dashboard').'

'; echo '
'; echo '

'.__('My favorites').'

'; $count = 0; $user_fav = $core->favs->getFavoriteIDs(false); foreach ($user_fav as $id) { $fav = $core->favs->getFavorite($id); if ($fav != false) { // User favorites only if ($count == 0) echo '
    '; $count++; echo '
  • '.''. '
  • '; } } if ($count > 0) echo '
'; if ($count > 0) { echo '
'. '

'.form::hidden('favs_order',''). $core->formNonce(). ' '. '

'. ($core->auth->isSuperAdmin() ? '
'. '

'.__('If you are a super administrator, you may define this set of favorites to be used by default on all blogs of this installation.').'

'. '

'.'

'. '
' : ''). '
'; } else { echo '

'.__('Currently no personal favorites.').'

'; } $avail_fav = $core->favs->getFavorites($core->favs->getAvailableFavoritesIDs()); $default_fav_ids = array(); foreach($core->favs->getFavoriteIDs(true) as $v) { $default_fav_ids[$v]=true; } echo '
'; # /box my-fav echo '
'; # Available favorites echo '
'.__('Other available favorites').'
'; $count = 0; function cmp($a,$b) { if ($a['title'] == $b['title']) { return 0; } return ($a['title'] < $b['title']) ? -1 : 1; } uasort($avail_fav,'cmp'); foreach ($avail_fav as $k => $v) { if (in_array($k,$user_fav)) { unset($avail_fav[$k]); } } foreach ($avail_fav as $k=>$fav) { if ($count == 0) echo '
    '; $count++; echo '
  • '.''. (isset($default_fav_ids[$k]) ? ' '.__('(default favorite)').'' : ''). '
  • '; } if ($count > 0) echo '
'; echo '

'. $core->formNonce(). '

'; echo '
'; # /available favorites echo '
'; echo '
'. '
'. '

'.__('Menu').'

'. '

'; echo '
'. '

'.__('Dashboard icons').'

'. '

'; if (count($iconsets_combo) > 1) { echo '

'. form::combo('user_ui_iconset',$iconsets_combo,$user_ui_iconset).'

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

'.__('Dashboard modules').'

'. '

'. '

'. '


'. //Opera sucks '

'; echo '
'; # --BEHAVIOR-- adminDashboardOptionsForm $core->callBehavior('adminDashboardOptionsForm',$core); echo '

'. form::hidden('db-options','-'). $core->formNonce(). '

'. '
'; echo '
'; # /multipart-user-favorites dcPage::helpBlock('core_user_pref'); dcPage::close();