|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
|
|
namespace App\Controller;
|
|
namespace App\Controller;
|
|
|
|
|
|
|
|
|
|
+use App\Entity\Hashtag;
|
|
|
use App\Entity\Message;
|
|
use App\Entity\Message;
|
|
|
use App\Entity\User;
|
|
use App\Entity\User;
|
|
|
use Doctrine\DBAL\Types\TextType;
|
|
use Doctrine\DBAL\Types\TextType;
|
|
@@ -42,7 +43,36 @@ class HomeController extends AbstractController
|
|
|
$repository_profile = $em->getRepository(User::class);
|
|
$repository_profile = $em->getRepository(User::class);
|
|
|
$profile = $repository_profile->findOneBy(array('username' => $session->get('user')));
|
|
$profile = $repository_profile->findOneBy(array('username' => $session->get('user')));
|
|
|
$message = new Message();
|
|
$message = new Message();
|
|
|
- $message->setText($form->get('text')->getData());
|
|
|
|
|
|
|
+ $text = $form->get('text')->getData();
|
|
|
|
|
+ $mentions = array();
|
|
|
|
|
+ $hashtags = array();
|
|
|
|
|
+ preg_match_all("~@([a-zA-Z0-9_]*)~", $text, $mentions);
|
|
|
|
|
+ preg_match_all("~#([a-zA-Z0-9_]*)~", $text, $hashtags);
|
|
|
|
|
+ for($i=0; $i < sizeof($mentions[0]); $i++) {
|
|
|
|
|
+ $user = $repository_profile->findOneBy(array('username' => $mentions[1][$i]));
|
|
|
|
|
+ if ($user) {
|
|
|
|
|
+ $message->addMention($user);
|
|
|
|
|
+ $mentions[1][$i] = "<a href='/profile/" . $mentions[1][$i] . "'>" . $mentions[0][$i] . "</a>";
|
|
|
|
|
+ $mentions[0][$i] = "~" . $mentions[0][$i] . "~";
|
|
|
|
|
+ } else {
|
|
|
|
|
+ unset($mentions[1][$i]);
|
|
|
|
|
+ unset($mentions[0][$i]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ $repository_hashtag = $em->getRepository(Hashtag::class);
|
|
|
|
|
+ for($i=0; $i < sizeof($hashtags[0]); $i++) {
|
|
|
|
|
+ $hashtag = $repository_hashtag->findOneBy(array('name' => $hashtags[1][$i]));
|
|
|
|
|
+ if (!$hashtag) {
|
|
|
|
|
+ $hashtag = new Hashtag();
|
|
|
|
|
+ $hashtag->setName($hashtags[1][$i]);
|
|
|
|
|
+ }
|
|
|
|
|
+ $hashtag->addMessage($message);
|
|
|
|
|
+ $hashtags[1][$i] = "<a href='/hashtag/" . $hashtags[1][$i] . "'>" . $hashtags[0][$i] . "</a>";
|
|
|
|
|
+ $hashtags[0][$i] = "~" . $hashtags[0][$i] . "~";
|
|
|
|
|
+ $em->persist($hashtag);
|
|
|
|
|
+ }
|
|
|
|
|
+ $text = preg_replace($mentions[0], $mentions[1], $text);
|
|
|
|
|
+ $message->setText(preg_replace($hashtags[0], $hashtags[1], $text));
|
|
|
$message->setSender($profile);
|
|
$message->setSender($profile);
|
|
|
$message->setDate(new \DateTime("now"));
|
|
$message->setDate(new \DateTime("now"));
|
|
|
$em->persist($message);
|
|
$em->persist($message);
|