-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathweekly-cron.php
More file actions
80 lines (64 loc) · 2.47 KB
/
weekly-cron.php
File metadata and controls
80 lines (64 loc) · 2.47 KB
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
<?php
require "ukenergy.php";
chdir("/var/www/emoncms");
require "Lib/load_emoncms.php";
$emoncmsorg = !isset($settings['domain']) || strtolower($settings['domain']) === "emoncms.org";
$path = $emoncmsorg ? "https://emoncms.org" : "http://localhost/emoncms";
require "Modules/emailreport/emailreport_registry.php";
require "Modules/emailreport/emailreport_runner.php";
require "Modules/emailreport/emailreport_model.php";
// ----------------------------------------------------
// Load UK Energy statistics for last week
// These are loaded to redis and are then accessible in the report preview as well
// ----------------------------------------------------
$date = new DateTime();
$date->setTimezone(new DateTimeZone("Europe/London"));
// Get start and end time of weeks
$date->setTimestamp(time());
$date->modify("this monday");
if ($date->getTimestamp()>time()) {
$date->modify("last monday");
}
$date->modify("-1 weeks");
$startofweek = $date->getTimestamp();
$start = $startofweek*1000;
$ukenergy = load_ukenergy_stats($start);
$redis->set("ukenergy-stats",json_encode($ukenergy));
// ----------------------------------------------------
print "Sending energy update emails\n";
$ereport = new EmailReport($mysqli,EmailReportRegistry::get_config_options());
$result = $mysqli->query("SELECT * FROM emailreport");
if (!$result) {
print "Error querying emailreport table\n";
exit(1);
}
while($row = $result->fetch_object()) {
$u = $user->get($row->userid);
if (!$u) {
print " - userid " . $row->userid . " not found, skipping\n";
continue;
}
print " - ".$u->username."\n";
$config = json_decode($row->config);
$validation = $ereport->validate_config($row->report, $config);
if (!$validation["valid"]) {
print " invalid config for report " . $row->report . ": " . $validation["message"] . "\n";
continue;
}
$config = $validation["config"];
if (!isset($config["enable"]) || (int) $config["enable"] !== 1) {
continue;
}
$generation_config = EmailReportRunner::build_generation_config($config, array(
"host"=>$path,
"apikey"=>$u->apikey_read,
"timezone"=>$u->timezone,
"userid"=>$row->userid,
"report"=>$row->report,
"ukenergy"=>$ukenergy
));
$emailreport = EmailReportRunner::generate_by_type($row->report, $generation_config);
if ($emailreport) {
EmailReportRunner::send_delivery($redis,$config["email"],$emailreport,$emoncmsorg);
}
}