public function run() { $settings = $this->config->get('PLUGIN_SETTINGS'); $msg = ''; if (!isset($settings['ReportMetricsEmail'])) { return false; } $free = disk_free_space(dirname(__FILE__)); $total = disk_total_space(dirname(__FILE__)); $msg .= sprintf('Disk space available: %d/%d (%.2f)%%', $free, $total, $free / $total * 100) . "\n\n"; $msg .= 'Lane status' . "\n"; foreach ($this->config->get('LANES', array()) as $lane) { $sql = new SQLManager($lane['host'], $lane['type'], $lane['op'], $lane['user'], $lane['pw']); if (!$sql->isConnected($lane['op'])) { $msg .= 'OFFLINE ' . $lane['host'] . "\n"; } else { $msg .= 'ONLINE ' . $lane['host'] . "\n"; } } $msg .= "\n" . 'Lane activity' . "\n"; $dbc = FannieDB::get($this->config->get('TRANS_DB')); $res = $dbc->query(' SELECT register_no, COUNT(*) as activity FROM dlog GROUP BY register_no ORDER by register_no'); while ($w = $dbc->fetchRow($res)) { $msg .= 'Lane #' . $w['register_no'] . ', ' . $w['activity'] . " records\n"; } $msg .= "\n"; $msg .= $this->archiveStatus($dbc); $msg .= $this->custdataStats($dbc); $msg .= $this->productStats($dbc); $dbc->selectDB($this->config->get('OP_DB')); $res = $dbc->query(' SELECT COUNT(*) AS total, COUNT(DISTINCT userHash) AS users, COUNT(DISTINCT ipHash) AS hosts FROM usageStats WHERE tdate >= \'' . date('Y-m-d') . '\''); $row = $dbc->fetchRow($res); $msg .= 'Pages served: ' . $row['total'] . "\n"; $msg .= 'Unique users: ' . $row['users'] . "\n"; $msg .= 'Unique IPs: ' . $row['hosts'] . "\n"; $res = $dbc->query(' SELECT COUNT(*) AS total, pageName FROM usageStats WHERE tdate >= \'' . date('Y-m-d') . '\' GROUP BY pageName ORDER BY COUNT(*) DESC'); $msg .= 'Most popular pages: ' . "\n"; $page_list = 0; while ($w = $dbc->fetchRow($res)) { $msg .= $w['total'] . ' ' . $w['pageName'] . "\n"; $page_list++; if ($page_list > 9) { break; } } $msg .= "\n"; $LOG_MAX = 100; $syslog_date = date('M j '); $msg .= "\nLog Entries:\n"; $logs = $this->tail(dirname(__FILE__) . '/../../../logs/fannie.log', $LOG_MAX); foreach ($logs as $l) { if (substr($l, 0, strlen($syslog_date)) != $syslog_date) { continue; } $msg .= $l . "\n"; } $msg .= "\nError Entries:\n"; $logs = array(); $logs = $this->tail(dirname(__FILE__) . '/../../../logs/debug_fannie.log', $LOG_MAX); foreach ($logs as $l) { if (substr($l, 0, strlen($syslog_date)) != $syslog_date) { continue; } $msg .= $l . "\n"; } if (class_exists('PHPMailer')) { $mail = new PHPMailer(); $mail->isSMTP(); $mail->Host = '127.0.0.1'; $mail->Port = 25; if ($settings['ReportMetricsSmtpUser'] && $settings['ReportMetricsSmtpPass']) { $mail->SMTPAuth = true; $mail->Username = $settings['ReportMetricsSmtpUser']; $mail->Password = $settings['ReportMetricsSmtpPass']; } else { $mail->SMTPAuth = false; } if ($settings['ReportMetricsSmtpEnc']) { $mail->SMTPSecure = strtolower($settings['ReportMetricsSmtpEnc']); } $mail->From = '*****@*****.**'; $mail->FromName = 'CORE Metrics Report'; $mail->addReplyTo('*****@*****.**'); $mail->addAddress($settings['ReportMetricsEmail']); $mail->isHTML(false); $mail->Subject = 'CORE Metrics'; $mail->Body = $msg; $mail->send(); } else { mail($settings['ReportMetricsEmail'], 'CORE Metrics', $msg); } }