Added category column to activities table

This commit is contained in:
2023-07-18 13:25:04 +01:00
parent d69a89a761
commit cbfa4adfe3
4 changed files with 103 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ use Monolog\Logger;
use Psr\Container\ContainerInterface;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use UserFrosting\Sprinkle\Core\Log\MixedFormatter;
use UserFrosting\Sprinkle\UFTweaks\Twig\HasRoleExtension;
@@ -32,6 +33,19 @@ class ServicesProvider
*/
public function register(ContainerInterface $container)
{
/*
* Extend the 'classMapper' service to register sprunje classes.
*
* Mappings added: 'activity_sprunje'
*
* @return \UserFrosting\Sprinkle\Core\Util\ClassMapper
*/
$container->extend('classMapper', function ($classMapper, $c) {
$classMapper->setClassMapping('activity_sprunje', 'UserFrosting\Sprinkle\UFTweaks\Sprunje\ActivitySprunje');
return $classMapper;
});
/*
* Returns a callback that handles setting the `UF-Redirect` header after a successful login.
*

View File

@@ -0,0 +1,77 @@
<?php
/*
* AVSDev UF Tweaks (https://avsdev.uk)
*
* @link https://git.avsdev.uk/avsdev/sprinkle-uf-tweaks
* @license https://git.avsdev.uk/avsdev/sprinkle-uf-tweaks/blob/master/LICENSE.md (LGPL-3.0 License)
*/
namespace UserFrosting\Sprinkle\UFTweaks\Sprunje;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Schema\Builder;
use UserFrosting\Sprinkle\admin\Sprunje\ActivitySprunje as UFActivitySprunje;
/**
* ActivitySprunje.
*
* Implements Sprunje for the activities API.
*
* @author Alex Weissman (https://alexanderweissman.com)
*/
class ActivitySprunje extends UFActivitySprunje
{
protected $sortable = [
'occurred_at',
'user',
'category',
'description',
];
protected $filterable = [
'occurred_at',
'user',
'category',
'description',
];
/**
* Filter LIKE the category.
*
* @param Builder $query
* @param mixed $value
*
* @return self
*/
protected function filterCategory($query, $value)
{
// Split value on separator for OR queries
$values = explode($this->orSeparator, $value);
$query->where(function ($query) use ($values) {
foreach ($values as $value) {
$query->orLike(
DB::raw('lower(activities.type)'),
str_replace(" ", "_", strtolower($value))
);
}
});
return $this;
}
/**
* Sort based on category.
*
* @param Builder $query
* @param string $direction
*
* @return self
*/
protected function sortCategory($query, $direction)
{
$query->orderBy('activities.type', $direction);
return $this;
}
}