protected function WebformAccessGroupForm::getEntitiesAsOptions in Webform 6.x
Same name and namespace in other branches
- 8.5 modules/webform_access/src/WebformAccessGroupForm.php \Drupal\webform_access\WebformAccessGroupForm::getEntitiesAsOptions()
Get webform entities as options.
Return value
array An associative array container webform node options.
1 call to WebformAccessGroupForm::getEntitiesAsOptions()
- WebformAccessGroupForm::form in modules/
webform_access/ src/ WebformAccessGroupForm.php - Gets the actual form array to be built.
File
- modules/
webform_access/ src/ WebformAccessGroupForm.php, line 366
Class
- WebformAccessGroupForm
- Provides a form to define a webform access group.
Namespace
Drupal\webform_accessCode
protected function getEntitiesAsOptions() {
// Collects webform nodes.
$webform_nodes = [];
$nids = [];
$webform_ids = [];
$table_names = $this->webformEntityReferenceManager
->getTableNames();
foreach ($table_names as $table_name => $field_name) {
if (strpos($table_name, 'node_revision__') !== 0) {
continue;
}
$query = $this->database
->select($table_name, 'n');
$query
->distinct();
$query
->fields('n', [
'entity_id',
$field_name . '_target_id',
]);
$query
->condition($field_name . '_target_id', '', '<>');
$query
->isNotNull($field_name . '_target_id');
$result = $query
->execute()
->fetchAllKeyed();
foreach ($result as $nid => $webform_id) {
$webform_nodes[$nid][$field_name][$webform_id] = $webform_id;
$webform_ids[$webform_id] = $webform_id;
$nids[$nid] = $nid;
}
}
/** @var \Drupal\webform\WebformInterface[] $webforms */
$webforms = Webform::loadMultiple($webform_ids);
/** @var \Drupal\node\NodeInterface[] $nodes */
$nodes = $this->entityTypeManager
->getStorage('node')
->loadMultiple($nids);
$options = [];
foreach ($webform_nodes as $nid => $field_names) {
if (!isset($nodes[$nid])) {
continue;
}
$node = $nodes[$nid];
foreach ($field_names as $field_name => $webform_ids) {
foreach ($webform_ids as $webform_id) {
if (!isset($webforms[$webform_id])) {
continue;
}
$webform = $webforms[$webform_id];
$options['node:' . $node
->id() . ':' . $field_name . ':' . $webform
->id()] = $node
->label() . ': ' . $webform
->label();
}
}
}
asort($options);
return $options;
}