Réinitialiser le tableau de bord de tous les utilisateurs

Réinitialiser le tableau de bord de tous les utilisateurs

par Christian Bocquet,
Nombre de réponses : 5
Avatar Moodleurs particulièrement utiles

Bonjour,

Ma plate-forme de production est encore en version 2.9 et l'administrateur ne dispose pas du bouton "Réinitialiser le tableau de bord de tous les utilisateurs" qui est une nouveauté de la version 3.0.

Est-il possible d'obtenir cette réinitialisation par un autre moyen ?

Si je décoche la capacité moodle/my:manageblocks au rôle d'utilisateur authentifié, pour empêcher les utilisateurs de modifier leur tableau de bord, est-ce que tous les tableaux de bord reviendront à la configuration du tableau de bord par défaut défini par l'administrateur ou est-ce que tous les tableaux de bord seront "gelés" ?

Merci pour votre aide.

Christian

Moyenne des évaluations  -
En réponse à Christian Bocquet

Re: Réinitialiser le tableau de bord de tous les utilisateurs

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour Christian,

En décortiquant le code de la fonction "my_reset_page_for_all_users" de la lib.php de "my" (désolé pour les gros mots grand sourire), on s'aperçoit que ce n'est pas si simple. On devrait pouvoir obtenir ce résultat en opérant directement dans la base de données, faute de mieux. Il faut donc virer les blocs instanciés, ainsi que toutes leurs dépendances (là j'ai un doute) dans les pages "my" des usagers et virer ces pages "my"...

Pour sélectionner les blocs en question, la requête (format PostgreSQL) est la suivante :

SELECT bi.id
        FROM mdl_my_pages p
        JOIN mdl_context ctx ON ctx.instanceid = p.userid AND ctx.contextlevel = 30
        JOIN mdl_block_instances bi ON bi.parentcontextid = ctx.id AND
            bi.pagetypepattern = 'my-index' AND
            (bi.subpagepattern IS NULL OR cast(bi.subpagepattern as bigint) = p.id )
        WHERE p.private = 1

Suffit de faire un delete sur tous les blocks avec ces ID... (je ne donne pas volontairement directement la requête afin d'éviter les copier-coller de ceux qui ne sauraient pas interpréter les risques).

Puis de faire la suppression des pages "my" dont les ID sont :

SELECT id
  FROM mdl_my_pages
WHERE userid IS NOT NULL AND private = '1'

Je donne ces infos pour les courageux mais SANS AUCUNE GARANTIE !!!

J'ai des gros doutes sur la partie surpression des blocs dont je pense qu'il existe des traces dans d'autres tables...

A bientôt,
Patrick

En réponse à Patrick Lemaire

Re: Réinitialiser le tableau de bord de tous les utilisateurs

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Merci Patrick,

Désolé. J'aurais du te préciser que je ne suis pas l'administrateur technique et que je n'ai pas accès à la base de données.

Je précise mon problème. J'ai créé un nouveau bloc central contenant des informations importantes sur la page tableau de bord par défaut au dessus du bloc de la vue d'ensemble des cours pour qu'il soit bien visible. Mais je constate que ce bloc n'apparait sur la page du tableau de bord de l'utilisateur connecté que s'il réinitialise cette page, sinon le bloc n'apparait pas. Je souhaiterai que ce bloc apparaisse obligatoirement, comme c'est le cas pour les blocs NAVIGATION et ADMINISTRATION. Mais j'ai l'impression qu'il faudra attendre le passage à la version 3.0 pour que ce soit possible sans intervenir sur la base de données.

Christian

En réponse à Christian Bocquet

Re: Réinitialiser le tableau de bord de tous les utilisateurs

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles

Bonjour Christian,

Dans les versions antérieures une solution simple serait un appel au peuple pour effectuer sa propre réinitialisation de tableau de bord.

Dans la nouvelle formule l'inconvénient est qu'on va arbitrairement poutiniennement casser chacune des constructions individuelles.

La vie est semée de choix à faire pensif

Daniel

En réponse à Daniel Méthot

Re: Réinitialiser le tableau de bord de tous les utilisateurs

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonjour Daniel, bonjour Patrick,

Mon problème décrit dans mon deuxième message est résolu en choisissant, dans la configuration du bloc HTML, pour le paramètre : "Où ce bloc apparaît" -> "Sélectionner pages", "Toutes les pages correspondant aux critères ci-dessus" à la place de "Cette page spécifique". Ainsi le bloc apparaît bien dans le tableau de bord de tous les utilisateurs sans avoir besoin de le réinitialiser.
L'utilisateur connecté ne peut pas supprimer le bloc ainsi créé. Il peut encore configurer son emplacement et il peut encore le rendre invisible (au sens oeil ouvert/fermé). A part en retirant la capacité moodle/my:manageblocks et alors en empêchant les constructions individuelles du tableau de bord, je ne vois pas comment faire pour que seulement ce bloc ne puisse pas être rendu invisible.

Christian

Moyenne des évaluations Utile (1)
En réponse à Christian Bocquet

Re: Réinitialiser le tableau de bord de tous les utilisateurs

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Pour répondre malgré tout à la demande initiale, si cela peut servir à d'autres personnes utilisant une version Moodle 2.9 (ou inférieure), il est possible de réinitialiser les tableaux de bord des utilisateurs grâce à ce plugin dédié sourire

Séverin

Moyenne des évaluations Utile (1)