[Tutorial] Agregar una tarea programada (RC3 - RC4)

Started by ^HeRaCLeS^, October 27, 2010, 09:50:55 PM

Previous topic - Next topic

^HeRaCLeS^

Agregar una tarea programada

Bueno en este pequeño tutorial vamos a ver la forma de agregar una funcion como tarea programada para nuestro foro.

Para ello vamos a necesitar modificar dos archivos y crear un tercero.
Los archivos a modificar son:
ScheduledTasks.php
ManageScheduledTasks.english.php

El archivo a crear lo llamaremos en este caso:
TareaBase.php

Nota: Si tenemos mas idiomas aparte del ingles debemos modificar tambien
el archivo de idioma de cada uno.
Ej: ManageScheduledTasks.spanish_latin.php

*********************************


Vamos a empezar por el archivo ScheduledTasks.php que lo encontramos en la carpeta Sources.

vamos a buscar:
?>

Y antes de eso vamos a crear la funcion que queremos que se ejecute como tarea programada.

function scheduled_NombreFuncion()
{
*************
Aca vamos a escribir todo el codigo de nuestra funcion.

Yo no voy a poner una funcion porque el Tutorial es para crear una tarea programada
y la funcion va a depender de cada uno.
*************
return true;
}


Notas:

  • En el nombre de la funcion siempre tiene que estar la cadena de texto scheduled_
    seguida del nombre que queramos nosotros.
    Ej: function scheduled_NombreFuncion
  • El codigo return true; hay que dejarlo para que una ves que termine la funcion retorne.
*********************************



Una ves echo esto vamos a editar nuestro segundo archivo.
En el archivo ManageScheduledTasks.english.php que lo encontramos en la carpeta Themes\default\languages.
vamos a buscar:
?>

Y antes de eso vamos a agregar lo siguiente:

$txt['scheduled_task_NombreFuncion'] = 'Titulo';
$txt['scheduled_task_desc_NombreFuncion'] = 'Descripcion';


Nota: Es muy importante que no modifiquen esas cadenas de texto
Siempre tienen que ser
$txt['scheduled_task_NombreFuncion']
$txt['scheduled_task_desc_NombreFuncion']


NombreFuncion tiene que ser el mismo nombre que le dimos a la funcion en el archivo ScheduledTasks.php despues del scheduled_

Bueno con eso ya terminamos de modificar los dos archivos,  ahora tenemos que crear un
archivo para que agregue un campo en la base de datos para que la tarea pueda trabajar.
Vamos a utilizar lo siguiente para hacerlo:

      INSERT INTO {db_prefix}scheduled_tasks (id_task, next_time, time_offset, time_regularity, time_unit, disabled, task)
      VALUES (NULL, 0, 0, 1, "d", 0, "NombreFuncion")


Ahora voy a explicar un poco que parametros usaremos.
id_task = Es el id de la tarea programada, es asignada automaticamente.
          La dejamos como NULL
next_time = Es la proxima ves que se debe ejecutar la tarea.
          La dejamos en 0 porque nunca se ejecuto.
time_offset = Es la hora de inicio.
          La dejaremos en 0 porque la pone el servidor.
time_regularity = Es la regularidad con la que se ejecutara la tarea.
          Le pondremos como valor 1.
time_unit = Es la unidad de tiempo y puede ser "m=minutos", "h=horas", "d=Dias", "w=semanas"
          Nosotros usaremos "d"
disabled = habilita o deshabilita la tarea "0 = habilitado", "1 = deshabilitado".
          Nosotros usaremos "0"
task = Es el nombre de la tarea.

Una ves explicado esto vamos a creamo nuestro archivo php
en este caso lo llamaremos TareaBase.php.

Dentro de ese archivo pondremos el siguiente codigo:

<?php
if (file_exists(dirname(__FILE__) . '/SSI.php') && !defined('SMF')){
 
 require_once(dirname(__FILE__) . '/SSI.php');
}  
$smcFunc['db_query']('''
 INSERT INTO {db_prefix}scheduled_tasks (id_task, next_time, time_offset, time_regularity, time_unit, disabled, task)
 VALUES (NULL, 0, 0, 1, "d", 0, "NombreFuncion")
 '
);
 
echo 
'Base de datos Modificada...<br />En 5 segundos sera redirigido al inicio.';
echo 
'<meta HTTP-EQUIV="refresh" CONTENT="5;URL='.$scripturl.'">';

?>



Donde solo modificaremos NombreFuncion por el nombre que le hayamos dado a nuestra tarea.

Una ves creado el archivo y con su codigo ya puesto solo tenemos que ejecutar el archivo.
Para ello pondremos lo siguiente en nuestro navegador: www.nuestraweb.com/TareaBase.php

Una ves que modifique la base de datos seremos redirigidos automaticamente al inicio del sitio.

Aca unas imagenes de como queda:






*********************************



Funciona en versiones: RC3 y RC4

Fuente: SmfPersonal
Bueno esto es todo, espero que le sea de utilidad a alguien.


Saludos!!
^HeRaCLeS^
*¤×• Ni te molestes en enviarme un Mp porque el soporte lo doy solo por el foro •×¤*


SMFPersonal

Advertisement: