martes, 14 de febrero de 2012

Hosting GoDaddy

Aquí tenéis un hosting de páginas web que según un estudio de mercado es el mejor y más económico, y no, no soy comercial de ellos...jejeje
https://www.godaddy.com/

Nuevas páginas para crear web

Bueno aquí dejos unas cuantas páginas más donde vienen algunas cosas interesantes para hacer páginas web:

http://www.maestrosdelweb.com/

http://www.forosdelweb.com/

http://www.desarrolloweb.com/

Nos leemos, hasta pronto

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

miércoles, 8 de febrero de 2012

Fecha de inicio y fin de los grupos en MOODLE

Estoy intentando asignarle una fecha de inicio y de fin a los grupos de cada curso en MOODLE, x ahora he insertado en el archivo group_form.php  estas dos líneas al final del formulario, antes de añadir los elementos ocultos:

        $mform->addElement('date_selector', 'assesstimefinish', 'Fecha inicio');
      
        $mform->addElement('date_selector', 'assesstimefinish', 'Fecha fin');

Para que se guarden en la base de datos, primero creamos los dos campos en la base de datos, yo los he llamado 'startgroup' y 'endgroup'.Luego simplemente modificamos el assesstimefinish de la función por el nombre del campo de la base de datos, así directamente lo relacion y lo guarda en la base de datos.
Entonces el código quedaría así:

        $mform->addElement('date_selector', 'startgroup', 'Fecha inicio');
       
        $mform->addElement('date_selector', 'endgroup', 'Fecha fin');

Aquí ya tenemos guardados en la base de datos la fecha de inicio y de fin.


Observar la BD en Moodle

Bueno es una cosa un poco "ridícula" pero a veces se te olvida y pierdes tiempo buscando como acceder a la BD de Moodle

https://localhost/admin/mysql/

lunes, 6 de febrero de 2012

Fechas en timestamp


A veces es más cómodo guardar las fechas en la base de datos como un timestamp, que es como una marca de tiempo, más info aquí. Aquí tenemos una cómoda página donde encontrar una calculadora de estas marcas de tiempo.
http://www.onlineconversion.com/unix_time.htm

Modificar los informes de MOODLE

Hola, estoy intentando modificar la tabla que muestra los registros de los informes de los usuarios en un curso scorm, más concretamente estoy intentando eliminar la columna de dirección ip.
Para ello en el archivo /moodle/course/lib.php, la función que se encarga de imprimir esta tabla se llama print_log, ahí puedes investigar y comprobar que código imprime cada parte de la tabla.
Yo concretamente para lo que quiero he comentado las líneas que imprime la cabecera y las celdas de la tabla que mostraba las ip's.

Además, en la columna de acción quiero traducir las acciones que aparecen ahí, así que para ello he creado una función donde entra la acción y por un filtro de if busca si está y la traduce. Luego reemplazo esta línea:

$displayaction="$log->module $log->action";

por esta:

$displayaction=traductormodule($log->module). " ". traductoraction($log->action);
siendo traductormodule y traductoraction mis funciones para traducir las cadenas.

Gracias y hasta pronto.

Tildes en el módulo de Actividad Reciente en MOODLE

He tenido un problema con las tíldes en las fechas que aparecen en el bloque de actividad reciente en moodle, bueno he modificado una función en el archivo moodle/lib/moodlelib.php en la función function userdate($date, $format='', $timezone=99, $fixday = true), aquí al final aparece un if donde entra si estamos en windows, bueno lo he modificado para que entre siempre.
No creo que sea una solucíón muy elegante puesto que podría fallar al entrar con un sistema operativo linux pero funciona