Dos scripts que deseo compartir (y que funcionan OK)

Dos scripts que deseo compartir (y que funcionan OK)

de Mari Cruz García -
Número de respuestas: 1
Adjunto dos scripts que he realizado por si pueden ser de utilidad. Cuando empecé a trabajar como Moodle hace exactamente un año , me volvía loca haciendo consultas en MySQL, por lo que espero que mis queries les simplifiquen el trabajo.

Primera:

1) Oculta usuarios inactivos durante un perido de tiempo prefijado -12 meses -en la base de datos, pero no los borra, sino que cambia el flag "deleted" a 1. Esta script permite ocultar y recuperar dichos usuarios:

<p>This script hides users accounts who haven't been log in for the last two years. Mari Cruz Garcia
v 2.0
Although hidden users do not appear in the list of users and as participants of courses, they still remain as enrolled
students and receive the email notifications unless unenrolled manually from courses
</p>
<p>
<?php


$ids = array();

require_once('../config.php'); // I can open the database as I am passing all the details in the config.php




// I made sure that only the global administrator can run the script. This is a security measure

global $USER;


$adminContext = get_context_instance(CONTEXT_SYSTEM, SITEID);
if(user_has_role_assignment($USER->id,1,$adminContext->id)){ //check that I am god.




$query = 'SELECT id FROM mdl_user WHERE `lastlogin` < UNIX_TIMESTAMP( DATE_SUB( UTC_DATE, INTERVAL 12 MONTH ) )
AND `deleted` =0 ';

$res = mysql_query($query);

echo "Got List<br>";

while(list($userid) = mysql_fetch_row($res))
{
$ids[] = $userid;
echo 'Obtening user to delete'.$userid.'<br>';
echo 'Obtenemos usuario a borrar '.$userid.'<br>';
}


foreach($ids as $uid)

{
$query = 'UPDATE mdl_user SET deleted=1 WHERE id='.$uid;
mysql_query($query);

echo 'Hiding user '.$uid;
echo 'Borrando usuario '.$uid;
echo '<br>';
echo $query . '<br>';


}


} // close if

?>

</p>
</body>
</html>

2) Esta script BORRA COMPLETAMENTE LOS USUARIOS SELECCIONADOS DE LA BASE DE DATOS. This is the point of no return, como decimos acá, así que si la usan es su entera responsabilidad. Sirve para limpiar completamente la base de datos de antiguos usuarios.

<p>This script removes all users who haven't been log in for the two years. Mari Cruz Garcia
</p>
<p>
<?php


$ids = array();

require_once('../config.php'); // I can open the database as I am passing all the details in the config.php




// I made sure that only the global administrator can run the script. This is a security measure

global $USER;


$adminContext = get_context_instance(CONTEXT_SYSTEM, SITEID);
if(user_has_role_assignment($USER->id,1,$adminContext->id)){ //check that I am god.




$query = 'SELECT id FROM mdl_user WHERE `lastlogin` < UNIX_TIMESTAMP( DATE_SUB( UTC_DATE, INTERVAL 24 MONTH ) )
AND `deleted` =0 ';

$res = mysql_query($query);

echo "Got List<br>";

while(list($userid) = mysql_fetch_row($res))
{
$ids[] = $userid;
echo 'Obtening user '.$userid.'<br>';
}

echo "Obtening the list users to delete </br>";
echo "Obtenemos la lista de usuarios a borrar </br>";

foreach($ids as $uid)

{
$query = 'DELETE FROM `mdl_user` WHERE id='.$uid;
mysql_query($query);

echo 'Deleting user '.$uid;
echo 'Borrando usuario '.$uid;
echo '<br>';
echo $query . '<br>';


}


} // close if

?>

</p>
</body>
</html>


Promedio de valoraciones:Útil (1)