recherche comment supprimer les utilisateurs de moodle fantôme (LDAP)

recherche comment supprimer les utilisateurs de moodle fantôme (LDAP)

par stephane ngov,
Nombre de réponses : 6

Bonjour sourire

J'aimerai supprimer les utilisateurs de moodle lorque cette utilisateur à été retirer

du LDAP.

Il y a bien le script de synch LDAP mais il ne supprime pas l'utilisateur de moodle.

Après avoir retiré un utilisateur du LDAP et fait une synchro LDAP,

l'utilisateur en question est toujours dans la table prod_user, par contre sont champ

"DELETE" est à 1. Comment je peux faire pour que toutes les traces d'utilisateur de table

moodle soit effacer ? je pensais de lister toutes les tables quoi on un champ "userid",

mais il y en a beaucoup trop.

Existe t'il un script qui purge les données des utilisateurs désincrit, bien sur

je pourrais passer par l'interface de moodle mais je souhaite automatiser cette tâche

avec le cron.

j'ai crée un script pour inscrire et désincrire automatiquement les membres dans chaque cours,

chaque chorte/synchro chorte , chaque groupe , mais tant que le membre est encore

dans la table prod_user, mon script ne pourra pas les désinscrires.

 

je vous remerci d'avance pour la réponse.

Moyenne des évaluations  -
En réponse à stephane ngov

Re: recherche comment supprimer les utilisateurs de moodle fantôme (LDAP)

par stephane ngov,

Bon, apparemment j'ai fait ceci

 

    public function testUser() {


        echo "<h1>recherche des user fantômes </h1>";
        $sql_fantom = "SELECT id FROM mdl_user WHERE deleted = 1 and auth='ldap'  ";
        $qb_query = $this->bdd->query($sql_fantom);

        while ($donnee = $qb_query->fetch(PDO::FETCH_OBJ)) {
            $this->id_fantome[] = $donnee->id;
        }
        echo "===============<br/>";


        echo "suppression des utilisateurs retirer du LDAP<br/>";
        $sql_champ = "SELECT TABLE_NAME
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE  table_schema = 'moodle' AND column_name ='userid' ";
        $qb_champ = $this->bdd->query($sql_champ);




        while ($result_champ = $qb_champ->fetch(PDO::FETCH_OBJ)) {
            $champ = $result_champ->TABLE_NAME; //nom des table qui contient le champ userid

            foreach ($this->id_fantome as $F) {
                echo "<h1>id fantom = $F  || champ  = $champ</h1>";
                $kill_fantom = "DELETE FROM $champ WHERE userid =$F"; //suppresion des des lignes  dans toutes le table avec un champ userid
                echo $kill_fantom;
                $this->bdd->exec($kill_fantom);
            }
        }
    }

 

cela à l'air plutôt de fonctionner ...

En réponse à stephane ngov

Re: recherche comment supprimer les utilisateurs de moodle fantôme (LDAP)

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

Et cela ne met pas la pagaille, par exemple dans les forums, pour lesquels un message répond(ait) à un autre message (d'un utilisateur supprimé) ?

En réponse à Séverin Terrier

Re: recherche comment supprimer les utilisateurs de moodle fantôme (LDAP)

par stephane ngov,

Merci Séverin  c'est une bonne remarque, quelles sont les noms des tables à ne pas supprimer ?

pour le moment je vois

table stat

et d'après votre remarque table forum

En réponse à stephane ngov

Re: recherche comment supprimer les utilisateurs de moodle fantôme (LDAP)

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

Je pense que :

  • si Moodle ne supprime pas certaines données, c'est pour préserver l'intégrité des données !
  • il doit être possible très facilement d'aller consulter des forums, et discussions de forums dans lesquels sont intervenus des personnes dont les comptes ont été supprimés, ainsi que toutes les informations liées dans plusieurs tables, et voir si cela a une incidence...

Séverin

En réponse à Séverin Terrier

Re: recherche comment supprimer les utilisateurs de moodle fantôme (LDAP)

par stephane ngov,

je remonte ce poste mais ça peut être utile

J'ai supprimer toute les tables sans celle ci

ça gade les forums et les autres activité.

j'ai donc créé donc plein d'activité,

j'ai lancer la suppression et j'ai vérifier que mes activités son lisible et encore là

(Sauf pour le tchat mais c'est pas bien grave)

 

$champ == 'prod_forum_posts' ||
                        $champ == 'prod_forum_discussions' ||
                        $champ == 'prod_forum_queue' ||
                        $champ == 'prod_forum_read' ||
                        $champ == 'prod_forum_subscriptions' ||
                        $champ == 'prod_files'||
                        $champ == 'prod_files_reference'

 

        while ($result_champ = $qb_champ->fetch(PDO::FETCH_OBJ)) {
            $champ = $result_champ->TABLE_NAME; //nom des table qui contient le champ userid
            //$ne_pas_effacer = in_array('prod_forum_posts',$champ);
            //unset($champ[$ne_pas_effacer]);
            foreach ($this->id_fantome as $F) {
                // echo "<h1>id fantom = $F  || champ  = $champ</h1>";
                $kill_fantom = "DELETE FROM $champ WHERE userid =$F";
                // echo $kill_fantom;
                if ($champ == 'prod_forum_posts' ||
                        $champ == 'prod_forum_discussions' ||
                        $champ == 'prod_forum_queue' ||
                        $champ == 'prod_forum_read' ||
                        $champ == 'prod_forum_subscriptions' ||
                        $champ == 'prod_files'||
                        $champ == 'prod_files_reference'
                ) {
                    echo "===> garde $champ";
                } else {
                    $this->bdd->exec($kill_fantom);
                }
            }
        }

En réponse à stephane ngov

Re: recherche comment supprimer les utilisateurs de moodle fantôme (LDAP)

par Florent Lartet,

Bonjour à tous,

je me permets juste une suggestion par rapport à ce que j'avais fait il y a longtemps finalement (en 1.9). Plutôt que de tout supprimer et de risquer des incohérences, je ré-affectais les entrées à un utilisateur qui s'appelait "Utilisateur supprimé". Cela n'allège pas vraiment les données mais cela allège un peu les différents index et surtout la table mdl_user , ce qui m'intéressait à l'époque.

Une idée mais peut-être que ce n'est pas cela que vous cherchez non plus.