GroupCoreCommentsController.php in Open Social 10.3.x
File
modules/custom/group_core_comments/src/Controller/GroupCoreCommentsController.php
View source
<?php
namespace Drupal\group_core_comments\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\StringTranslation\TranslationInterface;
use Drupal\group\Entity\GroupInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
class GroupCoreCommentsController extends ControllerBase {
protected $requestService;
public function __construct(EntityTypeManagerInterface $entity_type_manager, AccountInterface $current_user, RequestStack $request_stack, MessengerInterface $messenger, TranslationInterface $string_translation) {
$this->entityTypeManager = $entity_type_manager;
$this->currentUser = $current_user;
$this->requestService = $request_stack;
$this
->setMessenger($messenger);
$this
->setStringTranslation($string_translation);
}
public static function create(ContainerInterface $container) {
return new static($container
->get('entity_type.manager'), $container
->get('current_user'), $container
->get('request_stack'), $container
->get('messenger'), $container
->get('string_translation'));
}
public function quickJoinGroup(GroupInterface $group) {
$plugin = $group
->getGroupType()
->getContentPlugin('group_membership');
$group_content = $this
->entityTypeManager()
->getStorage('group_content')
->create([
'type' => $plugin
->getContentTypeConfigId(),
'gid' => $group
->id(),
'entity_id' => $this
->currentUser()
->id(),
]);
$result = $group_content
->save();
if ($result) {
$this
->messenger()
->addMessage($this
->t('You have joined the group and you can leave your comment now.'));
}
else {
$this
->messenger()
->addError($this
->t('Error when joining the group.'));
}
$previous_url = $this->requestService
->getCurrentRequest()->headers
->get('referer');
$request = Request::create($previous_url);
$referer_path = $request
->getRequestUri();
return new RedirectResponse($referer_path);
}
}