Session Joomla 1.6 - Ajout d'information dans une session démarée

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Session Joomla 1.6 - Ajout d'information dans une session démarée

    Bonjour à tous,

    Je suis en train de développer un composant qui permet d'ajouter un article en frontend (l'utilisateur doit être connecté). Cette opération se fait par mon composant et pas le com_content pour diverses raisons.

    L'ajout d'article, catégorie, groupes et niveau d'accès c'est bon. Lorsque l'article est créer par l'utilisateur, je peux le lister, l'éditer et le sauvegarder mais pas visualiser le contenu !!

    Si je me déconnecté et me reconnecte je peux voir l'article. Donc je veux mettre à jour les informations suivantes contenu dans la session:

    (j'ai comparé me deux sessions et voici les informations qui manque)

    1 - ajouter les groupes créés dans--> [groups]
    2 - ajouter les groupes créés dans -> [_authGroupsrotected]
    3 - ajouter le niveau d'accès créé dans -> [_authLevelsrotected]

    ces 3 tableaux se trouvent dans

    [__default] (array)
    -------------[user] (stdClass Object)
    --------------------[groups] (array)
    --------------------[_authGroupsrotected] (array)
    --------------------[_authLevelsrotected] (array)

    En faisant des recherches je suis tombé sur la doc officielle (http://docs.joomla.org/JSession/1.6).

    Je n'ai pas réussi à utiliser la fonction comme je le voulais, j'ai pu ajouter des valeurs, mais pas dans l'objet user...

    $session =& JFactory::getSession();
    //$session->set(...)
    $sessionUser = $session->get('user');
    $sessionUser['groups']->set($viewGroupName => $viewGroupId);
    //$session->groups->set($viewGroupName => $viewGroupId);

    J’ai procédé de la manière suivante:
    $_SESSION['__default']['user']->groups[$viewGroupName] = $viewGroupId;

    => Cela a fonctionné pour le point 1 [groups] mais pour les points 2 et 3 qui apparemment sont protégés. Je me dis que je suis obligé de passé par l'objet JSession mais je ne vois pas comment faire... (Surtout à cause de l'objet user qui contient les tableaux que je dois mettre à jour...)

    Merci d'avance pour votre aide

  • #2
    Re : Session Joomla 1.6 - Ajout d'information dans une session démarée

    Pour ceux que ca peut aider, voilà une solution que j'ai faite. (Si il y a un autre moyen d'y arriver vos idées sont le bien venues...)

    Sur le principe, je récupère les anciennes valeurs des groupes de la session dont j'ai besoin, ensuite j'ajoute les nouvelles valeurs et je remet tout ca en session (j'ai du mettre une valeur temporaire dans certain groupes protégés (reset) afin de pouvoir remettre le tableau avec les nouvelles données).

    /** get session **/
    $session =& JFactory::getSession();
    /** get user object session **/
    $sessionUser = $session->get('user');
    /** get (groups/_authGroups/_authLevels) array value to temporary array **/
    $tmpSessionGroupsArray = $sessionUser->get('groups');
    $tmpSessionAuthGroupsArray = $sessionUser->get('_authGroups');
    $tmpSessionAuthLevelsArray = $sessionUser->get('_authLevels');
    /** add value at end of temporary array **/
    $tmpSessionGroupsArray[$viewGroupName] = $viewGroupId;
    $tmpSessionGroupsArray[$editGroupName] = $editGroupId;
    $tmpSessionAuthGroupsArray[$viewGroupName] = $viewGroupId;
    $tmpSessionAuthGroupsArray[$editGroupName] = $editGroupId;
    $tmpSessionAuthLevelsArray[] = $viewAccessLevelId;

    /** insert old data and add new groups **/
    $sessionUser->set('groups',$tmpSessionGroupsArray);

    /** reset value of _authGroups array --> if the value isn't reset, we don't add new group !! **/
    $sessionUser->set('_authGroups','tmp');
    /** insert old data and add new groups **/
    $sessionUser->set('_authGroups',$tmpSessionAuthGroupsArray);

    /** reset value of _authLevels array --> if the value isn't reset, we don't add new group !! **/
    $sessionUser->set('_authLevels','tmp');
    /** insert old data and add new groups **/
    $sessionUser->set('_authLevels',$tmpSessionAuthLevelsArray);
    Dernière édition par jean82 à 25/08/2011, 13h08

    Commentaire

    Annonce

    Réduire
    Aucune annonce pour le moment.

    Partenaire de l'association

    Réduire

    Hébergeur Web PlanetHoster
    Travaille ...
    X