function webform_node_webform_submission_query_access_alter in Webform 6.x
Same name and namespace in other branches
- 8.5 modules/webform_node/webform_node.module \webform_node_webform_submission_query_access_alter()
Implements hook_webform_submission_query_access_alter().
File
- modules/
webform_node/ webform_node.module, line 90 - Provides a webform content type which allows webforms to be integrated into a website as nodes.
Code
function webform_node_webform_submission_query_access_alter(AlterableInterface $query, array $webform_submission_tables) {
$route_name = \Drupal::routeMatch()
->getRouteName();
if (!preg_match('/entity\\.([^.]+)\\.webform\\.results_submissions/', $route_name, $match)) {
return;
}
$entity_type = $match[1];
$account = $query
->getMetaData('account') ?: \Drupal::currentUser();
if ($account
->hasPermission('view webform submissions any node')) {
foreach ($webform_submission_tables as $table) {
$table['condition']
->condition($table['alias'] . '.entity_type', $entity_type);
}
}
elseif ($account
->hasPermission('view webform submissions own node')) {
$entity_id = \Drupal::routeMatch()
->getRawParameter($entity_type);
foreach ($webform_submission_tables as $table) {
/** @var \Drupal\Core\Database\Query\SelectInterface $query */
$condition = $query
->andConditionGroup();
$condition
->condition($table['alias'] . '.entity_type', $entity_type);
$condition
->condition($table['alias'] . '.entity_id', $entity_id);
$table['condition']
->condition($condition);
}
}
}