Afficher le logo du groupe

Re: Afficher le logo du groupe

par djedai djedai,
Nombre de réponses : 6

Salut Sébastien !

Merci pour ton retour. J'avais remarqué que pour les cohortes, je ne pouvais pas gérer de période d'inscription facilement. Le plugin coupon ne proposait pas cette possibilité pour les cohortes. Il le propose uniquement pour les cours.

J'ai pas mal avancé en appelant les informations nécessaires (user, groupe,picture,contextid) depuis le header.php du thème eguru.

Cependant j'ai remarqué que la variable $userid ne renvoyait pas de valeur sur certaines pages de moodle.

J'ai pourtant fait :

global $USER;
$userid = $USER->id;

et j'ai vérifié que mon session cookie path était bien à "/".

La variable globale $USER ne s'appelle pas partout dans Moodle ?

En réponse à djedai djedai

Re: Afficher le logo du groupe

par Sébastien Mehr,
Avatar Développeurs Avatar Testeurs

Hello,

Quelles pages sont concernées ?


Seb
En réponse à Sébastien Mehr

Re: Afficher le logo du groupe

par djedai djedai,

Salut Seb,

Seul la page url/?redirect=0 renvoie les éléments.



Les autres URL n'arrivent pas à renvoyer le userid :

url/my/

url/user/files.php,

url/mod/scorm/view.php?id=5

url/user/index.php?id=6



En réponse à djedai djedai

Re: Afficher le logo du groupe

par Sébastien Mehr,
Avatar Développeurs Avatar Testeurs

Hello Jérôme,

J'ai jeté un œil sur des fonctions de thème que j'avais faites notamment pour la page cours. J'avais créé une fonction dans la librairie du thème (fichier lib.php à la racine du thème) et déclaré la variable globale $USER dans celle-ci :

/**
 * Return swicthing role button
 *
 * @return string HTML
 */
function theme_cleanupf_rolebutton() {

	  global $DB, $USER, $CFG, $PAGE;
...
...
...
...
}

J'avais ensuite appelé la fonction directement dans mon template PHP de cours (course.php) :

theme_cleanupf_rolebutton();

Dans ce template, ça n'avait pas posé de soucis pour récupérer les infos.


Seb

En réponse à Sébastien Mehr

Re: Afficher le logo du groupe

par djedai djedai,
Il semble que les variables global $USER et $CFG ne s’appellent pas partout. Non authentifié, je récupère bien le chemin vers mon fichier config.php et l'id du user (0).
Dès que je suis authentifié, les valeurs sont vides. seul sur la page url/?redirect j'arrive à récupérer l'id user, le chemin...

Mystère !

Voici le code que j'ai intégré dans le header.php du thème. Il me permet d'écraser la variable $logo appeler dans le header et afficher le logo du groupe.

<code>
/ajout de la gestion du logo pour les groupes
global $USER,$CFG;
$chemin = $CFG->dirroot . '/config.php';
$userid = $USER->id;

$conn = mysqli_connect('', '', ','');

$req= 'SELECT groupid FROM mdl_groups_members WHERE userid ='.$userid;

$res = $conn->query($req);

while($data = mysqli_fetch_array($res))
    {
 $groupe=$data['groupid'];
    }
   
if (!empty($groupe)) {

$req2= 'SELECT picture FROM mdl_groups WHERE id ='.$groupe;
$res2 = $conn->query($req2);


while($datas = mysqli_fetch_array($res2))
    {
 $picture=$datas['picture'];
    }
}

if (!empty($picture)) {

$req3= 'SELECT contextid FROM mdl_files WHERE id ='.$picture;
$res3 = $conn->query($req3);


while($datass = mysqli_fetch_array($res3))
    {
 $context=$datass['contextid'];
    }
}

mysqli_close($conn);

if (!empty($groupe) && !empty($picture) && !empty($context))
{
$logo='https://url/pluginfile.php/'.$context.'/group/icon/'.$groupe.'/f1?rev='.$picture;
}</code>


En réponse à djedai djedai

Re: Afficher le logo du groupe

par Sébastien Mehr,
Avatar Développeurs Avatar Testeurs
En parcourant rapidement l'arborescence du thème eguru, il se trouve que le fichier header.php est appelé uniquement sur le layout frontpage.php. Comme son nom l'indique celui-ci est utilisé uniquement sur la page d'accueil clin d’œil

Si tu reportes tes modifications dans l'ensemble des layouts concernés, en particulier columns2.php, ça devrait fonctionner. Du coup, il serait pertinent de convertir ton code en une fonction à placer dans le fichier lib.php du thème eguru afin d'éviter de devoir faire des copier/coller sur chaque layout.

D'autres part, je te suggère vivement d'utiliser l'API Moodle pour accéder aux données présentes dans la base de données :

Seb
En réponse à Sébastien Mehr

Re: Afficher le logo du groupe

par djedai djedai,

Merci Sébastien ! Oui

Ca marche bien. Je vais peaufiner en intégrant tout dans une fonction et en utilisant l'API pour la base de données.