public function extend(Application $app) { PermissionModel::addPermission($this->permission); list($entity, $permission) = explode('.', $this->permission); if ($this->serialize) { $extender = new SerializeAttributes('Flarum\\Api\\Serializers\\' . ucfirst($entity) . 'Serializer', function (&$attributes, $model, $serializer) use($permission) { $attributes['can' . ucfirst($permission)] = (bool) $model->can($serializer->actor->getUser(), $permission); }); $extender->extend($app); } foreach ($this->grant as $callback) { $model = 'Flarum\\Core\\Models\\' . ucfirst($entity); $model::grantPermission($permission, $callback); } }