namespace BookStack\Actions;
use BookStack\Entities\Models\Entity;
+use BookStack\Facades\Theme;
use BookStack\Interfaces\Loggable;
+use BookStack\Theming\ThemeEvents;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Log;
}
$activity->save();
+
$this->setNotification($type);
$this->dispatchWebhooks($type, $detail);
+ Theme::dispatch(ThemeEvents::ACTIVITY_LOGGED, $type, $detail);
}
/**
*/
class ThemeEvents
{
+ /**
+ * Activity logged event.
+ * Runs right after an activity is logged by bookstack.
+ * These are the activities that can be seen in the audit log area of BookStack.
+ * Activity types can be seen listed in the \BookStack\Actions\ActivityType class.
+ * The provided $detail can be a string or a loggable type of model. You should check
+ * the type before making use of this parameter.
+ *
+ * @param string $type
+ * @param string|\BookStack\Interfaces\Loggable $detail
+ */
+ const ACTIVITY_LOGGED = 'activity_logged';
+
/**
* Application boot-up.
* After main services are registered.
use BookStack\Actions\DispatchWebhookJob;
use BookStack\Actions\Webhook;
use BookStack\Auth\User;
+use BookStack\Entities\Models\Book;
use BookStack\Entities\Models\Page;
use BookStack\Entities\Tools\PageContent;
use BookStack\Facades\Theme;
});
}
+ public function test_event_activity_logged()
+ {
+ $book = Book::query()->first();
+ $args = [];
+ $callback = function (...$eventArgs) use (&$args) {
+ $args = $eventArgs;
+ };
+
+ Theme::listen(ThemeEvents::ACTIVITY_LOGGED, $callback);
+ $this->asEditor()->put($book->getUrl(), ['name' => 'My cool update book!']);
+
+ $this->assertCount(2, $args);
+ $this->assertEquals(ActivityType::BOOK_UPDATE, $args[0]);
+ $this->assertTrue($args[1] instanceof Book);
+ $this->assertEquals($book->id, $args[1]->id);
+ }
+
+
public function test_add_social_driver()
{
Theme::addSocialDriver('catnet', [