Merge branch 'davyrolink-201410_log-users' into develop
commit
dcd552517b
|
@ -221,18 +221,38 @@ function psm_update_conf($key, $value) {
|
||||||
* everything should have been handled when calling this function
|
* everything should have been handled when calling this function
|
||||||
*
|
*
|
||||||
* @param string $server_id
|
* @param string $server_id
|
||||||
|
* @param string $type
|
||||||
* @param string $message
|
* @param string $message
|
||||||
|
*
|
||||||
|
* @return int log_id
|
||||||
*/
|
*/
|
||||||
function psm_add_log($server_id, $type, $message, $user_id = null) {
|
function psm_add_log($server_id, $type, $message) {
|
||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
$db->save(
|
return $db->save(
|
||||||
PSM_DB_PREFIX.'log',
|
PSM_DB_PREFIX.'log',
|
||||||
array(
|
array(
|
||||||
'server_id' => $server_id,
|
'server_id' => $server_id,
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'message' => $message,
|
'message' => $message,
|
||||||
'user_id' => ($user_id === null) ? '' : $user_id,
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function just adds a user to the log_users table.
|
||||||
|
*
|
||||||
|
* @param $log_id
|
||||||
|
* @param $user_id
|
||||||
|
*/
|
||||||
|
function psm_add_log_user($log_id, $user_id) {
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
$db->save(
|
||||||
|
PSM_DB_PREFIX . 'log_users',
|
||||||
|
array(
|
||||||
|
'log_id' => $log_id,
|
||||||
|
'user_id' => $user_id,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,14 +60,6 @@ class LogController extends AbstractServerController {
|
||||||
);
|
);
|
||||||
$log_types = array('status', 'email', 'sms', 'pushover');
|
$log_types = array('status', 'email', 'sms', 'pushover');
|
||||||
|
|
||||||
// get users
|
|
||||||
$users = $this->db->select(PSM_DB_PREFIX.'users', null, array('user_id','name'));
|
|
||||||
|
|
||||||
$users_labels = array();
|
|
||||||
foreach ($users as $user) {
|
|
||||||
$users_labels[$user['user_id']] = $user['name'];
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach($log_types as $key) {
|
foreach($log_types as $key) {
|
||||||
$records = $this->getEntries($key);
|
$records = $this->getEntries($key);
|
||||||
$log_count = count($records);
|
$log_count = count($records);
|
||||||
|
@ -95,15 +87,12 @@ class LogController extends AbstractServerController {
|
||||||
$record['datetime_format'] = psm_date($record['datetime']);
|
$record['datetime_format'] = psm_date($record['datetime']);
|
||||||
|
|
||||||
// fix up user list
|
// fix up user list
|
||||||
if(!empty($record['user_id'])) {
|
$users = $this->getLogUsers($record['log_id']);
|
||||||
|
if(!empty($users)) {
|
||||||
$names = array();
|
$names = array();
|
||||||
$users = explode(',', $record['user_id']);
|
foreach($users as $user) {
|
||||||
foreach($users as $user_id) {
|
$names[] = $user['name'];
|
||||||
if(isset($users_labels[$user_id])) {
|
|
||||||
$names[] = $users_labels[$user_id];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
sort($names);
|
|
||||||
$record['users'] = implode('<br/>', $names);
|
$record['users'] = implode('<br/>', $names);
|
||||||
$record['user_list'] = implode(' • ', $names);
|
$record['user_list'] = implode(' • ', $names);
|
||||||
}
|
}
|
||||||
|
@ -135,10 +124,10 @@ class LogController extends AbstractServerController {
|
||||||
'`servers`.`ip`, '.
|
'`servers`.`ip`, '.
|
||||||
'`servers`.`port`, '.
|
'`servers`.`port`, '.
|
||||||
'`servers`.`type` AS server_type, '.
|
'`servers`.`type` AS server_type, '.
|
||||||
|
'`log`.`log_id`, '.
|
||||||
'`log`.`type`, '.
|
'`log`.`type`, '.
|
||||||
'`log`.`message`, '.
|
'`log`.`message`, '.
|
||||||
'`log`.`datetime`, '.
|
'`log`.`datetime` '.
|
||||||
'`log`.`user_id` '.
|
|
||||||
'FROM `'.PSM_DB_PREFIX.'log` AS `log` '.
|
'FROM `'.PSM_DB_PREFIX.'log` AS `log` '.
|
||||||
'JOIN `'.PSM_DB_PREFIX.'servers` AS `servers` ON (`servers`.`server_id`=`log`.`server_id`) '.
|
'JOIN `'.PSM_DB_PREFIX.'servers` AS `servers` ON (`servers`.`server_id`=`log`.`server_id`) '.
|
||||||
$sql_join .
|
$sql_join .
|
||||||
|
@ -148,4 +137,22 @@ class LogController extends AbstractServerController {
|
||||||
);
|
);
|
||||||
return $entries;
|
return $entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the user entries for a specific $log_id
|
||||||
|
*
|
||||||
|
* @param $log_id
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function getLogUsers($log_id) {
|
||||||
|
return $this->db->query(
|
||||||
|
"SELECT
|
||||||
|
u.`user_id`,
|
||||||
|
u.`name`
|
||||||
|
FROM `" . PSM_DB_PREFIX . "log_users` AS lu
|
||||||
|
LEFT JOIN `" . PSM_DB_PREFIX . "users` AS u ON lu.`user_id` = u.`user_id`
|
||||||
|
WHERE lu.`log_id` = " . (int)$log_id . "
|
||||||
|
ORDER BY u.`name` ASC"
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -206,9 +206,13 @@ class Installer {
|
||||||
`type` enum('status','email','sms','pushover') NOT NULL,
|
`type` enum('status','email','sms','pushover') NOT NULL,
|
||||||
`message` varchar(255) NOT NULL,
|
`message` varchar(255) NOT NULL,
|
||||||
`datetime` timestamp NOT NULL default CURRENT_TIMESTAMP,
|
`datetime` timestamp NOT NULL default CURRENT_TIMESTAMP,
|
||||||
`user_id` varchar(255) NOT NULL,
|
|
||||||
PRIMARY KEY (`log_id`)
|
PRIMARY KEY (`log_id`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
|
||||||
|
PSM_DB_PREFIX . 'log_users' => "CREATE TABLE `" . PSM_DB_PREFIX . "log_users` (
|
||||||
|
`log_id` int(11) UNSIGNED NOT NULL ,
|
||||||
|
`user_id` int(11) UNSIGNED NOT NULL ,
|
||||||
|
PRIMARY KEY (`log_id`, `user_id`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
|
||||||
PSM_DB_PREFIX . 'servers' => "CREATE TABLE `" . PSM_DB_PREFIX . "servers` (
|
PSM_DB_PREFIX . 'servers' => "CREATE TABLE `" . PSM_DB_PREFIX . "servers` (
|
||||||
`server_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
`server_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
`ip` varchar(500) NOT NULL,
|
`ip` varchar(500) NOT NULL,
|
||||||
|
@ -440,5 +444,29 @@ class Installer {
|
||||||
$queries[] = "ALTER TABLE `" . PSM_DB_PREFIX . "servers` ADD `website_username` varchar(255) NULL, ADD `website_password` varchar(255) NULL AFTER `website_username`;";
|
$queries[] = "ALTER TABLE `" . PSM_DB_PREFIX . "servers` ADD `website_username` varchar(255) NULL, ADD `website_password` varchar(255) NULL AFTER `website_username`;";
|
||||||
|
|
||||||
$this->execSQL($queries);
|
$this->execSQL($queries);
|
||||||
|
|
||||||
|
// Create log_users table
|
||||||
|
$this->execSQL("CREATE TABLE `" . PSM_DB_PREFIX . "log_users` (
|
||||||
|
`log_id` int(11) UNSIGNED NOT NULL ,
|
||||||
|
`user_id` int(11) UNSIGNED NOT NULL ,
|
||||||
|
PRIMARY KEY (`log_id`, `user_id`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;");
|
||||||
|
|
||||||
|
// Migrate the data
|
||||||
|
$logs = $this->db->select(PSM_DB_PREFIX . 'log', null, array('log_id', 'user_id'));
|
||||||
|
foreach ($logs as $log) {
|
||||||
|
// Validation
|
||||||
|
if (empty($log['user_id']) || trim($log['user_id']) == '') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert into new table
|
||||||
|
foreach (explode(',', $log['user_id']) as $user_id) {
|
||||||
|
psm_add_log_user($log['log_id'], $user_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Drop old user_id('s) column
|
||||||
|
$this->execSQL("ALTER TABLE `" . PSM_DB_PREFIX . "log` DROP COLUMN `user_id`;");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,8 +198,6 @@ class StatusNotifier {
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
protected function notifyByEmail($users) {
|
protected function notifyByEmail($users) {
|
||||||
$userlist = array();
|
|
||||||
|
|
||||||
// build mail object with some default values
|
// build mail object with some default values
|
||||||
$mail = psm_build_mail();
|
$mail = psm_build_mail();
|
||||||
$mail->Subject = utf8_decode(psm_parse_msg($this->status_new, 'email_subject', $this->server));
|
$mail->Subject = utf8_decode(psm_parse_msg($this->status_new, 'email_subject', $this->server));
|
||||||
|
@ -209,19 +207,21 @@ class StatusNotifier {
|
||||||
$mail->Body = utf8_decode($body);
|
$mail->Body = utf8_decode($body);
|
||||||
$mail->AltBody = str_replace('<br/>', "\n", $body);
|
$mail->AltBody = str_replace('<br/>', "\n", $body);
|
||||||
|
|
||||||
|
if(psm_get_conf('log_email')) {
|
||||||
|
$log_id = psm_add_log($this->server_id, 'email', $body);
|
||||||
|
}
|
||||||
|
|
||||||
// go through empl
|
// go through empl
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
|
if(!empty($log_id)) {
|
||||||
|
psm_add_log_user($log_id, $user['user_id']);
|
||||||
|
}
|
||||||
|
|
||||||
// we sent a seperate email to every single user.
|
// we sent a seperate email to every single user.
|
||||||
$userlist[] = $user['user_id'];
|
|
||||||
$mail->AddAddress($user['email'], $user['name']);
|
$mail->AddAddress($user['email'], $user['name']);
|
||||||
$mail->Send();
|
$mail->Send();
|
||||||
$mail->ClearAddresses();
|
$mail->ClearAddresses();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(psm_get_conf('log_email')) {
|
|
||||||
// save to log
|
|
||||||
psm_add_log($this->server_id, 'email', $body, implode(',', $userlist));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -231,9 +231,21 @@ class StatusNotifier {
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
protected function notifyByPushover($users) {
|
protected function notifyByPushover($users) {
|
||||||
$userlist = array();
|
// Remove users that have no pushover_key
|
||||||
$pushover = psm_build_pushover();
|
foreach($users as $k => $user) {
|
||||||
|
if (trim($user['pushover_key']) == '') {
|
||||||
|
unset($users[$k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validation
|
||||||
|
if (empty($users)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pushover
|
||||||
|
$message = psm_parse_msg($this->status_new, 'pushover_message', $this->server);
|
||||||
|
$pushover = psm_build_pushover();
|
||||||
if($this->status_new === true) {
|
if($this->status_new === true) {
|
||||||
$pushover->setPriority(0);
|
$pushover->setPriority(0);
|
||||||
} else {
|
} else {
|
||||||
|
@ -241,28 +253,29 @@ class StatusNotifier {
|
||||||
$pushover->setRetry(300); //Used with Priority = 2; Pushover will resend the notification every 60 seconds until the user accepts.
|
$pushover->setRetry(300); //Used with Priority = 2; Pushover will resend the notification every 60 seconds until the user accepts.
|
||||||
$pushover->setExpire(3600); //Used with Priority = 2; Pushover will resend the notification every 60 seconds for 3600 seconds. After that point, it stops sending notifications.
|
$pushover->setExpire(3600); //Used with Priority = 2; Pushover will resend the notification every 60 seconds for 3600 seconds. After that point, it stops sending notifications.
|
||||||
}
|
}
|
||||||
$message = psm_parse_msg($this->status_new, 'pushover_message', $this->server);
|
|
||||||
|
|
||||||
$pushover->setTitle(psm_parse_msg($this->status_new, 'pushover_title', $this->server));
|
$pushover->setTitle(psm_parse_msg($this->status_new, 'pushover_title', $this->server));
|
||||||
$pushover->setMessage(str_replace('<br/>', "\n", $message));
|
$pushover->setMessage(str_replace('<br/>', "\n", $message));
|
||||||
$pushover->setUrl(psm_build_url());
|
$pushover->setUrl(psm_build_url());
|
||||||
$pushover->setUrlTitle(psm_get_lang('system', 'title'));
|
$pushover->setUrlTitle(psm_get_lang('system', 'title'));
|
||||||
|
|
||||||
foreach($users as $user) {
|
// Log
|
||||||
if(trim($user['pushover_key']) == '') {
|
if(psm_get_conf('log_pushover')) {
|
||||||
continue;
|
$log_id = psm_add_log($this->server_id, 'pushover', $message);
|
||||||
}
|
}
|
||||||
$userlist[] = $user['user_id'];
|
|
||||||
|
foreach($users as $user) {
|
||||||
|
// Log
|
||||||
|
if(!empty($log_id)) {
|
||||||
|
psm_add_log_user($log_id, $user['user_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set recipient + send
|
||||||
$pushover->setUser($user['pushover_key']);
|
$pushover->setUser($user['pushover_key']);
|
||||||
if($user['pushover_device'] != '') {
|
if($user['pushover_device'] != '') {
|
||||||
$pushover->setDevice($user['pushover_device']);
|
$pushover->setDevice($user['pushover_device']);
|
||||||
}
|
}
|
||||||
$pushover->send();
|
$pushover->send();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(psm_get_conf('log_pushover')) {
|
|
||||||
psm_add_log($this->server_id, 'pushover', $message, implode(',', $userlist));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -277,24 +290,26 @@ class StatusNotifier {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we have to build an userlist for the log table..
|
$message = psm_parse_msg($this->status_new, 'sms', $this->server);
|
||||||
$userlist = array();
|
|
||||||
|
// Log
|
||||||
|
if(psm_get_conf('log_sms')) {
|
||||||
|
$log_id = psm_add_log($this->server_id, 'sms', $message);
|
||||||
|
}
|
||||||
|
|
||||||
// add all users to the recipients list
|
// add all users to the recipients list
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
$userlist[] = $user['user_id'];
|
// Log
|
||||||
$sms->addRecipients($user['mobile']);
|
if(!empty($log_id)) {
|
||||||
|
psm_add_log_user($log_id, $user['user_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$message = psm_parse_msg($this->status_new, 'sms', $this->server);
|
$sms->addRecipients($user['mobile']);
|
||||||
|
}
|
||||||
|
|
||||||
// Send sms
|
// Send sms
|
||||||
$result = $sms->sendSMS($message);
|
$result = $sms->sendSMS($message);
|
||||||
|
|
||||||
if(psm_get_conf('log_sms')) {
|
|
||||||
// save to log
|
|
||||||
psm_add_log($this->server_id, 'sms', $message, implode(',', $userlist));
|
|
||||||
}
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue