lunes, 13 de febrero de 2012

No entrar hasta que no comienze el curso en MOODLE

Bueno, al hilo de la entrada anterior, he añadido una nueva funcionalidad para que no se pueda entrar a un curso hasta que el grupo comienze según las fechas que he introducido en los grupos.
He modificado el archivo "lib.php" que hay dentro de la carpeta "course"
Para ello he añadido estas dos nuevas funciones, la primera me dice si el usuario "$user" puede entrar al curso "$course" devolviendo true o false, y la segunda, si no puede entrar, me imprime el título del curso y un mensaje con la fecha de inicio del curso.

function EntraEnCurso($user,$course){
    //SELECT * FROM mdl_groups AS g, mdl_groups_members AS m WHERE g.id = m.groupid AND m.userid =3 AND g.courseid =2 LIMIT 0 , 30
    global $CFG;
    $entra=false;
    $fechaactual=time()+3600;//Obtengo la fecha actual con una hora mas
    $sql="select * from {$CFG->prefix}groups as g,{$CFG->prefix}groups_members as m where g.id=m.groupid and m.userid=" . $user . " and g.courseid=".$course;
    $consulta=get_records_sql($sql);
   
    if(!$consulta)//Esto significa que no hay grupos, entonces entra si o si
    {
        $entra=true;
    }

    foreach ($consulta as $itemid => $item )
    {
        //echo $fechaactual;echo "\n";
        //echo $item->startgroup+3600;echo "\n";
        //echo $item->endgroup+86400;echo "\n";
        $fechainiciogrupo = $item->startgroup+3600;
        $fechafingrupo = $item->endgroup+86400;
        if( $fechaactual >= $fechainiciogrupo && $fechaactual <= $fechafingrupo ){
            $entra=true;
        }
    }
    return $entra;
}

function printcoursecerrado($user,$course)
{
    global $CFG;
    $fechaactual=time()+3600;//Obtengo la fecha actual con una hora mas
    $sql="select * from {$CFG->prefix}groups as g,{$CFG->prefix}groups_members as m where g.id=m.groupid and m.userid=" . $user . " and g.courseid=".$course;
    $consulta=get_records_sql($sql);
   
    $sql2="select * from {$CFG->prefix}course where id=".$course;
    $consulta2=get_records_sql($sql2);
   
    if($consulta)//Si hay grupos
    {
        foreach ($consulta as $itemid => $item ){
            $fechafingrupo=$item->endgroup+3600;//Obtengo la fecha de fin de grupo xq si es menor se imprime el curso como cerrado si no no se imprime nada, xq el curso ya ha finalizado
           
            if($fechaactual < $fechafingrupo)
            {
                echo "<div class='coursebox clearfix'>";
                echo "<div class='info'>";
                echo "<div class='name'>";
               
                echo current($consulta2)->fullname;
                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; El curso comenzar&aacute el d&iacutea ".Date("d/m/y", $item->startgroup);
                echo "</div>";
                echo "</div>";
                echo "</div>";
            }
        }
    }
}


Estas dos funciones las he añadido a la función print_my_moodle(), aquí esta el código modificado

foreach ($courses as $course) {
                if ($course->id == SITEID) {
                    continue;
                }
               
                //Aquí voy a insertar una restricción para que si el curso está entre las fechas indicadas en el grupo lo inserte
   
                echo '<li>';
                if(EntraEnCurso($USER->id,$course->id))
                    print_course($course);
                else
                    printcoursecerrado($USER->id,$course->id);
                echo "</li>\n";

            }


 Muchas gracias y hasta la próxima, espero les haya servido de ayuda

No hay comentarios:

Publicar un comentario