Skip to content

Commit d65246b

Browse files
Allow activated members to browse the site but not create anything new.
1 parent e2a8c00 commit d65246b

12 files changed

+81
-18
lines changed

build/forums/forums.model.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -1551,11 +1551,11 @@ public function prepareTopic($WithDetail=false) {
15511551
}
15521552
if (isset($topicinfo->WhoCanReply)) {
15531553
if ($topicinfo->WhoCanReply=="MembersOnly") {
1554-
$topicinfo->CanReply=true ;
1554+
$topicinfo->CanReply=$this->getLoggedInMember()->Status !== \App\Doctrine\MemberStatusType::ACCOUNT_ACTIVATED;
15551555
}
15561556
else if ($topicinfo->WhoCanReply=="GroupsMembersOnly") {
15571557
if ($topicinfo->IdGroup==0) {
1558-
$topicinfo->CanReply=true ;
1558+
$topicinfo->CanReply=$this->getLoggedInMember()->Status !== \App\Doctrine\MemberStatusType::ACCOUNT_ACTIVATED ;
15591559
}
15601560
else {
15611561
$topicinfo->CanReply=in_array($topicinfo->IdGroup,$this->MyGroups) ; // Set to true only if current member is member of the group

build/forums/templates/topic.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@
147147
}
148148

149149
if ($User) {
150-
if (!$topic->topicinfo->IsClosed) {
150+
if (!$topic->topicinfo->IsClosed && $topic->topicinfo->CanReply) {
151151
?>
152152
<div class="row mb-2">
153153
<div class="col-12 text-right">

src/Controller/CommentController.php

+7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\Doctrine\CommentAdminActionType;
66
use App\Doctrine\CommentQualityType;
7+
use App\Doctrine\MemberStatusType;
78
use App\Entity\Comment;
89
use App\Entity\Member;
910
use App\Entity\Preference;
@@ -135,6 +136,12 @@ public function addComment(
135136
return $this->redirectToRoute('members_profile', ['username' => $member->getUsername()]);
136137
}
137138

139+
if (MemberStatusType::ACCOUNT_ACTIVATED === $loggedInMember->getStatus()) {
140+
$this->addTranslatedFlash('notice', 'flash.comment.not.active');
141+
142+
return $this->redirectToRoute('members_profile', ['username' => $member->getUsername()]);
143+
}
144+
138145
if (!$member->isBrowsable()) {
139146
return $this->redirectToRoute('members_profile', ['username' => $member->getUsername()]);
140147
}

src/Controller/GroupController.php

+8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\Doctrine\GroupMembershipStatusType;
66
use App\Doctrine\GroupType as DoctrineGroupType;
7+
use App\Doctrine\MemberStatusType;
78
use App\Entity\Group;
89
use App\Entity\GroupMembership;
910
use App\Entity\Member;
@@ -341,6 +342,13 @@ public function createGroup(Request $request, Logger $logger)
341342
{
342343
/** @var Member $member */
343344
$member = $this->getUser();
345+
346+
if (MemberStatusType::ACCOUNT_ACTIVATED !== $member->getStatus()) {
347+
$this->addTranslatedFlash('notice', 'flash.group.not.confirmed');
348+
349+
return $this->redirectToRoute('groups_mygroups');
350+
}
351+
344352
$groupRequest = new GroupRequest();
345353
$form = $this->createForm(GroupType::class, $groupRequest, [
346354
'allowInvitationOnly' => $member->getLevelForRight(Member::ROLE_ADMIN_GROUP),

src/Controller/InvitationController.php

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Controller;
44

5+
use App\Doctrine\MemberStatusType;
56
use App\Entity\HostingRequest;
67
use App\Entity\Member;
78
use App\Entity\Message;
@@ -67,6 +68,12 @@ public function newInvitation(
6768
return $this->redirectToRoute('homepage');
6869
}
6970

71+
if (MemberStatusType::ACCOUNT_ACTIVATED === $host->getStatus()) {
72+
$this->addTranslatedFlash('notice', 'flash.conversation.not.active');
73+
74+
return $this->redirectToRoute('members_profile', ['username' => $guest->getUsername()]);
75+
}
76+
7077
if (!$guest->isBrowsable()) {
7178
$this->addTranslatedFlash('note', 'flash.member.invalid');
7279
}

src/Controller/MessageController.php

+8-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Controller;
44

5+
use App\Doctrine\MemberStatusType;
56
use App\Entity\Member;
67
use App\Entity\Message;
78
use App\Entity\Subject;
@@ -62,11 +63,16 @@ public function newMessage(Request $request, Member $receiver, AllowContactCheck
6263
return $this->redirectToRoute('members_profile', ['username' => $sender->getUsername()]);
6364
}
6465

66+
if (MemberStatusType::ACCOUNT_ACTIVATED === $sender->getStatus()) {
67+
$this->addTranslatedFlash('notice', 'flash.conversation.not.active');
68+
69+
return $this->redirectToRoute('members_profile', ['username' => $receiver->getUsername()]);
70+
}
71+
6572
if (!$receiver->isBrowsable()) {
6673
$this->addTranslatedFlash('error', 'flash.member.invalid');
67-
$referrer = $request->headers->get('referer');
6874

69-
return $this->redirect($referrer);
75+
return $this->redirectToRoute('members_profile', ['username' => $sender->getUsername()]);
7076
}
7177

7278
if (

src/Controller/NoteController.php

+11
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Controller;
44

5+
use App\Doctrine\MemberStatusType;
56
use App\Entity\Member;
67
use App\Entity\ProfileNote;
78
use App\Form\ProfileNoteFilterType;
@@ -10,6 +11,8 @@
1011
use App\Utilities\ChangeProfilePictureGlobals;
1112
use App\Utilities\ItemsPerPageTraits;
1213
use App\Utilities\ProfileSubmenu;
14+
use App\Utilities\TranslatedFlashTrait;
15+
use App\Utilities\TranslatorTrait;
1316
use DateTime;
1417
use Doctrine\ORM\EntityManagerInterface;
1518
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@@ -20,6 +23,8 @@
2023

2124
class NoteController extends AbstractController
2225
{
26+
use TranslatorTrait;
27+
use TranslatedFlashTrait;
2328
use ItemsPerPageTraits;
2429

2530
private EntityManagerInterface $entityManager;
@@ -43,6 +48,12 @@ public function add(Request $request, Member $member, ProfileSubmenu $profileSub
4348
return $this->redirectToRoute('members_profile', ['username' => $loggedInMember->getusername()]);
4449
}
4550

51+
if (MemberStatusType::ACCOUNT_ACTIVATED === $loggedInMember->getStatus()) {
52+
$this->addTranslatedFlash('notice', 'flash.note.not.active');
53+
54+
return $this->redirectToRoute('members_profile', ['username' => $loggedInMember->getUsername()]);
55+
}
56+
4657
/** @var ProfileNoteRepository $noteRepository */
4758
$noteRepository = $this->entityManager->getRepository(ProfileNote::class);
4859

src/Controller/RelationController.php

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Controller;
44

5+
use App\Doctrine\MemberStatusType;
56
use App\Entity\Member;
67
use App\Entity\ProfileNote;
78
use App\Entity\Relation;
@@ -54,6 +55,12 @@ public function add(Request $request, Member $member, Mailer $mailer): Response
5455
return $this->redirectToRoute('members_profile', ['username' => $loggedInMember->getusername()]);
5556
}
5657

58+
if (MemberStatusType::ACCOUNT_ACTIVATED === $loggedInMember->getStatus()) {
59+
$this->addTranslatedFlash('notice', 'flash.relation.not.active');
60+
61+
return $this->redirectToRoute('members_profile', ['username' => $loggedInMember->getUsername()]);
62+
}
63+
5764
$relation = $this->findRelationBetween($loggedInMember, $member);
5865
if (null !== $relation) {
5966
return $this->redirectToRoute('edit_relation', ['username' => $member->getUsername()]);

src/Controller/RequestController.php

+7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Controller;
44

55
use App\Doctrine\AccommodationType;
6+
use App\Doctrine\MemberStatusType;
67
use App\Entity\HostingRequest;
78
use App\Entity\Member;
89
use App\Entity\Message;
@@ -115,6 +116,12 @@ public function newHostingRequest(
115116
return $this->redirectToRoute('members_profile', ['username' => $guest->getUsername()]);
116117
}
117118

119+
if (MemberStatusType::ACCOUNT_ACTIVATED === $guest->getStatus()) {
120+
$this->addTranslatedFlash('notice', 'flash.conversation.not.active');
121+
122+
return $this->redirectToRoute('members_profile', ['username' => $host->getUsername()]);
123+
}
124+
118125
if (!$host->isBrowsable()) {
119126
$this->addTranslatedFlash('note', 'flash.member.invalid');
120127

src/Controller/TripController.php

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Controller;
44

5+
use App\Doctrine\MemberStatusType;
56
use App\Entity\Member;
67
use App\Entity\Subtrip;
78
use App\Entity\Trip;
@@ -90,6 +91,12 @@ public function create(Request $request): Response
9091
/** @var Member $member */
9192
$member = $this->getUser();
9293

94+
if (MemberStatusType::ACCOUNT_ACTIVATED !== $member->getStatus()) {
95+
$this->addTranslatedFlash('notice', 'flash.trip.not.confirmed');
96+
97+
return $this->redirectToRoute('trips');
98+
}
99+
93100
$trip = new Trip();
94101
$trip->setCreator($member);
95102

src/Model/GroupModel.php

+15-13
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use App\Utilities\ManagerTrait;
2020
use App\Utilities\MessageTrait;
2121
use Doctrine\DBAL\DBALException;
22+
use Doctrine\ORM\EntityRepository;
2223
use Doctrine\ORM\OptimisticLockException;
2324
use Doctrine\ORM\ORMException;
2425
use Exception;
@@ -384,13 +385,16 @@ public function declineJoin(Group $group, Member $member, Member $admin)
384385
/**
385386
* @param Member[] $admins
386387
*/
387-
public function sendAdminNotificationDeclined(Group $group, Member $member, $admins)
388+
public function sendAdminNotificationDeclined(Group $group, Member $member)
388389
{
390+
$admins = $group->getAdministrators();
389391
foreach ($admins as $admin) {
390392
$this->mailer->sendGroupEmail($admin, 'group/declined.invite', [
391393
'subject' => [
392-
'subject' => 'group.invitation.declined',
393-
'group' => $group,
394+
'translationId' => 'group.invitation.declined',
395+
'parameters' => [
396+
'group' => $group->getName(),
397+
],
394398
],
395399
'group' => $group,
396400
'invitee' => $member,
@@ -405,8 +409,10 @@ public function sendAdminNotificationAccepted(Group $group, Member $member)
405409
foreach ($admins as $admin) {
406410
$this->mailer->sendGroupEmail($admin, 'group/accepted.invite', [
407411
'subject' => [
408-
'subject' => 'group.invitation.accepted',
409-
'group' => $group,
412+
'translationId' => 'group.invitation.accepted',
413+
'parameters' => [
414+
'group' => $group->getName(),
415+
],
410416
],
411417
'group' => $group,
412418
'invitee' => $member,
@@ -442,15 +448,11 @@ public function getGroupAdministrators()
442448
return $admins;
443449
}
444450

445-
/**
446-
* @param $group
447-
* @param $member
448-
*
449-
* @return object|null
450-
*/
451-
private function getMembership($group, $member)
451+
private function getMembership($group, $member): ?GroupMembership
452452
{
453453
$membershipRepository = $this->getManager()->getRepository(GroupMembership::class);
454+
455+
/** @var GroupMembership $membership */
454456
$membership = $membershipRepository->findOneBy([
455457
'group' => $group,
456458
'member' => $member,
@@ -467,8 +469,8 @@ private function updateMembership(Group $group, Member $member, string $status)
467469
{
468470
$membershipRepository = $this->getManager()->getRepository(GroupMembership::class);
469471
$membership = $membershipRepository->findOneBy(['group' => $group, 'member' => $member]);
470-
471472
$membership->setStatus($status);
473+
472474
$this->getManager()->persist($membership);
473475
$this->getManager()->flush();
474476
}

src/Pagerfanta/TranslationAdapter.php

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public function __construct(Connection $connection, string $locale, string $term
4141
ON pi_lang.code = p.code
4242
AND pi_lang.shortcode = '{$locale}'
4343
AND (pi_lang.isArchived IS NULL OR pi_lang.isArchived = 0)
44+
ORDER BY p.created desc
4445
";
4546
if (!empty($term)) {
4647
$rawQuery .= " WHERE (p.code LIKE {$term} OR p.Sentence LIKE {$term})";

0 commit comments

Comments
 (0)