diff --git a/nur_src/v/base/AbstractPageContainer.php b/nur_src/v/base/AbstractPageContainer.php index 260e607..db7eb81 100644 --- a/nur_src/v/base/AbstractPageContainer.php +++ b/nur_src/v/base/AbstractPageContainer.php @@ -269,23 +269,34 @@ abstract class AbstractPageContainer implements IPageContainer { $this->phase = self::SETUP_PHASE; if (self::ensure_setupc($page, false, $output)) { + if ($output === false) { + # désactiver la gestion des actions si le retour est false (retour en + # l'état) + $page->dispatchAction(false); + } $this->overrideSetup($page); $page->afterSetup(); } $this->phase = self::PRINT_PHASE; if ($output instanceof IComponent) { + # composant autonome self::ensure_phasec($output); if ($this->beforePrint($output)) { $this->haveOutput = true; co::_print([$output]); } } elseif (is_callable($output)) { + # générateur de contenu if ($this->beforePrint(null)) { $this->haveOutput = true; $output(); } + } elseif ($output === false) { + # retour en l'état (contenu déjà géré dans setup()) + $this->haveOutput = false; } elseif ($output !== null) { + # contenu json ou texte if ($this->beforePrint(null)) { $this->haveOutput = true; if (is_iterable($output)) { @@ -299,10 +310,11 @@ abstract class AbstractPageContainer implements IPageContainer { } echo "]"; } else { - co::_print([strval($output)]); + co::_write([strval($output)]); } } } else { + # afficher la page normalement $this->overridePrint($page); } } catch (Throwable $e) { diff --git a/src/cache/CacheDataChannel.php b/src/cache/CacheDataChannel.php index 768b6d0..af885d6 100644 --- a/src/cache/CacheDataChannel.php +++ b/src/cache/CacheDataChannel.php @@ -4,7 +4,7 @@ namespace nulib\cache; use Closure; use IteratorAggregate; use nulib\cache\CacheChannel; -use nulib\cache\storage_cache; +use nulib\cache\cache; use nulib\cl; use nulib\db\CapacitorChannel; use Traversable; @@ -40,7 +40,7 @@ class CacheDataChannel extends CapacitorChannel implements IteratorAggregate { } function getIterator(): Traversable { - $cm = storage_cache::get(); + $cm = cache::get(); if ($cm->shouldUpdate($this->cacheIds)) { $this->capacitor->reset(); foreach (($this->builder)() as $key => $row) { diff --git a/src/cache/storage_cache.php b/src/cache/cache.php similarity index 80% rename from src/cache/storage_cache.php rename to src/cache/cache.php index 1fc6814..46f93b0 100644 --- a/src/cache/storage_cache.php +++ b/src/cache/cache.php @@ -1,13 +1,20 @@ getVarfile("cache.db"); + } + protected static ?CapacitorStorage $storage = null; static function set_storage(CapacitorStorage $storage): CapacitorStorage { @@ -15,7 +22,7 @@ class storage_cache { } protected static function get_storage(): CapacitorStorage { - return self::$storage ??= new SqliteStorage(""); + return self::$storage ??= new SqliteStorage(self::dbfile()); } protected static ?CacheChannel $channel = null;