From 742e3e683db0e37f19d5d0695621267604eadc32 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Fri, 1 Oct 2021 13:26:25 -0400 Subject: [PATCH] Add a $languages->pageNames() shortcut method for accessing the LanguageSupportPageNames module directly, when installed. --- wire/modules/LanguageSupport/Languages.php | 36 ++++++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/wire/modules/LanguageSupport/Languages.php b/wire/modules/LanguageSupport/Languages.php index 5c2d1e99..a34745b1 100644 --- a/wire/modules/LanguageSupport/Languages.php +++ b/wire/modules/LanguageSupport/Languages.php @@ -97,6 +97,12 @@ class Languages extends PagesType { */ protected $editableCache = array(); + /** + * @var LanguageSupportPageNames|null|false + * + */ + protected $languageSupportPageNames = null; + /** * Construct * @@ -107,7 +113,7 @@ class Languages extends PagesType { */ public function __construct(ProcessWire $wire, $templates = array(), $parents = array()) { parent::__construct($wire, $templates, $parents); - $this->wire('database')->addHookAfter('unknownColumnError', $this, 'hookUnknownColumnError'); + $this->wire()->database->addHookAfter('unknownColumnError', $this, 'hookUnknownColumnError'); } /** @@ -347,16 +353,16 @@ class Languages extends PagesType { if(is_int($language)) { $language = $this->get($language); } else if(is_string($language)) { - $language = $this->get($this->wire('sanitizer')->pageNameUTF8($language)); + $language = $this->get($this->wire()->sanitizer->pageNameUTF8($language)); } if(!$language instanceof Language || !$language->id) throw new WireException("Unknown language"); - $user = $this->wire('user'); + $user = $this->wire()->user; $this->savedLanguage2 = null; if($user->language && $user->language->id) { if($language->id == $user->language->id) return false; // no change necessary $this->savedLanguage2 = $user->language; } - $user->language = $language; + $user->setQuietly('language', $language); return true; } @@ -386,10 +392,10 @@ class Languages extends PagesType { * */ public function unsetLanguage() { - $user = $this->wire('user'); + $user = $this->wire()->user; if(!$this->savedLanguage2) return false; if($user->language && $user->language->id == $this->savedLanguage2->id) return false; - $user->language = $this->savedLanguage2; + $user->setQuietly('language', $this->savedLanguage2); return true; } @@ -604,6 +610,24 @@ class Languages extends PagesType { } } + /** + * Get LanguageSupportPageNames module if installed, false if not + * + * @return LanguageSupportPageNames|bool + * + */ + public function pageNames() { + if($this->languageSupportPageNames === null) { + $modules = $this->wire()->modules; + if($modules->isInstalled('LanguageSupportPageNames')) { + $this->languageSupportPageNames = $modules->getModule('LanguageSupportPageNames'); + } else { + $this->languageSupportPageNames = false; + } + } + return $this->languageSupportPageNames; + } + /** * Get all language specific page-edit permissions, or individually one of them *