1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-08 07:47:00 +02:00

phpdoc update and hook example in wire/core/Users.php

This commit is contained in:
Ryan Cramer
2023-07-26 14:04:47 -04:00
parent 3dc00d6c15
commit b656b254e8
2 changed files with 39 additions and 3 deletions

View File

@@ -12,6 +12,14 @@
class PageComparison { class PageComparison {
/**
* Selector properties that the matches() method ignores
*
* @var string[]
*
*/
protected $matchesIgnores = array('limit', 'start', 'sort', 'include');
/** /**
* Is this page of the given type? (status, template, etc.) * Is this page of the given type? (status, template, etc.)
* *
@@ -231,7 +239,6 @@ class PageComparison {
} }
$matches = false; $matches = false;
$ignores = array('limit', 'start', 'sort', 'include');
foreach($selectors as $selector) { foreach($selectors as $selector) {
@@ -240,7 +247,7 @@ class PageComparison {
if(is_array($property)) $property = reset($property); if(is_array($property)) $property = reset($property);
if(strpos($property, '.')) list($property, $subproperty) = explode('.', $property, 2); if(strpos($property, '.')) list($property, $subproperty) = explode('.', $property, 2);
if(in_array($property, $ignores)) continue; if(in_array($property, $this->matchesIgnores)) continue;
$matches = true; $matches = true;
$value = $page->getUnformatted($property); $value = $page->getUnformatted($property);

View File

@@ -156,10 +156,12 @@ class Users extends PagesType {
* *
*/ */
public function newUser() { public function newUser() {
return $this->wire()->pages->newPage(array( /** @var User $user */
$user = $this->wire()->pages->newPage(array(
'template' => 'user', 'template' => 'user',
'pageClass' => $this->getPageClass() 'pageClass' => $this->getPageClass()
)); ));
return $user;
} }
/** /**
@@ -214,6 +216,33 @@ class Users extends PagesType {
return $qty; return $qty;
} }
/**
* Save a User
*
* - This is the same as calling $user->save()
* - If the user is new, it will be inserted. If existing, it will be updated.
* - If you want to just save a particular field for the user, use `$user->save($fieldName)` instead.
*
* **Hook note:**
* If you want to hook this method, please hook the `Users::saveReady`, `Users::saved`, or any one of
* the `Pages::save*` hook methods instead, as this method will not capture users saved directly
* through `$pages->save($user)`.
* ~~~~~
* // Example of hooking $pages->save() on User objects only
* $wire->addHookBefore('Pages::save(<User>)', function(HookEvent $e) {
* $user = $event->arguments(0);
* });
* ~~~~~
*
* @param Page $page
* @return bool True on success
* @throws WireException
*
*/
public function ___save(Page $page) {
return parent::___save($page);
}
/** /**
* Hook called just before a user is saved * Hook called just before a user is saved
* *