class OpignoMessageThreadController in Opigno messaging 3.x
The Opigno messaging controller.
@package Drupal\opigno_messaging\Controller
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, RedirectDestinationTrait, StringTranslationTrait
- class \Drupal\opigno_messaging\Controller\OpignoMessageThreadController
Expanded class hierarchy of OpignoMessageThreadController
File
- src/
Controller/ OpignoMessageThreadController.php, line 30
Namespace
Drupal\opigno_messaging\ControllerView source
class OpignoMessageThreadController extends ControllerBase {
/**
* The DB connection service.
*
* @var \Drupal\Core\Database\Connection
*/
protected $database;
/**
* The private messages storage.
*
* @var \Drupal\Core\Entity\EntityStorageInterface|null
*/
protected $messageStorage = NULL;
/**
* Opigno private messaging manager service.
*
* @var \Drupal\opigno_messaging\Services\OpignoMessageThread
*/
protected $messageService;
/**
* OpignoMessageThreadController constructor.
*
* @param \Drupal\Core\Database\Connection $database
* The DB connection service.
* @param \Drupal\Core\Form\FormBuilderInterface $form_builder
* The form builder service.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager service.
* @param \Drupal\Core\Entity\EntityFormBuilderInterface $entity_form_builder
* The entity form builder service.
* @param \Drupal\opigno_messaging\Services\OpignoMessageThread $pm_service
* The private messages manager service.
* @param \Drupal\Core\Session\AccountInterface $account
* The current user account.
*/
public function __construct(Connection $database, FormBuilderInterface $form_builder, EntityTypeManagerInterface $entity_type_manager, EntityFormBuilderInterface $entity_form_builder, OpignoMessageThread $pm_service, AccountInterface $account) {
$this->database = $database;
$this->formBuilder = $form_builder;
$this->entityFormBuilder = $entity_form_builder;
$this->messageService = $pm_service;
$this->currentUser = $account;
try {
$this->messageStorage = $entity_type_manager
->getStorage('private_message');
} catch (PluginNotFoundException|InvalidPluginDefinitionException $e) {
watchdog_exception('opigno_messaging_exception', $e);
}
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('database'), $container
->get('form_builder'), $container
->get('entity_type.manager'), $container
->get('entity.form_builder'), $container
->get('opigno_messaging.manager'), $container
->get('current_user'));
}
/**
* Prepare the AJAX response to display the thread add/edit form.
*
* @param int $tid
* The thread ID to get the form for. If 0 is given, creation form will be
* rendered.
*
* @return \Drupal\Core\Ajax\AjaxResponse
* The response object.
*
* @throws \Drupal\Core\Form\EnforcedResponseException
* @throws \Drupal\Core\Form\FormAjaxException
*/
private function prepareThreadFormResponse(int $tid = 0) : AjaxResponse {
$response = new AjaxResponse();
$form_state = new FormState();
$form_state
->addBuildInfo('args', [
$tid,
]);
$form = $this->formBuilder
->buildForm(OpignoPrivateMessageThreadForm::class, $form_state);
$build = [
'#theme' => 'opigno_messaging_modal',
'#title' => $tid ? $this
->t('Edit discussion') : $this
->t('New discussion'),
'#body' => $form,
];
$response
->addCommand(new RemoveCommand('.modal-ajax'));
$response
->addCommand(new AppendCommand('body', $build));
$response
->addCommand(new InvokeCommand('.modal-ajax', 'modal', [
'show',
]));
return $response;
}
/**
* Get the private messages thread create form.
*
* @return \Drupal\Core\Ajax\AjaxResponse
* The AJAX response object.
*
* @throws \Drupal\Core\Form\EnforcedResponseException
* @throws \Drupal\Core\Form\FormAjaxException
*/
public function getThreadForm() : AjaxResponse {
return $this
->prepareThreadFormResponse();
}
/**
* Get the private messages thread edit form.
*
* @param \Drupal\private_message\Entity\PrivateMessageThreadInterface $private_message_thread
* The thread to get the form for.
*
* @return \Drupal\Core\Ajax\AjaxResponse
* The AJAX response object.
*
* @throws \Drupal\Core\Form\EnforcedResponseException
* @throws \Drupal\Core\Form\FormAjaxException
*/
public function getEditThreadForm(PrivateMessageThreadInterface $private_message_thread) : AjaxResponse {
$tid = (int) $private_message_thread
->id();
return $this
->prepareThreadFormResponse($tid);
}
/**
* Get the delete thread confirmation form.
*
* @param \Drupal\private_message\Entity\PrivateMessageThreadInterface $private_message_thread
* The thread to be deleted.
*
* @return \Drupal\Core\Ajax\AjaxResponse
* The AJAX response object.
*/
public function getDeleteThreadForm(PrivateMessageThreadInterface $private_message_thread) : AjaxResponse {
$response = new AjaxResponse();
$build = [
'#theme' => 'opigno_messaging_confirmation',
'#body' => $this->entityFormBuilder
->getForm($private_message_thread, 'delete'),
];
$response
->addCommand(new RemoveCommand('.modal-ajax'));
$response
->addCommand(new AppendCommand('body', $build));
$response
->addCommand(new InvokeCommand('.modal-ajax', 'modal', [
'show',
]));
return $response;
}
/**
* Close the modal.
*
* @return \Drupal\Core\Ajax\AjaxResponse
* The response object.
*/
public function closeModal() : AjaxResponse {
$response = new AjaxResponse();
$response
->addCommand(new InvokeCommand('.modal', 'modal', [
'hide',
]));
return $response;
}
/**
* Create the new thread with the given user and redirect to its page.
*
* @param int $uid
* The user ID to create message thread with.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse|null
* The redirect response.
*/
public function redirectToNewThread(int $uid) : ?RedirectResponse {
$members = [
(int) $this->currentUser
->id(),
$uid,
];
$thread = $this->messageService
->getThreadForMembers($members);
if (!$thread instanceof PrivateMessageThreadInterface) {
return NULL;
}
// Prepare the url to the created thread.
$url = Url::fromRoute('entity.private_message_thread.canonical', [
'private_message_thread' => $thread
->id(),
])
->toString();
return new RedirectResponse($url);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function | Returns a redirect response object for the specified route. | |
ControllerBase:: |
protected | function | Returns the state storage service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
OpignoMessageThreadController:: |
protected | property | The DB connection service. | |
OpignoMessageThreadController:: |
protected | property | Opigno private messaging manager service. | |
OpignoMessageThreadController:: |
protected | property | The private messages storage. | |
OpignoMessageThreadController:: |
public | function | Close the modal. | |
OpignoMessageThreadController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
OpignoMessageThreadController:: |
public | function | Get the delete thread confirmation form. | |
OpignoMessageThreadController:: |
public | function | Get the private messages thread edit form. | |
OpignoMessageThreadController:: |
public | function | Get the private messages thread create form. | |
OpignoMessageThreadController:: |
private | function | Prepare the AJAX response to display the thread add/edit form. | |
OpignoMessageThreadController:: |
public | function | Create the new thread with the given user and redirect to its page. | |
OpignoMessageThreadController:: |
public | function | OpignoMessageThreadController constructor. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |