forked from moodle/moodle
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDL-61960 blocks: Standard block plugins use legacy cron
- Loading branch information
1 parent
0180369
commit fad9dc9
Showing
11 changed files
with
272 additions
and
104 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
<?php | ||
// This file is part of Moodle - http://moodle.org/ | ||
// | ||
// Moodle is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// Moodle is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
/** | ||
* Task for updating RSS feeds for rss client block | ||
* | ||
* @package block_recent_activity | ||
* @author Farhan Karmali <[email protected]> | ||
* @copyright Farhan Karmali 2018 | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
namespace block_recent_activity\task; | ||
|
||
defined('MOODLE_INTERNAL') || die(); | ||
|
||
/** | ||
* Task for updating RSS feeds for rss client block | ||
* | ||
* @package block_recent_activity | ||
* @author Farhan Karmali <[email protected]> | ||
* @copyright Farhan Karmali 2018 | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
class cleanup extends \core\task\scheduled_task { | ||
|
||
/** | ||
* Name for this task. | ||
* | ||
* @return string | ||
*/ | ||
public function get_name() { | ||
return get_string('cleanuptask', 'block_recent_activity'); | ||
} | ||
|
||
/** | ||
* Remove old entries from table block_recent_activity | ||
*/ | ||
public function execute() { | ||
global $DB; | ||
// Those entries will never be displayed as RECENT anyway. | ||
$DB->delete_records_select('block_recent_activity', 'timecreated < ?', | ||
array(time() - COURSE_MAX_RECENT_PERIOD)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
<?php | ||
// This file is part of Moodle - http://moodle.org/ | ||
// | ||
// Moodle is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// Moodle is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
/** | ||
* Task definition for block_recent_activity. | ||
* @author Farhan Karmali <[email protected]> | ||
* @copyright Farhan Karmali 2018 | ||
* @package block_recent_activity | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
defined('MOODLE_INTERNAL') || die(); | ||
|
||
$tasks = array( | ||
array( | ||
'classname' => '\block_recent_activity\task\cleanup', | ||
'blocking' => 0, | ||
'minute' => 'R', | ||
'hour' => 'R', | ||
'day' => '*', | ||
'month' => '*', | ||
'dayofweek' => '*', | ||
'disabled' => 0 | ||
) | ||
); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
<?php | ||
// This file is part of Moodle - http://moodle.org/ | ||
// | ||
// Moodle is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// Moodle is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
/** | ||
* Task for updating RSS feeds for rss client block | ||
* | ||
* @package block_rss_client | ||
* @author Farhan Karmali <[email protected]> | ||
* @copyright Farhan Karmali 2018 | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
namespace block_rss_client\task; | ||
|
||
defined('MOODLE_INTERNAL') || die(); | ||
|
||
/** | ||
* Task for updating RSS feeds for rss client block | ||
* | ||
* @package block_rss_client | ||
* @author Farhan Karmali <[email protected]> | ||
* @copyright Farhan Karmali 2018 | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
class refreshfeeds extends \core\task\scheduled_task { | ||
|
||
/** | ||
* Name for this task. | ||
* | ||
* @return string | ||
*/ | ||
public function get_name() { | ||
return get_string('refreshfeedstask', 'block_rss_client'); | ||
} | ||
|
||
/** | ||
* This task goes through all the feeds. If the feed has a skipuntil value | ||
* that is less than the current time cron will attempt to retrieve it | ||
* with the cache duration set to 0 in order to force the retrieval of | ||
* the item and refresh the cache. | ||
* | ||
* If a feed fails then the skipuntil time of that feed is set to be | ||
* later than the next expected task time. The amount of time will | ||
* increase each time the fetch fails until the maximum is reached. | ||
* | ||
* If a feed that has been failing is successfully retrieved it will | ||
* go back to being handled as though it had never failed. | ||
* | ||
* Task should therefore process requests for permanently broken RSS | ||
* feeds infrequently, and temporarily unavailable feeds will be tried | ||
* less often until they become available again. | ||
*/ | ||
public function execute() { | ||
global $CFG, $DB; | ||
require_once($CFG->libdir.'/simplepie/moodle_simplepie.php'); | ||
|
||
// We are going to measure execution times. | ||
$starttime = microtime(); | ||
$starttimesec = time(); | ||
|
||
// Fetch all site feeds. | ||
$rs = $DB->get_recordset('block_rss_client'); | ||
$counter = 0; | ||
mtrace(''); | ||
foreach ($rs as $rec) { | ||
mtrace(' ' . $rec->url . ' ', ''); | ||
|
||
// Skip feed if it failed recently. | ||
if ($starttimesec < $rec->skipuntil) { | ||
mtrace('skipping until ' . userdate($rec->skipuntil)); | ||
continue; | ||
} | ||
|
||
// Fetch the rss feed, using standard simplepie caching | ||
// so feeds will be renewed only if cache has expired. | ||
\core_php_time_limit::raise(60); | ||
|
||
$feed = new \moodle_simplepie(); | ||
// Set timeout for longer than normal to be agressive at | ||
// fetching feeds if possible.. | ||
$feed->set_timeout(40); | ||
$feed->set_cache_duration(0); | ||
$feed->set_feed_url($rec->url); | ||
$feed->init(); | ||
|
||
if ($feed->error()) { | ||
// Skip this feed (for an ever-increasing time if it keeps failing). | ||
$block = new \block_rss_client(); | ||
$rec->skiptime = $block->calculate_skiptime($rec->skiptime); | ||
$rec->skipuntil = time() + $rec->skiptime; | ||
$DB->update_record('block_rss_client', $rec); | ||
mtrace("Error: could not load/find the RSS feed - skipping for {$rec->skiptime} seconds."); | ||
} else { | ||
mtrace ('ok'); | ||
// It worked this time, so reset the skiptime. | ||
if ($rec->skiptime > 0) { | ||
$rec->skiptime = 0; | ||
$rec->skipuntil = 0; | ||
$DB->update_record('block_rss_client', $rec); | ||
} | ||
// Only increase the counter when a feed is sucesfully refreshed. | ||
$counter ++; | ||
} | ||
} | ||
$rs->close(); | ||
|
||
// Show times. | ||
mtrace($counter . ' feeds refreshed (took ' . microtime_diff($starttime, microtime()) . ' seconds)'); | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
<?php | ||
// This file is part of Moodle - http://moodle.org/ | ||
// | ||
// Moodle is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// Moodle is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
/** | ||
* Task definition for block_rss_client. | ||
* @author Farhan Karmali <[email protected]> | ||
* @copyright Farhan Karmali 2018 | ||
* @package block_rss_client | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
defined('MOODLE_INTERNAL') || die(); | ||
|
||
$tasks = array( | ||
array( | ||
'classname' => '\block_rss_client\task\refreshfeeds', | ||
'blocking' => 0, | ||
'minute' => '*/5', | ||
'hour' => '*', | ||
'day' => '*', | ||
'month' => '*', | ||
'dayofweek' => '*', | ||
'disabled' => 0 | ||
) | ||
); | ||
|
Oops, something went wrong.