aboutsummaryrefslogtreecommitdiff
path: root/mod/crontrigger/start.php
blob: 11d467db766d27003a05697569dc91febbeaa0b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
	/**
	 * Elgg Cron trigger.
	 * When enabled this plugin provides "poor man's cron" functionality to trigger elgg cron scripts without the need
	 * to install the cron script.
	 * 
	 * Note, this is a substitute and not a replacement for the cron script. It is recommended that you use the cron script
	 * where possible.
	 * 
	 * @package ElggCronTrigger
	 * @author Curverider Ltd
	 * @link http://elgg.com/
	 */

	/**
	 * Initialise the plugin.
	 *
	 */
	function crontrigger_init()
	{
		register_elgg_event_handler('shutdown', 'system', 'crontrigger_shutdownhook');
	}
	
	function crontrigger_trigger($period) { trigger_plugin_hook('cron', $period); }
	
	function crontrigger_minute() { crontrigger_trigger('minute'); }
		
	function crontrigger_fiveminute() { crontrigger_trigger('fiveminute'); }
	
	function crontrigger_fifteenmin() { crontrigger_trigger('fifteenmin'); }
	
	function crontrigger_halfhour() { crontrigger_trigger('halfhour'); }
	
	function crontrigger_hourly() { crontrigger_trigger('hourly'); }
	
	function crontrigger_daily() { crontrigger_trigger('daily'); }
	
	function crontrigger_weekly() { crontrigger_trigger('weekly'); }
	
	function crontrigger_monthly() { crontrigger_trigger('monthly'); }
	
	function crontrigger_yearly() { crontrigger_trigger('yearly'); }
	
	/**
	 * Call cron hooks after a page has been displayed (so user won't notice any slowdown).
	 * 
	 * It uses a mod of now and needs someone to view the page within a certain time period
	 *
	 */
	function crontrigger_shutdownhook()
	{
		global $CONFIG;
		
		$minute = 60;
		$fiveminute = $minute*5;
		$fifteenmin = $minute*15;
		$halfhour = $minute*30;
		$hour = 3600;
		$day = $hour*24;
		$week = $day * 7;
		$month = $week * 4;
		$year = $month * 12;
		
		$now = time();
		
		ob_start();
		run_function_once('crontrigger_minute', $now - $minute);
		run_function_once('crontrigger_fiveminute', $now - $fiveminute);
		run_function_once('crontrigger_fifteenmin', $now - $fifteenmin);
		run_function_once('crontrigger_halfhour', $now - $halfhour);
		run_function_once('crontrigger_hourly', $now - $hour);
		run_function_once('crontrigger_daily', $now - $day);
		run_function_once('crontrigger_weekly', $now - $week);
		run_function_once('crontrigger_monthly', $now - $month);
		run_function_once('crontrigger_yearly', $now - $year);
		ob_clean();
	}
	
	
	// Initialise plugin
	register_elgg_event_handler('init','system','crontrigger_init');
?>