Creating a new task

Creating a new task

by Jan K -
Number of replies: 1

Hey there,

I am trying to get into moodle development and after doing the block tutorials and some own blocks I wanted to create a task, that downloads at a preset time a file from a link. 

 So I read the Task API page and followed the example. 

I created a file scheduled_file_download_task.php with following content in moodleroot/lib/classes/task/

<?php
namespace block_mdev_block\task;
class scheduled_file_download_task extends \core\task\scheduled_task {
public function get_name() {
// Shown in admin screens
return get_string('scheduledfiledownload', 'block_mdev_block');
}
public function execute() {
echo "test";
}
}
and added the following code into the tasks array of moodleroot/lib/db/tasks.php so that the end of the array looks like that

    array(
        'classname' => 'core\task\sync_plans_from_template_cohorts_task',
        'blocking' => 0,
        'minute' => 'R',
        'hour' => '*',
        'day' => '*',
        'dayofweek' => '*',
        'month' => '*'
    ),
    array(
        'classname' => 'block_mdev_block\task\scheduled_file_download_task',
        'blocking' => 0,
        'minute' => '5',
        'hour' => '*',
        'day' => '*',
        'dayofweek' => '*',
        'month' => '*'
    ),
);
Then I increased the version number of my block block_mdev_block, but I neither can find my task in admin settings (server > scheduled tasks) nor in the database table mdl_task_scheduled. 

Can anyone help me finding my error?

Average of ratings: -
In reply to Jan K

Re: Creating a new task

by Olumuyiwa Taiwo -
Picture of Plugin developers

Looks like you misread the Task API documentation.

Your subclass and array should be created under your plugin/block folder, not moodleroot.

And, you should not modify core Moodle code.

Average of ratings: Useful (1)