Emails
3 years ago
Repository
3 years ago
Sql
3 years ago
Validators
4 years ago
config
5 years ago
images
6 years ago
lang
4 years ago
stylesheets
3 years ago
templates
3 years ago
vue
3 years ago
API.php
3 years ago
Controller.php
3 years ago
LastSeenTimeLogger.php
5 years ago
Menu.php
5 years ago
Model.php
3 years ago
NewsletterSignup.php
4 years ago
Tasks.php
4 years ago
UserAccessFilter.php
4 years ago
UserPreferences.php
5 years ago
UserUpdater.php
5 years ago
UsersManager.php
3 years ago
Tasks.php
75 lines
| 1 | <?php |
| 2 | |
| 3 | /** |
| 4 | * Matomo - free/libre analytics platform |
| 5 | * |
| 6 | * @link https://matomo.org |
| 7 | * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later |
| 8 | */ |
| 9 | |
| 10 | namespace Piwik\Plugins\UsersManager; |
| 11 | |
| 12 | use Piwik\Access; |
| 13 | use Piwik\Date; |
| 14 | |
| 15 | class Tasks extends \Piwik\Plugin\Tasks |
| 16 | { |
| 17 | /** |
| 18 | * @var Model |
| 19 | */ |
| 20 | private $usersModel; |
| 21 | |
| 22 | /** |
| 23 | * @param API |
| 24 | */ |
| 25 | private $usersManagerApi; |
| 26 | |
| 27 | public function __construct(Model $usersModel, API $usersManagerApi) |
| 28 | { |
| 29 | $this->usersModel = $usersModel; |
| 30 | $this->usersManagerApi = $usersManagerApi; |
| 31 | } |
| 32 | |
| 33 | public function schedule() |
| 34 | { |
| 35 | $this->daily("cleanupExpiredTokens"); |
| 36 | $this->daily("setUserDefaultReportPreference"); |
| 37 | $this->daily("cleanUpExpiredInvites"); |
| 38 | } |
| 39 | |
| 40 | public function cleanupExpiredTokens() |
| 41 | { |
| 42 | $this->usersModel->deleteExpiredTokens(Date::now()->getDatetime()); |
| 43 | } |
| 44 | |
| 45 | public function cleanUpExpiredInvites() |
| 46 | { |
| 47 | // Expired invites will be removed after 3 days, so there's a chance to resend an invite before it's removed. |
| 48 | |
| 49 | $expiredInvites = $this->usersModel->getExpiredInvites(Date::now()->subDay(3)->getDatetime()); |
| 50 | |
| 51 | foreach ($expiredInvites as $expiredInvite) { |
| 52 | try { |
| 53 | $this->usersModel->deleteUser($expiredInvite['login']); |
| 54 | } catch (\Exception $e) { |
| 55 | // ignore possible errors thrown during delete user event |
| 56 | } |
| 57 | } |
| 58 | } |
| 59 | |
| 60 | public function setUserDefaultReportPreference() |
| 61 | { |
| 62 | // We initialize the default report user preference for each user (if it hasn't been inited before) for performance, |
| 63 | // doing this lets us avoid loading all siteIds (which can be 50k or more) when this preference is requested. |
| 64 | // getting the user preference can be called quite often when generating links etc (to get defaultWebsiteId). |
| 65 | $usersModel = $this->usersModel; |
| 66 | $usersManagerApi = $this->usersManagerApi; |
| 67 | Access::getInstance()->doAsSuperUser(function () use ($usersModel, $usersManagerApi) { |
| 68 | $allUsers = $usersModel->getUsers([]); |
| 69 | foreach ($allUsers as $user) { |
| 70 | $usersManagerApi->initUserPreferenceWithDefault($user['login'], API::PREFERENCE_DEFAULT_REPORT); |
| 71 | } |
| 72 | }); |
| 73 | } |
| 74 | } |
| 75 |