Skip to content

Commit 960ffc7

Browse files
Format conversations before sending notifications.
1 parent 4ba0192 commit 960ffc7

File tree

7 files changed

+70
-3
lines changed

7 files changed

+70
-3
lines changed

src/Controller/Admin/CheckerController.php

+21
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class CheckerController extends AbstractController
2222
{
2323
private const MESSAGES_REPORTED = 1;
2424
private const MESSAGES_PROCESSED = 2;
25+
private const MESSAGES_BLOCK_WORDS = 3;
2526

2627
private CheckerModel $checkerModel;
2728

@@ -42,6 +43,18 @@ public function showReportedMessages(Request $request)
4243
return $this->handleMessages($request, self::MESSAGES_REPORTED);
4344
}
4445

46+
/**
47+
* @Route("/admin/spam/messages/blocked", name="admin_spam_messages_block_words")
48+
*
49+
* @throws AccessDeniedException
50+
*
51+
* @return Response
52+
*/
53+
public function showBlockWordMessages(Request $request)
54+
{
55+
return $this->handleMessages($request, self::MESSAGES_BLOCK_WORDS);
56+
}
57+
4558
/**
4659
* @Route("/admin/spam/messages/processed", name="admin_spam_messages_processed")
4760
*
@@ -165,6 +178,10 @@ private function getSubmenuItems()
165178
'key' => 'reported.messages',
166179
'url' => $this->generateUrl('admin_spam_messages'),
167180
],
181+
'blockwords' => [
182+
'key' => 'block.words.messages',
183+
'url' => $this->generateUrl('admin_spam_messages_block_words'),
184+
],
168185
'processed_messages' => [
169186
'key' => 'reported.messages.processed',
170187
'url' => $this->generateUrl('admin_spam_messages_processed'),
@@ -201,6 +218,10 @@ private function handleMessages(Request $request, int $type)
201218
$active = 'processed_messages';
202219
$messages = $this->checkerModel->getProcessedReportedMessages($page, $limit);
203220
break;
221+
case self::MESSAGES_BLOCK_WORDS:
222+
$active = 'block.words.messages';
223+
$messages = $this->checkerModel->getBlockWordsMessages($page, $limit);
224+
break;
204225
default:
205226
throw new InvalidArgumentException();
206227
}

src/Controller/MessageController.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ private function addMessageAndSendNotification(
186186
$em = $this->getDoctrine()->getManager();
187187
$message = new Message();
188188
$message->setMessage($body);
189+
$message->setStatus('Sent');
189190
if (null === $parent) {
190191
$subject = new Subject();
191192
$subject->setSubject($subjectText);
@@ -204,11 +205,10 @@ private function addMessageAndSendNotification(
204205
$message->setParent($parent);
205206
$message->setSender($sender);
206207
$message->setReceiver($receiver);
207-
$message->setStatus('Sent');
208208
$em->persist($message);
209209
$em->flush();
210210

211-
if (!strpos($message->getSpamInfo(), SpamInfoType::SPAM_BLOCKED_WORD)) {
211+
if (strpos($message->getSpamInfo(), SpamInfoType::SPAM_BLOCKED_WORD) === false) {
212212
$this->mailer->sendMessageNotificationEmail($sender, $receiver, 'message', [
213213
'message' => $message,
214214
'subject' => $subjectText,

src/Controller/RequestController.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ private function sendInitialRequestNotification(Member $host, Member $guest, Mes
327327
{
328328
$subject = $request->getSubject()->getSubject();
329329

330-
if (!strpos($request->getSpamInfo(), SpamInfoType::SPAM_BLOCKED_WORD)) {
330+
if (strpos($request->getSpamInfo(), SpamInfoType::SPAM_BLOCKED_WORD) === false) {
331331
$this->sendRequestNotification($guest, $host, $host, $request, $subject, 'request', false);
332332
}
333333
}

src/Model/Admin/CheckerModel.php

+8
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,12 @@ public function getProcessedReportedMessages(int $page = 1, int $limit = 10): Pa
7474

7575
return $repository->findProcessedReportedMessages($page, $limit);
7676
}
77+
78+
public function getBlockWordsMessages(int $page = 1, int $limit = 10): Pagerfanta
79+
{
80+
/** @var MessageRepository $repository */
81+
$repository = $this->entityManager->getRepository(Message::class);
82+
83+
return $repository->findBlockWordsMessages($page, $limit);
84+
}
7785
}

src/Model/ConversationModel.php

+1
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ public function formatConversation(Message $message): Message
295295

296296
if ($found != 0) {
297297
$message->setSpamInfo(SpamInfoType::SPAM_BLOCKED_WORD);
298+
$message->setStatus(MessageStatusType::CHECK);
298299
$message->setMessage($messageText);
299300
}
300301

src/Repository/MessageRepository.php

+31
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,23 @@ public function findProcessedReportedMessages($page = 1, $items = 10): Pagerfant
120120
return $paginator;
121121
}
122122

123+
/**
124+
* Returns a Pagerfanta object encapsulating the matching paginated processed reported messages.
125+
*
126+
* @param mixed $page
127+
* @param mixed $items
128+
*/
129+
public function findBlockWordsMessages($page = 1, $items = 10): Pagerfanta
130+
{
131+
$queryBuilder = $this->queryBlockWordsMessages();
132+
$adapter = new QueryAdapter($queryBuilder);
133+
$paginator = new Pagerfanta($adapter);
134+
$paginator->setMaxPerPage($items);
135+
$paginator->setCurrentPage($page);
136+
137+
return $paginator;
138+
}
139+
123140
public function getThread(Message $message)
124141
{
125142
$qb = $this->createNativeNamedQuery('get_thread')
@@ -333,6 +350,20 @@ private function queryProcessedReportedMessages(): QueryBuilder
333350
return $qb;
334351
}
335352

353+
private function queryBlockWordsMessages(): QueryBuilder
354+
{
355+
$qb = $this->createQueryBuilder('m');
356+
$qb
357+
->where('m.status = :status')
358+
->setParameter('status', MessageStatusType::CHECK)
359+
->andWhere('m.spamInfo LIKE :spamInfo')
360+
->setParameter('spamInfo', '%' . SpamInfoType::SPAM_BLOCKED_WORD . '%')
361+
->orderBy('m.created', 'DESC')
362+
;
363+
364+
return $qb;
365+
}
366+
336367
private function queryAllMessagesBetween(
337368
Member $loggedInUser,
338369
Member $member,

translations/missing/checker.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
block.words.messages:
2+
- 'Blocked Notifications'
3+
- 'Menu item in Checker Volunteer tool. (Do not translate)'
4+
- 'messages+intl-icu'
5+
- 'no'
6+

0 commit comments

Comments
 (0)