2025/5/14
mattoid/flarum-ext-money-history-auto
原代码
打开服务器路径:/www/wwwroot/iseekup.com/vendor/mattoid/flarum-ext-money-history-auto/src/Listeners/PostWasLikedHistory.php
<?php
namespace Mattoid\MoneyHistoryAuto\Listeners;
use Flarum\Likes\Event\PostWasLiked;
use Flarum\Locale\Translator;
use Flarum\Settings\SettingsRepositoryInterface;
use Illuminate\Contracts\Events\Dispatcher;
use Mattoid\MoneyHistory\Event\MoneyHistoryEvent;
class PostWasLikedHistory
{
private $source = "POSTWASLIKED";
private $sourceKey;
private $sourceDesc = "收到点赞获得奖励";
private $events;
private $settings;
private $autoremove;
public function __construct(Dispatcher $events, SettingsRepositoryInterface $settings, Translator $translator)
{
$this->events = $events;
$this->settings = $settings;
$this->sourceKey = "mattoid-money-history-auto.forum.post-was-liked";
$this->sourceDesc = $translator->trans("mattoid-money-history-auto.forum.post-was-liked");
$this->autoremove = (int)$this->settings->get('antoinefr-money.autoremove', 1);
}
public function handle(PostWasLiked $event) {
$money = (float)$this->settings->get('antoinefr-money.moneyforlike', 0);
app("log")->info(json_encode($event->user_id));
app("log")->info(json_encode($event->post->user));
$event->post->user->create_user_id = $event->user_id;
$this->events->dispatch(new MoneyHistoryEvent($event->post->user, $money, $this->source, $this->sourceDesc, $this->sourceKey));
}
}
修改后的
<?php
namespace Mattoid\MoneyHistoryAuto\Listeners;
use Flarum\Likes\Event\PostWasLiked;
use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventsDispatcher;
use Flarum\Settings\SettingsRepositoryInterface;
use Mattoid\MoneyHistoryAuto\Events\MoneyHistoryEvent;
class PostWasLikedHistory
{
protected $events;
protected $settings;
// 记录来源类型和描述
protected $source = 'like';
protected $sourceDesc = '帖子被点赞奖励';
protected $sourceKey = 'post_id';
public function __construct(EventsDispatcher $events, SettingsRepositoryInterface $settings)
{
$this->events = $events;
$this->settings = $settings;
}
public function subscribe(Dispatcher $events)
{
$events->listen(PostWasLiked::class, [$this, 'handle']);
}
public function handle(PostWasLiked $event)
{
$money = (float) $this->settings->get('antoinefr-money.moneyforlike', 0);
// 获取点赞者的用户 ID
$userId = $event->user->id;
// 日志调试用
app('log')->info('点赞者ID: ' . json_encode($userId));
app('log')->info('被点赞用户对象: ' . json_encode($event->post->user));
// 临时传递点赞者 ID 到被点赞用户对象上(如后续逻辑需要)
$event->post->user->create_user_id = $userId;
// 分发奖励事件
$this->events->dispatch(new MoneyHistoryEvent(
$event->post->user,
$money,
$this->source,
$this->sourceDesc,
$this->sourceKey
));
}
}
手动创建文件路径
/www/wwwroot/iseekup.com/vendor/mattoid/flarum-ext-money-history-auto/src/Events/MoneyHistoryEvent.php
<?php
namespace Mattoid\MoneyHistoryAuto\Events;
use Flarum\User\User;
class MoneyHistoryEvent
{
public $user;
public $amount;
public $description;
public function __construct(User $user, int $amount, string $description)
{
$this->user = $user;
$this->amount = $amount;
$this->description = $description;
}
}
完整解决路径:[链接登录后可见]