Bonjour,
Loin d'être professionnel en php, je bidouille un peu...
J'intègre actuellement un code dans une page que je souhaite utiliser avec Joomla 3.2.3.
Pour info, je ne passe pas par un plugins car je suis bien incapable d'en créer un (j'ai essayé mais j'ai du mal a comprendre le fonctionnement et les aides sur internet sont bien pauvres dans ce domaine pour les débutants)...
Mon code joue sur le sexe des users (définis dans le composant Jomsocial) et permet de les changer de groupe d'utilisateur dans Joomla en fonction de cela.
J'intègre à ma page d'accueil un module avec "Flexi Custom Code" qui redirige les utilisateurs enregistrés vers ma page php. Une fois le code traité, ils sont amenés vers une autre page (mur).
Ensuite un autre composant prends le relais pour gérer les accès des utilisateurs en fonction de leur abonnement.
Le code contient des conditions de sexe (homme ou femme) et du groupe dans lequel ils sont déjà...
Détails :
- Par défaut, le groupe des membres enregistrés est le 2.
- Une femme doit être dans le groupe des femmes (ici groupe 12). Si elle ne l'est pas, on lui attribut le groupe 12 avant de la rediriger vers notre page mur.
- Un homme abonné doit être dans le groupe correspondant soit le 10 (défini manuellement en cas d'abonnement).
- Un homme qui vient de s'enregistrer est dans le groupe 2, on le place automatiquement dans le groupe des non abonnés (11) et on le redirige vers la page mur.
- Un homme non abonné qui serait déjà dans le groupe 11 serait simplement redirigé vers la page mur.
- Si l'utilisateur est un super admin (groupe 8), homme ou femme, on le redirige vers la page mur sans rien toucher.
Problème 1 :
Le code me met systématiquement les hommes abonnés (groupe 10) dans le groupe des non abonnés (11).
Problème 2 :
Le changement de groupe n'est pas pris en compte si l'utilisateur ne se déconnecte pas.
J'ai donc testé de déconnecter l'utilisateur si il y a eu changement. Cela fonctionne, mais un peu trop !
Si l'utilisateur se balade sur le site, aucun problème, mais s'il a le malheur d'aller sur la page d'accueil (où se trouve la redirection vers mon code),
il est systématiquement déconnecté même s'il est correctement classé dans le bon groupe !
En espérant que quelqu'un pourra m'apporter une quelconque aide.
Merci d'avance
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 <?php // définir le chemin permettant d'accéder à Joomla define('JPATH_BASE', '../'); // Set flag that this is a parent file define( '_JEXEC', 1 ); define( 'DS', DIRECTORY_SEPARATOR ); require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' ); JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null; $mainframe = JFactory::getApplication('site'); $session = JFactory::getSession(); $user = JFactory::getUser(); if (!$user->guest) { $userid = $user->id ; try { $bdd = new PDO('mysql:host=.....;dbname=.....', '.....', '.....'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT group_id FROM bdt1m_user_usergroup_map WHERE user_id= ' . $userid . ''); $reponse2 = $bdd->query('SELECT value FROM bdt1m_community_fields_values WHERE user_id= ' . $userid . ' AND field_id=2'); while ($donnees = $reponse->fetch()) { $group = $donnees['group_id']; while ($donnees2 = $reponse2->fetch()) { $gender = $donnees2['value']; if ($gender === "COM_COMMUNITY_FEMALE") { if ($group != 8 OR $group != 12 ) { $modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 12 WHERE user_id= ' . $userid . ''); $session->destroy(); } } else if ($group != 8 OR $group != 10 OR $groupe != 11) { $modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 11 WHERE user_id= ' . $userid . ''); $session->destroy(); } } $reponse2->closeCursor(); } $reponse->closeCursor(); mysql_close(); } header('Location: ../index.php/mur'); exit(); ?>
Partager