diff options
Diffstat (limited to 'plugins/SegmentEditor/SegmentEditor.php')
-rw-r--r-- | plugins/SegmentEditor/SegmentEditor.php | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/plugins/SegmentEditor/SegmentEditor.php b/plugins/SegmentEditor/SegmentEditor.php index bd4e542a1e..9f2943f880 100644 --- a/plugins/SegmentEditor/SegmentEditor.php +++ b/plugins/SegmentEditor/SegmentEditor.php @@ -8,6 +8,7 @@ */ namespace Piwik\Plugins\SegmentEditor; +use Piwik\Access; use Piwik\API\Request; use Piwik\ArchiveProcessor\PluginsArchiver; use Piwik\ArchiveProcessor\Rules; @@ -177,7 +178,7 @@ class SegmentEditor extends \Piwik\Plugin return; } - list($segment, $storedSegment, $isSegmentToPreprocess) = $segmentInfo; + [$segment, $storedSegment, $isSegmentToPreprocess] = $segmentInfo; throw new UnprocessedSegmentException($segment, $isSegmentToPreprocess, $storedSegment); } @@ -194,7 +195,7 @@ class SegmentEditor extends \Piwik\Plugin return; } - list($segment, $storedSegment, $isSegmentToPreprocess, $canBeArchived) = $segmentInfo; + [$segment, $storedSegment, $isSegmentToPreprocess, $canBeArchived] = $segmentInfo; if (!$isSegmentToPreprocess) { return; // do not display the notification for custom segments @@ -389,30 +390,33 @@ class SegmentEditor extends \Piwik\Plugin public function transferAllUserSegmentsToSuperUser($userLogin) { - $model = new Model(); - $updatedAt = Date::factory('now')->toString('Y-m-d H:i:s'); - - $superUsers = UsersManagerApi::getInstance()->getUsersHavingSuperUserAccess(); - $superUserLogin = false; - - foreach ($superUsers as $superUser) { - if ($superUser['login'] !== $userLogin) { - $superUserLogin = $superUser['login']; - break; + // We need to do that as super user, as the event triggering this method might be initiated without a session + Access::doAsSuperUser(function () use ($userLogin) { + $model = new Model(); + $updatedAt = Date::factory('now')->toString('Y-m-d H:i:s'); + + $superUsers = UsersManagerApi::getInstance()->getUsersHavingSuperUserAccess(); + $superUserLogin = false; + + foreach ($superUsers as $superUser) { + if ($superUser['login'] !== $userLogin) { + $superUserLogin = $superUser['login']; + break; + } } - } - if (!$superUserLogin) { - return; - } + if (!$superUserLogin) { + return; + } - foreach ($model->getAllSegments($userLogin) as $segment) { - if ($segment['login'] === $userLogin) { - $model->updateSegment($segment['idsegment'], array( - 'login' => $superUserLogin, - 'ts_last_edit' => $updatedAt - )); + foreach ($model->getAllSegments($userLogin) as $segment) { + if ($segment['login'] === $userLogin) { + $model->updateSegment($segment['idsegment'], array( + 'login' => $superUserLogin, + 'ts_last_edit' => $updatedAt + )); + } } - } + }); } } |