‪TYPO3CMS  ‪main
SysNoteRepository.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
22 
29 {
30  public const ‪SYS_NOTE_POSITION_BOTTOM = 0;
31  public const ‪SYS_NOTE_POSITION_TOP = 1;
32 
33  public function ‪__construct(protected readonly ‪ConnectionPool $connectionPool) {}
34 
42  public function ‪findByPidAndAuthorId(int $pid, int ‪$author, int $position = null): array
43  {
44  $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_note');
45  $queryBuilder->getRestrictions()->removeAll();
46  $res = $queryBuilder
47  ->select(
48  'sys_note.*',
49  'be_users.username AS authorUsername',
50  'be_users.realName AS authorRealName',
51  'be_users.disable AS authorDisabled',
52  'be_users.deleted AS authorDeleted'
53  )
54  ->from('sys_note')
55  ->leftJoin(
56  'sys_note',
57  'be_users',
58  'be_users',
59  $queryBuilder->expr()->eq('sys_note.cruser', $queryBuilder->quoteIdentifier('be_users.uid'))
60  )
61  ->where(
62  $queryBuilder->expr()->eq('sys_note.deleted', $queryBuilder->createNamedParameter(0, ‪Connection::PARAM_INT)),
63  $queryBuilder->expr()->eq('sys_note.pid', $queryBuilder->createNamedParameter($pid, ‪Connection::PARAM_INT)),
64  $queryBuilder->expr()->or(
65  $queryBuilder->expr()->eq('sys_note.personal', $queryBuilder->createNamedParameter(0, ‪Connection::PARAM_INT)),
66  $queryBuilder->expr()->eq('sys_note.cruser', $queryBuilder->createNamedParameter(‪$author, ‪Connection::PARAM_INT))
67  )
68  )
69  ->orderBy('sorting', 'asc')
70  ->addOrderBy('crdate', 'desc');
71 
72  if ($position !== null) {
73  $res->andWhere(
74  $queryBuilder->expr()->eq('sys_note.position', $queryBuilder->createNamedParameter($position, ‪Connection::PARAM_INT))
75  );
76  }
77 
78  return $res->executeQuery()->fetchAllAssociative();
79  }
80 }
‪TYPO3\CMS\Core\Database\Connection\PARAM_INT
‪const PARAM_INT
Definition: Connection.php:52
‪TYPO3\CMS\SysNote\Domain\Repository\SysNoteRepository\SYS_NOTE_POSITION_BOTTOM
‪const SYS_NOTE_POSITION_BOTTOM
Definition: SysNoteRepository.php:30
‪TYPO3\CMS\SysNote\Domain\Repository\SysNoteRepository
Definition: SysNoteRepository.php:29
‪TYPO3\CMS\SysNote\Domain\Repository\SysNoteRepository\SYS_NOTE_POSITION_TOP
‪const SYS_NOTE_POSITION_TOP
Definition: SysNoteRepository.php:31
‪TYPO3\CMS\SysNote\Domain\Repository
Definition: SysNoteRepository.php:18
‪TYPO3\CMS\Webhooks\Message\$author
‪identifier readonly int readonly array readonly string readonly string readonly BackendUserAuthentication $author
Definition: PageModificationMessage.php:39
‪TYPO3\CMS\Core\Database\Connection
Definition: Connection.php:41
‪TYPO3\CMS\SysNote\Domain\Repository\SysNoteRepository\__construct
‪__construct(protected readonly ConnectionPool $connectionPool)
Definition: SysNoteRepository.php:33
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\SysNote\Domain\Repository\SysNoteRepository\findByPidAndAuthorId
‪findByPidAndAuthorId(int $pid, int $author, int $position=null)
Definition: SysNoteRepository.php:42