Пример #1
0
 /**
  * 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));
 }
Пример #2
0
<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());