98 lines
2.5 KiB
PHP
98 lines
2.5 KiB
PHP
![]() |
<?php
|
||
|
|
||
|
/**
|
||
|
* Class helper_plugin_loglog_main
|
||
|
*/
|
||
|
class helper_plugin_loglog_main extends DokuWiki_Plugin
|
||
|
{
|
||
|
const LOGTYPE_AUTH_OK = 'auth_success';
|
||
|
const LOGTYPE_AUTH_FAIL = 'auth_failed';
|
||
|
|
||
|
/**
|
||
|
* @var helper_plugin_loglog_logging
|
||
|
*/
|
||
|
protected $logHelper;
|
||
|
|
||
|
public function __construct()
|
||
|
{
|
||
|
$this->logHelper = $this->loadHelper('loglog_logging');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Deduce the type of logged event from message field. Those types are used in a dropdown filter
|
||
|
* in admin listing of activities, as well as when generating reports to send per email.
|
||
|
*
|
||
|
* @param string $msg
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getLogTypeFromMsg($msg)
|
||
|
{
|
||
|
$filter = 'other';
|
||
|
if (in_array(
|
||
|
$msg,
|
||
|
[
|
||
|
'logged in temporarily',
|
||
|
'logged in permanently',
|
||
|
'logged off',
|
||
|
'has been automatically logged off'
|
||
|
]
|
||
|
)) {
|
||
|
$filter = 'auth_ok';
|
||
|
} elseif (in_array(
|
||
|
$msg,
|
||
|
[
|
||
|
'failed login attempt',
|
||
|
]
|
||
|
)) {
|
||
|
$filter = 'auth_error';
|
||
|
} elseif (strpos($msg, 'admin') === 0) {
|
||
|
$filter = 'admin';
|
||
|
}
|
||
|
|
||
|
return $filter;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sends emails
|
||
|
*
|
||
|
* @param string $email
|
||
|
* @param string $subject
|
||
|
* @param string $text
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function sendEmail($email, $subject, $text, $textrep = [])
|
||
|
{
|
||
|
$html = p_render('xhtml', p_get_instructions($text), $info);
|
||
|
|
||
|
$mail = new Mailer();
|
||
|
$mail->to($email);
|
||
|
$mail->subject($subject);
|
||
|
$mail->setBody($text, $textrep, null, $html);
|
||
|
return $mail->send();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns a string corresponding to $key in a given $context,
|
||
|
* empty string if nothing has been found in the string repository.
|
||
|
*
|
||
|
* @param string $context
|
||
|
* @param string $key
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getNotificationString($context, $key)
|
||
|
{
|
||
|
$stringRepo = [
|
||
|
self::LOGTYPE_AUTH_FAIL => [
|
||
|
'msgNeedle' => 'failed login attempt',
|
||
|
'emailSubjectLang' => 'email_max_failed_logins_subject'
|
||
|
],
|
||
|
self::LOGTYPE_AUTH_OK => [
|
||
|
'msgNeedle' => 'logged in',
|
||
|
'emailSubjectLang' => 'email_max_success_logins_subject'
|
||
|
],
|
||
|
];
|
||
|
|
||
|
return isset($stringRepo[$context][$key]) ? $stringRepo[$context][$key] : '';
|
||
|
}
|
||
|
}
|