marufsharia/laravel-streams-timeline

Laravel 包,帮助您在应用程序中处理动态、帖子、状态、活动流时间线

dev-main 2022-05-18 18:42 UTC

This package is auto-updated.

Last update: 2024-09-18 23:56:48 UTC


README

Build Status

Laravel 活动流

目录

点击展开

简介

此包允许您在 Laravel 应用程序中拥有活动流。

安装

使用 composer 安装

composer require Marufsharia/laravel-activity-streams

composer 安装完成后,您可以为门面添加别名。打开 config/app.php,并进行以下更新

  1. aliases 数组中添加一个新条目

    'ActivityStreams' => Marufsharia\ActivityStreams\ActivityStreamsFacade::class,
  2. 通过运行以下命令将配置文件发布到您的应用 config 目录

    php artisan vendor:publish --tag="activity.streams.config"
    
  3. 通过运行以下命令将迁移发布到您的应用 migrations 目录

    php artisan vendor:publish --tag="activity.streams.migrations"
    
  4. 运行迁移

    php artisan migrate
    

用法

门面

每次您在代码中使用 ActivityStreams 门面时,请记住在命名空间导入中添加以下行

use ActivityStreams;

赋予模型拥有动态的能力

使用 HasFeed 特性允许模型拥有动态。

<?php

use Illuminate\Database\Eloquent\Model;
use Marufsharia\ActivityStreams\Traits\HasFeed;

class User extends Model
{
    use HasFeed;
}

创建模型动态

添加 HasFeed 特性后,您可以按以下方式为模型创建动态

$feed = $user->createFeed();

按需动态

有时您可能想要创建一个不属于模型的动态。例如,您想要将活动添加到应用程序的热门动态中

在您选择的命名空间下创建一个代表热门动态的类

<?php

namespace App;

class Trending
{
    // Optional implementation
}

然后运行随包提供的 artisan 命令

php artisan streams:make:feed 'App\Trending' 'some-unique-id'

some-unique-id$table->unique(['some-unique-id', 'App\Trending']); 的唯一性相关

创建活动

一个活动的示例可能如下所示:John 在 2018Album 中喜欢了一张照片

use ActivityStreams;
use Marufsharia\ActivityStreams\ValueObjects\Verbs;

$activity = ActivityStreams::setActor($actor)
    ->setVerb(Verbs::VERB_LIKE)
    ->setObject($object)
    ->setTarget($target)
    ->createActivity();

参与者

有效的参与者

您可以将 Eloquent 模型作为参与者传递,或者传递实现 Marufsharia\ActivityStreams\Contracts\ActivityActor 接口的任何对象

目标

有效的目标

您可以将 Eloquent 模型作为目标传递,或者传递实现 Marufsharia\ActivityStreams\Contracts\ActivityTarget 接口的任何对象

对象

有效的对象

您可以将 Eloquent 模型作为对象传递,或者传递实现 Marufsharia\ActivityStreams\Contracts\ActivityObject 接口的任何对象

获取支持的动词

$verbs = ActivityStreams::verbs();

向动态中添加活动

ActivityStreams::addActivityToFeed($feed, $activity);

向动态中添加多个活动

将活动的 Collection 添加到 Feed

ActivityStreams::addActivityToFeed($feed, $activities);

将活动添加到多个 Feed

Activity 添加到 Collection 动态

ActivityStreams::addActivityToMultipleFeeds($feeds, $activity);

事件

您可以利用以下事件并在应用程序中执行操作。例如,您可以为 ActivityCreated 事件监听,并根据您的业务逻辑将创建的事件添加到 Feed 或多个 Feed

ActivityCreated

Marufsharia\ActivityStreams\Models\Activity\ActivityCreated

ActivityDeleted

Marufsharia\ActivityStreams\Models\Activity\ActivityDeleted

FeedCreated

Marufsharia\ActivityStreams\Models\Activity\FeedCreated

FeedDeleted

Marufsharia\ActivityStreams\Models\Activity\FeedDeleted

配置

常见问题解答

有关活动流规范的更多信息,请参阅此处