add user join event #4

This commit is contained in:
ghost 2023-10-11 16:38:01 +03:00
parent 0339ee9f23
commit 28f21d09c6
5 changed files with 388 additions and 94 deletions

View file

@ -30,14 +30,28 @@ class ArticleController extends AbstractController
public function info(
Request $request,
TranslatorInterface $translator,
UserService $userService
UserService $userService,
ActivityService $activityService
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
return $this->render('default/article/info.html.twig', [
'title' => 'test'
]);
@ -57,14 +71,28 @@ class ArticleController extends AbstractController
TranslatorInterface $translator,
UserService $userService,
ArticleService $articleService,
ArticleService $torrentService
ArticleService $torrentService,
ActivityService $activityService
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isStatus())
{
// @TODO

View file

@ -11,6 +11,7 @@ use Symfony\Component\HttpFoundation\Request;
use App\Service\UserService;
use App\Service\ArticleService;
use App\Service\TorrentService;
use App\Service\ActivityService;
class SearchController extends AbstractController
{
@ -26,14 +27,28 @@ class SearchController extends AbstractController
Request $request,
UserService $userService,
ArticleService $articleService,
TorrentService $torrentService
TorrentService $torrentService,
ActivityService $activityService
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
$article = $request->query->get('article') ? (int) $request->query->get('article') : 1;
switch ($request->query->get('type'))

View file

@ -33,13 +33,27 @@ class TorrentController extends AbstractController
TranslatorInterface $translator,
UserService $userService,
TorrentService $torrentService,
ActivityService $activityService
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
// Init torrent
if (!$torrent = $torrentService->getTorrent($request->get('torrentId')))
{
@ -184,10 +198,23 @@ class TorrentController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isStatus())
{
// @TODO
@ -345,10 +372,23 @@ class TorrentController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isStatus())
{
// @TODO
@ -534,14 +574,27 @@ class TorrentController extends AbstractController
TranslatorInterface $translator,
UserService $userService,
TorrentService $torrentService,
ActivityService $activityService,
ActivityService $activityService
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
// Init torrent
if (!$torrent = $torrentService->getTorrent($request->get('torrentId')))
{
@ -622,10 +675,23 @@ class TorrentController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
// Init torrent
if (!$torrent = $torrentService->getTorrent($request->get('torrentId')))
{
@ -699,10 +765,23 @@ class TorrentController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isStatus())
{
// @TODO
@ -862,10 +941,23 @@ class TorrentController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
// Init torrent
if (!$torrent = $torrentService->getTorrent($request->get('torrentId')))
{
@ -946,10 +1038,23 @@ class TorrentController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
// Init torrent
if (!$torrent = $torrentService->getTorrent($request->get('torrentId')))
{
@ -1017,10 +1122,23 @@ class TorrentController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isStatus())
{
// @TODO
@ -1093,10 +1211,23 @@ class TorrentController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isStatus())
{
// @TODO
@ -1196,10 +1327,23 @@ class TorrentController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isStatus())
{
// @TODO

View file

@ -19,13 +19,28 @@ class UserController extends AbstractController
#[Route('/')]
public function root(
Request $request,
UserService $userService
UserService $userService,
ActivityService $activityService
): Response
{
$user = $userService->init(
$request->getClientIp()
// Init user
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
return $this->redirectToRoute(
'user_dashboard',
[
@ -64,14 +79,28 @@ class UserController extends AbstractController
)]
public function profile(
Request $request,
UserService $userService
UserService $userService,
ActivityService $activityService
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
// Process post request
if ($request->isMethod('post'))
{
@ -164,13 +193,28 @@ class UserController extends AbstractController
public function info(
Request $request,
TranslatorInterface $translator,
UserService $userService): Response
UserService $userService,
ActivityService $activityService
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isStatus())
{
// @TODO
@ -236,14 +280,27 @@ class UserController extends AbstractController
Request $request,
TranslatorInterface $translator,
UserService $userService,
ActivityService $activityService,
ActivityService $activityService
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isStatus())
{
// @TODO
@ -314,10 +371,23 @@ class UserController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isModerator())
{
// @TODO
@ -386,10 +456,23 @@ class UserController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isModerator())
{
// @TODO
@ -460,10 +543,23 @@ class UserController extends AbstractController
): Response
{
// Init user
$user = $userService->init(
$request->getClientIp()
if (!$user = $userService->findUserByAddress($request->getClientIp()))
{
$user = $userService->addUser(
$request->getClientIp(),
time(),
$this->getParameter('app.locale'),
explode('|', $this->getParameter('app.locales')),
$this->getParameter('app.theme')
);
// Add user join event
$activityService->addEventUserAdd(
$user->getId(),
time()
);
}
if (!$user->isModerator())
{
// @TODO

View file

@ -23,20 +23,18 @@ class UserService
$this->parameterBagInterface = $parameterBagInterface;
}
public function init(string $address): User
public function addUser(
string $address,
string $added,
string $locale,
array $locales,
string $theme,
bool $sensitive = true,
bool $approved = false,
bool $moderator = false,
bool $status = true
): ?User
{
// Return existing user
if ($result = $this->entityManagerInterface
->getRepository(User::class)
->findOneBy(
[
'address' => $address
]
))
{
return $result;
}
// Create new user
$user = new User();
@ -45,38 +43,39 @@ class UserService
);
$user->setAdded(
time()
$added
);
$user->setApproved(
false
$approved
);
$user->setModerator(
false
$moderator
);
$user->setStatus(
true
$status
);
$user->setLocale(
$this->parameterBagInterface->get('app.locale')
$locale
);
$user->setLocales(
explode('|', $this->parameterBagInterface->get('app.locales'))
$locales
);
$user->setTheme(
$this->parameterBagInterface->get('app.theme')
$theme
);
$user->setSensitive(
$this->parameterBagInterface->get('app.sensitive')
$sensitive
);
$this->save($user);
$this->entityManagerInterface->persist($user);
$this->entityManagerInterface->flush();
// Set initial user as approved & moderator
if (1 === $user->getId())
@ -85,7 +84,8 @@ class UserService
$user->setModerator(true);
$user->setSensitive(false);
$this->save($user);
$this->entityManagerInterface->persist($user);
$this->entityManagerInterface->flush();
}
// Return user data
@ -99,6 +99,17 @@ class UserService
->find($userId);
}
public function findUserByAddress(string $address): ?User
{
return $this->entityManagerInterface
->getRepository(User::class)
->findOneBy(
[
'address' => $address
]
);
}
public function identicon(
mixed $value,
int $size = 16,