Scenario: Vogliamo impostare il consenso al trattamento dei dati per un gruppo di utenti iscritti su Moodle, che vogliamo selezionare in base al dominio dell’indirizzo e-mail
Problema: Dalla sezione admin/tool/policy/acceptances.php
purtroppo non è possibile filtrare gli utenti in base all’indirizzo email (è possibile solo ordinarli) e quindi se dobbiamo selezionare molti utenti l’operazione risulta lenta
Per risolvere il problema possiamo eseguire la seguente query direttamente sul database.
Prima di eseguirla assicurarsi che per gli utenti che si intendono selezionare, non ci siano già dei consensi accettati e di conseguenza dei record nella tabella.
1 2 3 4 |
INSERT INTO mdl_tool_policy_acceptances (`policyversionid`, `userid`, `status`, `lang`, `usermodified`, `timecreated`, `timemodified`, `note`) SELECT 2, u.id, 1, 'it', u.id, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), NULL FROM mdl_user u WHERE u.email LIKE '%@dominio.it' AND u.id NOT IN (1001,1002); |
In questo caso stiamo escludendo, dall’aggiunta, gli utenti il cui ID è il 1001 e il 1002, perché abbiamo verificato che hanno già dei record nella tabella mdl_tool_policy_acceptances
Alcune note importanti:
policyversionid
dev’essere impostato sulla versione della policy che si vuole accettare, di predefinito sarebbe 1, qui abbiamo messo 2 supponendo di avere due policyusermodified
qui lo abbiamo messo identico all’utente che stiamo modificando, in linea di principio andrebbe associato all’utente di un responsabile per la privacynote
lo abbiamo lasciato vuoto, di solito si potrebbe segnare qui la nota che siamo noi ad apportare la modifica
Se non ci sono utenti da escludere, rimuovere la parte finale della query, che diventerebbe così:
1 2 3 4 |
INSERT INTO mdl_tool_policy_acceptances (`policyversionid`, `userid`, `status`, `lang`, `usermodified`, `timecreated`, `timemodified`, `note`) SELECT 2, u.id, 1, 'it', u.id, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), NULL FROM mdl_user u WHERE u.email LIKE '%@dominio.it' |