1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-16 11:44:42 +02:00

Add a $languages->pageNames() shortcut method for accessing the LanguageSupportPageNames module directly, when installed.

This commit is contained in:
Ryan Cramer
2021-10-01 13:26:25 -04:00
parent 45bffa6f72
commit 742e3e683d

View File

@@ -97,6 +97,12 @@ class Languages extends PagesType {
*/ */
protected $editableCache = array(); protected $editableCache = array();
/**
* @var LanguageSupportPageNames|null|false
*
*/
protected $languageSupportPageNames = null;
/** /**
* Construct * Construct
* *
@@ -107,7 +113,7 @@ class Languages extends PagesType {
*/ */
public function __construct(ProcessWire $wire, $templates = array(), $parents = array()) { public function __construct(ProcessWire $wire, $templates = array(), $parents = array()) {
parent::__construct($wire, $templates, $parents); 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)) { if(is_int($language)) {
$language = $this->get($language); $language = $this->get($language);
} else if(is_string($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"); if(!$language instanceof Language || !$language->id) throw new WireException("Unknown language");
$user = $this->wire('user'); $user = $this->wire()->user;
$this->savedLanguage2 = null; $this->savedLanguage2 = null;
if($user->language && $user->language->id) { if($user->language && $user->language->id) {
if($language->id == $user->language->id) return false; // no change necessary if($language->id == $user->language->id) return false; // no change necessary
$this->savedLanguage2 = $user->language; $this->savedLanguage2 = $user->language;
} }
$user->language = $language; $user->setQuietly('language', $language);
return true; return true;
} }
@@ -386,10 +392,10 @@ class Languages extends PagesType {
* *
*/ */
public function unsetLanguage() { public function unsetLanguage() {
$user = $this->wire('user'); $user = $this->wire()->user;
if(!$this->savedLanguage2) return false; if(!$this->savedLanguage2) return false;
if($user->language && $user->language->id == $this->savedLanguage2->id) return false; if($user->language && $user->language->id == $this->savedLanguage2->id) return false;
$user->language = $this->savedLanguage2; $user->setQuietly('language', $this->savedLanguage2);
return true; 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 * Get all language specific page-edit permissions, or individually one of them
* *