1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-12 17:54:44 +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();
/**
* @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
*