قرینه از
https://github.com/matomo-org/matomo.git
synced 2025-08-22 15:07:44 +00:00

* Add new setting for enabling inactive user notifications (#23393) * Migrate 'last seen' from options table to users table (#23388) * Create scheduled task to send inactive users security notification (#23403) * Simplify enrich user and remove surplus methods * Create a language helper to run code using given user's preferred language * Update UI test screenshots --------- Co-authored-by: Nathan Gavin <nathangavin987@gmail.com>
53 خطوط
1.3 KiB
PHP
53 خطوط
1.3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
namespace Piwik\Plugins\UsersManager\TokenNotifications;
|
|
|
|
use Piwik\Date;
|
|
use Piwik\Plugins\UsersManager\Model as UserModel;
|
|
|
|
abstract class TokenNotificationProvider implements TokenNotificationProviderInterface
|
|
{
|
|
/** @var UserModel */
|
|
protected $userModel;
|
|
|
|
/** @var string */
|
|
protected $today;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->userModel = new UserModel();
|
|
$this->today = Date::factory('now')->getDatetime();
|
|
}
|
|
|
|
abstract protected function getPeriodThreshold(): ?string;
|
|
|
|
abstract protected function getTokensToNotify(string $periodThreshold): array;
|
|
|
|
abstract protected function createNotification(array $token): TokenNotification;
|
|
|
|
public function getTokenNotificationsForDispatch(): array
|
|
{
|
|
$periodThreshold = $this->getPeriodThreshold();
|
|
if (null === $periodThreshold) {
|
|
return [];
|
|
}
|
|
|
|
$tokensToNotify = $this->getTokensToNotify($periodThreshold);
|
|
|
|
$notifications = [];
|
|
|
|
foreach ($tokensToNotify as $t) {
|
|
$notifications[] = $this->createNotification($t);
|
|
}
|
|
|
|
return $notifications;
|
|
}
|
|
}
|