3 namespace wcf\system\page\handler
;
5 use wcf\data\page\Page
;
6 use wcf\data\person\PersonList
;
7 use wcf\data\user\online\UserOnline
;
8 use wcf\system\cache\runtime\PersonRuntimeCache
;
9 use wcf\system\database\util\PreparedStatementConditionBuilder
;
13 * Page handler implementation for person page.
15 * @author Matthias Schmidt
16 * @copyright 2001-2019 WoltLab GmbH
17 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
18 * @package WoltLabSuite\Core\System\Page\Handler
20 class PersonPageHandler
extends AbstractLookupPageHandler
implements IOnlineLocationPageHandler
22 use TOnlineLocationPageHandler
;
27 public function getLink($objectID)
29 return PersonRuntimeCache
::getInstance()->getObject($objectID)->getLink();
33 * Returns the textual description if a user is currently online viewing this page.
35 * @see IOnlineLocationPageHandler::getOnlineLocation()
37 * @param Page $page visited page
38 * @param UserOnline $user user online object with request data
41 public function getOnlineLocation(Page
$page, UserOnline
$user)
43 if ($user->pageObjectID
=== null) {
47 $person = PersonRuntimeCache
::getInstance()->getObject($user->pageObjectID
);
48 if ($person === null) {
52 return WCF
::getLanguage()->getDynamicVariable('wcf.page.onlineLocation.' . $page->identifier
, ['person' => $person]);
58 public function isValid($objectID = null)
60 return PersonRuntimeCache
::getInstance()->getObject($objectID) !== null;
66 public function lookup($searchString)
68 $conditionBuilder = new PreparedStatementConditionBuilder(false, 'OR');
69 $conditionBuilder->add('person.firstName LIKE ?', ['%' . $searchString . '%']);
70 $conditionBuilder->add('person.lastName LIKE ?', ['%' . $searchString . '%']);
72 $personList = new PersonList();
73 $personList->getConditionBuilder()->add($conditionBuilder, $conditionBuilder->getParameters());
74 $personList->readObjects();
77 foreach ($personList as $person) {
80 'link' => $person->getLink(),
81 'objectID' => $person->personID
,
82 'title' => $person->getTitle(),
90 * Prepares fetching all necessary data for the textual description if a user is currently online
93 * @see IOnlineLocationPageHandler::prepareOnlineLocation()
95 * @param Page $page visited page
96 * @param UserOnline $user user online object with request data
98 public function prepareOnlineLocation(Page
$page, UserOnline
$user)
100 if ($user->pageObjectID
!== null) {
101 PersonRuntimeCache
::getInstance()->cacheObjectID($user->pageObjectID
);