1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-13 10:15:28 +02:00
This commit is contained in:
Ryan Cramer
2021-03-23 07:19:53 -04:00
parent a475430031
commit c84bf5bd46
2 changed files with 34 additions and 6 deletions

View File

@@ -594,6 +594,8 @@ class PagesType extends Wire implements \IteratorAggregate, \Countable {
/**
* Get the PHP class name used by Page objects of this type
*
* If returned class is not namespaced then `ProcessWire` namespace can be assumed.
*
* #pw-group-family
*
* @return string
@@ -604,7 +606,7 @@ class PagesType extends Wire implements \IteratorAggregate, \Countable {
if($this->pageClass && !$this->template->pageClass) {
$this->template->pageClass = $this->pageClass;
}
return $this->template->getPageClass(false);
return $this->template->getPageClass(true);
}
if($this->pageClass) return $this->pageClass;
return 'Page';

View File

@@ -35,6 +35,14 @@ class Users extends PagesType {
*/
protected $guestUser = null;
/**
* Validated custom page class cache for getPageClass method
*
* @var string
*
*/
protected $validPageClass = '';
/**
* Construct
*
@@ -134,14 +142,32 @@ class Users extends PagesType {
*
*/
public function newUser() {
$template = $this->wire('templates')->get('user');
$pageClass = $template ? $template->getPageClass(false) : 'User';
if($pageClass !== 'User' && strpos($pageClass, 'User') === false) $pageClass = 'User';
return $this->wire('pages')->newPage(array(
return $this->wire()->pages->newPage(array(
'template' => 'user',
'pageClass' => $pageClass
'pageClass' => $this->getPageClass()
));
}
/**
* Get the PHP class name used by Page objects of this type
*
* #pw-internal
*
* @return string
*
*/
public function getPageClass() {
$pageClass = parent::getPageClass();
if($pageClass !== 'User' && $pageClass !== 'ProcessWire\User' && $pageClass !== $this->validPageClass) {
if(wireInstanceOf($pageClass, 'User')) {
$this->validPageClass = $pageClass;
} else {
$this->error("Class '$pageClass' disregarded because it does not extend 'User'");
$pageClass = 'User';
}
}
return $pageClass;
}
/**
* Hook called just before a user is saved