class VotingApiController in Vote Up/Down 8
Controller for voting.
Provides logical methods to the route endpoints. @todo Fix docs. @todo Fix coding standards.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\vud\Controller\VotingApiController
Expanded class hierarchy of VotingApiController
File
- src/
Controller/ VotingApiController.php, line 21
Namespace
Drupal\vud\ControllerView source
class VotingApiController extends ControllerBase {
/**
* Cast a vote.
*
* @param $entity_id
* EntityId of the referenced entity
* @param $entity_type_id
* EntityTypeId of the referenced entity
* @param $vote_value
* Value of vote to be stored.
* @param $widget_name
* Widget name.
* @param string $js
* Ajax is enabled? Not working now, core bug?
*
* @return \Drupal\Core\Ajax\AjaxResponse|\Symfony\Component\HttpFoundation\RedirectResponse
*/
public function vote($entity_type_id, $entity_id, $vote_value, $widget_name, $js) {
$entity = $this
->entityTypeManager()
->getStorage($entity_type_id)
->load($entity_id);
$widget = \Drupal::service('plugin.manager.vud')
->createInstance($widget_name);
$vote_storage = $this
->entityTypeManager()
->getStorage('vote');
$voteTypeId = \Drupal::config('vud.settings')
->get('tag', 'vote');
$voteType = VoteType::load($voteTypeId);
$vote_storage
->deleteUserVotes($this
->currentUser()
->id(), $voteTypeId, $entity_type_id, $entity_id);
$this
->entityTypeManager()
->getViewBuilder($entity_type_id)
->resetCache([
$entity,
]);
$vote = Vote::create([
'type' => $voteTypeId,
]);
$vote
->setVotedEntityId($entity_id);
$vote
->setVotedEntityType($entity_type_id);
$vote
->setValueType($voteType
->getValueType());
$vote
->setValue($vote_value);
$vote
->save();
$this
->entityTypeManager()
->getViewBuilder($entity_type_id)
->resetCache([
$entity,
]);
$criteria = [
'entity_type' => $entity_type_id,
'entity_id' => $entity_id,
'value_type' => $voteTypeId,
];
if ($js == 'ajax') {
$response = new AjaxResponse();
$widget_element = $widget
->build($entity);
$response
->addCommand(new ReplaceCommand("#vud-widget-{$entity_type_id}-{$entity_id}", $widget_element));
return $response;
}
return new RedirectResponse($entity
->toUrl()
->toString());
}
/**
* Reset a vote.
*
* @param $entity_id
* EntityId of the referenced entity
* @param $entity_type_id
* EntityTypeId of the referenced entity
* @param $widget_name
* Widget name.
* @param string $js
* Ajax is enabled? Not working now, core bug?
*
* @return \Drupal\Core\Ajax\AjaxResponse|\Symfony\Component\HttpFoundation\RedirectResponse
*/
public function resetVote($entity_type_id, $entity_id, $widget_name, $js) {
$entity = $this
->entityTypeManager()
->getStorage($entity_type_id)
->load($entity_id);
$widget = \Drupal::service('plugin.manager.vud')
->createInstance($widget_name);
$voteTypeId = \Drupal::config('vud.settings')
->get('tag', 'vote');
$vote_storage = $this
->entityTypeManager()
->getStorage('vote');
$vote_storage
->deleteUserVotes($this
->currentUser()
->id(), $voteTypeId, $entity_type_id, $entity_id);
$this
->entityTypeManager()
->getViewBuilder($entity_type_id)
->resetCache([
$entity,
]);
if ($js == 'ajax') {
$response = new AjaxResponse();
$widget_element = $widget
->build($entity);
$response
->addCommand(new ReplaceCommand("#vud-widget-{$entity_type_id}-{$entity_id}", $widget_element));
return $response;
}
return new RedirectResponse($entity
->toUrl()
->toString());
}
/**
* Checks if the currentUser is allowed to vote.
*
* @return \Drupal\Core\Access\AccessResult|\Drupal\Core\Access\AccessResultAllowed
* The access result.
*/
public function voteAccess() {
// Check if user has permission to vote.
if (!vud_can_vote($this
->currentUser())) {
return AccessResult::forbidden();
}
else {
return AccessResultAllowed::allowed();
}
}
/**
* Checks if the currentUser is allowed to reset vote.
*
* @return \Drupal\Core\Access\AccessResult|\Drupal\Core\Access\AccessResultAllowed
* The access result.
*/
public function resetVoteAccess() {
// Check if user has permission to vote.
if (!vud_can_reset_vote($this
->currentUser())) {
return AccessResult::forbidden();
}
else {
return AccessResultAllowed::allowed();
}
}
}
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 manager. | |
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:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
40 |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
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. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator 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. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
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. | 1 |
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. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. | |
VotingApiController:: |
public | function | Reset a vote. | |
VotingApiController:: |
public | function | Checks if the currentUser is allowed to reset vote. | |
VotingApiController:: |
public | function | Cast a vote. | |
VotingApiController:: |
public | function | Checks if the currentUser is allowed to vote. |