www.gusucode.com > Flarum开源的PHP国外手机版论坛 0.1 Beta2 源码程序 > Flarum_v0.1.beta2/extensions/subscriptions/src/Listeners/PersistSubscriptionData.php
<?php /* * This file is part of Flarum. * * (c) Toby Zerner <toby.zerner@gmail.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Flarum\Subscriptions\Listeners; use Flarum\Events\DiscussionWillBeSaved; use Flarum\Core\Exceptions\PermissionDeniedException; class PersistSubscriptionData { public function subscribe($events) { $events->listen(DiscussionWillBeSaved::class, [$this, 'whenDiscussionWillBeSaved']); } public function whenDiscussionWillBeSaved(DiscussionWillBeSaved $event) { $discussion = $event->discussion; $data = $event->data; if (isset($data['attributes']['subscription'])) { $actor = $event->actor; $subscription = $data['attributes']['subscription']; if (! $actor->exists) { throw new PermissionDeniedException; } $state = $discussion->stateFor($actor); if (! in_array($subscription, ['follow', 'ignore'])) { $subscription = null; } $state->subscription = $subscription; $state->save(); } } }