From 34418dadccd5ff3e751f233eed447234c244b1f5 Mon Sep 17 00:00:00 2001 From: Ryan Thompson Date: Thu, 16 Jun 2016 15:47:35 -0500 Subject: [PATCH] Fix issue where the wrong presenter was being passed back --- src/Preference/Command/GetPreference.php | 45 ++++++++++++++++++++++++ src/PreferencesModulePlugin.php | 16 +++++++++ 2 files changed, 61 insertions(+) create mode 100644 src/Preference/Command/GetPreference.php diff --git a/src/Preference/Command/GetPreference.php b/src/Preference/Command/GetPreference.php new file mode 100644 index 0000000..6db218f --- /dev/null +++ b/src/Preference/Command/GetPreference.php @@ -0,0 +1,45 @@ + + * @author Ryan Thompson + * @package Anomaly\PreferencesModule\Preference\Command + */ +class GetPreference implements SelfHandling +{ + + /** + * The preference key. + * + * @var string + */ + protected $key; + + /** + * Create a new GetPreference instance. + * + * @param $key + * @param null $default + */ + public function __construct($key) + { + $this->key = $key; + } + + /** + * Handle the command. + * + * @param PreferenceRepositoryInterface $preferences + * @return mixed + */ + public function handle(PreferenceRepositoryInterface $preferences) + { + return $preferences->get($this->key); + } +} diff --git a/src/PreferencesModulePlugin.php b/src/PreferencesModulePlugin.php index 476abb7..b3a6a1e 100644 --- a/src/PreferencesModulePlugin.php +++ b/src/PreferencesModulePlugin.php @@ -1,7 +1,11 @@ dispatch(new GetPreferenceValue($key)); } + ), + new \Twig_SimpleFunction( + 'preference', + function ($key) { + + /* @var PreferenceInterface $preference */ + if (!$preference = $this->dispatch(new GetPreference($key))) { + return null; + } + + return (new Decorator())->decorate($this->dispatch(new GetValueFieldType($preference))); + } ) ]; }