| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- namespace App\Controller;
- use App\Entity\Message;
- use App\Entity\User;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\HttpFoundation\Session\Session;
- use Symfony\Component\Routing\Annotation\Route;
- class ProfileController extends AbstractController
- {
- private function cmp_array($a, $b): int
- {
- if ($a->getDate() == $b->getDate()) {
- return 0;
- }
- return ($a->getDate() > $b->getDate()) ? -1 : 1;
- }
- #[Route('/profile/{username}', name: 'profile')]
- public function index($username): Response
- {
- // Vérifie si le profil est celui de l'utilisateur connecté.
- $sessionUser = $this->get('session')->get('user');
- $me = $sessionUser == $username ? true : false;
- // Connexion à la table User
- $em = $this->getDoctrine()->getManager();
- $repository_profile = $em->getRepository(User::class);
- // Recherche de l'utilisateur correspondant au profil de la route
- $profile = $repository_profile->findOneBy(array('username' => $username));
- if ($profile === null) {
- return new Response("Profil non existant");
- }
- // Recherche de l'utilisateur connecté à la session
- $loginuserprofile = $repository_profile->findOneBy(array('username' => $sessionUser));
- // Vérifie si l'utilisateur connecté est abonné au profil
- $follow = $loginuserprofile->getSubscriptions()->contains($profile) ? true : false;
- $subscriptionsList = $profile->getSubscriptions();
- $followersList = $profile->getFollowers();
- // Définition des variables du profil
- $username = $profile->getUsername();
- $isPrivate = $profile->getIsPrivate();
- $description = $profile->getDescription();
- $privateNotAllowed = false;
- if (!$me and $isPrivate and !$follow) {
- $privateNotAllowed = true;
- }
- // Récupération des messages de l'utilisateur
- $sub_msg = array();
- $rt = $profile->getRetweets();
- foreach ($rt as $r) {
- $og_message = $r->getOgMessage();
- $rt_message = new Message();
- $rt_message->setText($og_message->getText());
- $rt_message->setSender($og_message->getSender());
- $rt_message->setId($og_message->getId());
- $rt_message->setDate($r->getRtDate());
- array_push($sub_msg, $rt_message);
- }
- foreach ($profile->getMessages() as $msg_u) {
- array_push($sub_msg, $msg_u);
- }
- usort($sub_msg, array($this, "cmp_array"));
- return $this->render('profile/index.html.twig', [
- 'controller_name' => 'ProfileController',
- 'privateNotAllowed' => $privateNotAllowed,
- 'profileusername' => $username,
- 'isPrivate' => $isPrivate,
- 'description' => $description,
- 'me' => $me,
- 'username' => $sessionUser,
- 'follow' => $follow,
- 'subscriptionsList' => $subscriptionsList,
- 'followersList' => $followersList,
- 'messages' => $sub_msg,
- ]);
- }
- }
|