/** * Affichage de la page de profil utilisateur. * */ public function usersProfile() { # module actuel $this->okt->page->module = 'users'; $this->okt->page->action = 'profile'; # page désactivée ? if (!$this->okt->users->config->enable_profile_page) { $this->serve404(); } # invité non convié if ($this->okt->user->is_guest) { http::redirect(html::escapeHTML(usersHelpers::getLoginUrl(usersHelpers::getProfileUrl()))); } # données utilisateur $rsUser = $this->okt->users->getUser($this->okt->user->id); $aUserProfilData = array('id' => $this->okt->user->id, 'username' => $rsUser->username, 'email' => $rsUser->email, 'civility' => $rsUser->civility, 'lastname' => $rsUser->lastname, 'firstname' => $rsUser->firstname, 'language' => $rsUser->language, 'timezone' => $rsUser->timezone, 'password' => '', 'password_confirm' => ''); unset($rsUser); # Champs personnalisés $aPostedData = array(); $aFieldsValues = array(); if ($this->okt->users->config->enable_custom_fields) { $this->rsAdminFields = $this->okt->users->fields->getFields(array('status' => true, 'admin_editable' => true, 'language' => $this->okt->user->language)); # Liste des champs utilisateur $this->rsUserFields = $this->okt->users->fields->getFields(array('status' => true, 'user_editable' => true, 'language' => $this->okt->user->language)); # Valeurs des champs $rsFieldsValues = $this->okt->users->fields->getUserValues($this->okt->user->id); while ($rsFieldsValues->fetch()) { $aFieldsValues[$rsFieldsValues->field_id] = $rsFieldsValues->value; } # Initialisation des données des champs while ($this->rsUserFields->fetch()) { switch ($this->rsUserFields->type) { default: case 1: # Champ texte # Champ texte case 2: # Zone de texte $aPostedData[$this->rsUserFields->id] = !empty($_POST[$this->rsUserFields->html_id]) ? $_POST[$this->rsUserFields->html_id] : (!empty($aFieldsValues[$this->rsUserFields->id]) ? $aFieldsValues[$this->rsUserFields->id] : ''); break; case 3: # Menu déroulant $aPostedData[$this->rsUserFields->id] = isset($_POST[$this->rsUserFields->html_id]) ? $_POST[$this->rsUserFields->html_id] : (!empty($aFieldsValues[$this->rsUserFields->id]) ? $aFieldsValues[$this->rsUserFields->id] : ''); break; case 4: # Boutons radio $aPostedData[$this->rsUserFields->id] = isset($_POST[$this->rsUserFields->html_id]) ? $_POST[$this->rsUserFields->html_id] : (!empty($aFieldsValues[$this->rsUserFields->id]) ? $aFieldsValues[$this->rsUserFields->id] : ''); break; case 5: # Cases à cocher $aPostedData[$this->rsUserFields->id] = !empty($_POST[$this->rsUserFields->html_id]) && is_array($_POST[$this->rsUserFields->html_id]) ? $_POST[$this->rsUserFields->html_id] : (!empty($aFieldsValues[$this->rsUserFields->id]) ? $aFieldsValues[$this->rsUserFields->id] : ''); break; } } } # Suppression des cookies if (!empty($_REQUEST['cookies'])) { $aCookies = array_keys($_COOKIE); unset($aCookies[OKT_COOKIE_AUTH_NAME]); foreach ($aCookies as $c) { unset($_COOKIE[$c]); setcookie($c, null); } http::redirect(html::escapeHTML(usersHelpers::getProfileUrl())); } # Formulaire de changement de mot de passe if (!empty($_POST['change_password']) && $this->okt->checkPerm('change_password')) { $aUserProfilData['password'] = !empty($_POST['edit_password']) ? $_POST['edit_password'] : ''; $aUserProfilData['password_confirm'] = !empty($_POST['edit_password_confirm']) ? $_POST['edit_password_confirm'] : ''; $this->okt->users->changeUserPassword($aUserProfilData); http::redirect(html::escapeHTML(usersHelpers::getProfileUrl())); } # Formulaire de modification de l'utilisateur envoyé if (!empty($_POST['form_sent'])) { $aUserProfilData = array('id' => $this->okt->user->id, 'username' => isset($_POST['edit_username']) ? $_POST['edit_username'] : '', 'email' => isset($_POST['edit_email']) ? $_POST['edit_email'] : '', 'civility' => isset($_POST['edit_civility']) ? $_POST['edit_civility'] : '', 'lastname' => isset($_POST['edit_lastname']) ? $_POST['edit_lastname'] : '', 'firstname' => isset($_POST['edit_firstname']) ? $_POST['edit_firstname'] : '', 'language' => isset($_POST['edit_language']) ? $_POST['edit_language'] : '', 'timezone' => isset($_POST['edit_timezone']) ? $_POST['edit_timezone'] : ''); if ($this->okt->users->config->merge_username_email) { $aUserProfilData['username'] = $aUserProfilData['email']; } # peuplement et vérification des champs personnalisés obligatoires if ($this->okt->users->config->enable_custom_fields) { $this->okt->users->fields->getPostData($this->rsUserFields, $aPostedData); } if ($this->okt->users->updUser($aUserProfilData)) { # -- CORE TRIGGER : adminModUsersProfileProcess $this->okt->triggers->callTrigger('adminModUsersProfileProcess', $this->okt, $_POST); if ($this->okt->users->config->enable_custom_fields) { while ($this->rsUserFields->fetch()) { $this->okt->users->fields->setUserValues($this->okt->user->id, $this->rsUserFields->id, $aPostedData[$this->rsUserFields->id]); } } http::redirect(html::escapeHTML(usersHelpers::getProfileUrl())); } } # fuseaux horraires $aTimezone = dt::getZones(true, true); # langues $aLanguages = $this->getLanguages(); # title tag $this->okt->page->addTitleTag(__('c_c_user_profile')); # titre de la page $this->okt->page->setTitle(__('c_c_user_profile')); # titre SEO de la page $this->okt->page->setTitleSeo(__('c_c_user_profile')); # fil d'ariane if (!$this->isDefaultRoute(__CLASS__, __FUNCTION__)) { $this->okt->page->breadcrumb->add(__('c_c_user_profile'), usersHelpers::getProfileUrl()); } # affichage du template echo $this->okt->tpl->render($this->okt->users->getProfileTplPath(), array('aUserProfilData' => $aUserProfilData, 'aTimezone' => $aTimezone, 'aLanguages' => $aLanguages, 'aCivilities' => $this->getCivities(false), 'rsAdminFields' => $this->rsAdminFields, 'rsUserFields' => $this->rsUserFields, 'aPostedData' => $aPostedData, 'aFieldsValues' => $aFieldsValues)); }
<div id="userbar"> <?php if (!$okt->user->infos->is_guest) { ?> <p> <?php printf(__('c_c_user_hello_%s'), html::escapeHTML(oktAuth::getUserCN($okt->user->username, $okt->user->lastname, $okt->user->firstname))); ?> <?php # début Okatea : lien page profil if ($okt->users->config->enable_profile_page) { ?> - <a href="<?php echo html::escapeHTML(usersHelpers::getProfileUrl()); ?> "><?php _e('c_c_user_profile'); ?> </a> <?php } # fin Okatea : lien page profil ?> <?php # début Okatea : lien déconnexion ?> - <a href="<?php echo html::escapeHTML(usersHelpers::getLogoutUrl());