forked from GNUsocial/gnu-social
[PLUGINS][Oomox] getEntity added.
[CORE][Cache] exists added.
This commit is contained in:
parent
7b9d388a44
commit
7145dba8af
@ -140,14 +140,17 @@ class Oomox
|
|||||||
return ['_template' => 'oomox/oomoxSettings.html.twig', 'oomox' => $form->createView()];
|
return ['_template' => 'oomox/oomoxSettings.html.twig', 'oomox' => $form->createView()];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws ClientException
|
||||||
|
* @throws \App\Util\Exception\NoLoggedInUser
|
||||||
|
* @throws ServerException
|
||||||
|
*/
|
||||||
public function oomoxCSS() {
|
public function oomoxCSS() {
|
||||||
$user = Common::ensureLoggedIn();
|
$user = Common::ensureLoggedIn();
|
||||||
$actor_id = $user->getId();
|
|
||||||
|
|
||||||
try {
|
$oomox_table = \Plugin\Oomox\Oomox::getEntity($user);
|
||||||
$oomox_table = Cache::get("oomox-css-{$actor_id}", fn() => DB::findOneBy('oomox', ['actor_id' => $actor_id]));
|
if (is_null($oomox_table)) {
|
||||||
} catch (NotFoundException $e) {
|
throw new ClientException(_m('No custom colors defined', 404));
|
||||||
throw new ClientException(_m('No custom colours defined.'),404, $e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$content = Formatting::twigRenderFile('/oomox/root_override.css.twig', ['oomox' => $oomox_table]);
|
$content = Formatting::twigRenderFile('/oomox/root_override.css.twig', ['oomox' => $oomox_table]);
|
||||||
|
@ -31,12 +31,14 @@ use App\Core\Router\Router;
|
|||||||
use App\Entity\Actor;
|
use App\Entity\Actor;
|
||||||
use App\Entity\LocalUser;
|
use App\Entity\LocalUser;
|
||||||
use App\Util\Common;
|
use App\Util\Common;
|
||||||
|
use App\Util\Exception\ClientException;
|
||||||
use App\Util\Exception\NotFoundException;
|
use App\Util\Exception\NotFoundException;
|
||||||
use App\Util\Exception\RedirectException;
|
use App\Util\Exception\RedirectException;
|
||||||
use App\Util\Exception\ServerException;
|
use App\Util\Exception\ServerException;
|
||||||
use App\Util\Formatting;
|
use App\Util\Formatting;
|
||||||
use Plugin\Oomox\Controller as C;
|
use Plugin\Oomox\Controller as C;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use function App\Core\I18n\_m;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Profile Color plugin main class
|
* Profile Color plugin main class
|
||||||
@ -80,10 +82,20 @@ class Oomox extends Plugin
|
|||||||
public static function cacheKey(LocalUser $user) :string {
|
public static function cacheKey(LocalUser $user) :string {
|
||||||
return "oomox-css-{$user->getId()}";
|
return "oomox-css-{$user->getId()}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getEntity(LocalUser $user): ?Entity\Oomox
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return Cache::get(self::cacheKey($user), fn() => DB::findOneBy('oomox', ['actor_id' => $user->getId()]));
|
||||||
|
} catch (NotFoundException $e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function onEndShowStyles(array &$styles, string $route)
|
public function onEndShowStyles(array &$styles, string $route)
|
||||||
{
|
{
|
||||||
$user = Common::user();
|
$user = Common::user();
|
||||||
if (!is_null($user) && !is_null(Cache::get(self::cacheKey($user), fn() => null))) {
|
if (!is_null($user) && !is_null(Cache::get(self::cacheKey($user), fn () => self::getEntity($user)))) {
|
||||||
$styles[] = Router::url('oomox_css');
|
$styles[] = Router::url('oomox_css');
|
||||||
}
|
}
|
||||||
return Event::next;
|
return Event::next;
|
||||||
|
@ -151,6 +151,11 @@ abstract class Cache
|
|||||||
return self::$pools[$pool]->delete($key);
|
return self::$pools[$pool]->delete($key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function exists(string $key, string $pool = 'default'): bool
|
||||||
|
{
|
||||||
|
return self::$pools[$pool]->hasItem($key);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve a list from the cache, with a different implementation
|
* Retrieve a list from the cache, with a different implementation
|
||||||
* for redis and others, trimming to $max_count if given
|
* for redis and others, trimming to $max_count if given
|
||||||
|
Loading…
Reference in New Issue
Block a user