public static function Webform::preRenderWebformElement in Webform 8.5
Same name and namespace in other branches
- 6.x src/Element/Webform.php \Drupal\webform\Element\Webform::preRenderWebformElement()
Webform element pre render callback.
File
- src/
Element/ Webform.php, line 38
Class
- Webform
- Provides a render element to display a webform.
Namespace
Drupal\webform\ElementCode
public static function preRenderWebformElement($element) {
$webform = $element['#webform'] instanceof WebformInterface ? $element['#webform'] : WebformEntity::load($element['#webform']);
if (!$webform) {
return $element;
}
if (!empty($element['#sid'])) {
$webform_submission = WebformSubmission::load($element['#sid']);
if ($webform_submission && $webform_submission
->access('update') && $webform_submission
->getWebform()
->id() === $webform
->id()) {
$element['webform_build'] = \Drupal::service('entity.form_builder')
->getForm($webform_submission, 'edit');
}
elseif ($webform
->getSetting('form_access_denied') !== WebformInterface::ACCESS_DENIED_DEFAULT) {
// Set access denied message.
$element['webform_access_denied'] = static::buildAccessDenied($webform);
}
else {
static::addCacheableDependency($element, $webform);
}
}
else {
if ($webform
->access('submission_create')) {
$values = [];
// Set data.
$values['data'] = $element['#default_data'];
// Set source entity type and id.
if (!empty($element['#entity']) && $element['#entity'] instanceof EntityInterface) {
$values['entity_type'] = $element['#entity']
->getEntityTypeId();
$values['entity_id'] = $element['#entity']
->id();
}
elseif (!empty($element['#entity_type']) && !empty($element['#entity_id'])) {
$values['entity_type'] = $element['#entity_type'];
$values['entity_id'] = $element['#entity_id'];
}
// Build the webform.
$element['webform_build'] = $webform
->getSubmissionForm($values);
}
elseif ($webform
->getSetting('form_access_denied') !== WebformInterface::ACCESS_DENIED_DEFAULT) {
// Set access denied message.
$element['webform_access_denied'] = static::buildAccessDenied($webform);
}
else {
static::addCacheableDependency($element, $webform);
}
}
if (isset($element['webform_build'])) {
// Set custom form submit action.
if (!empty($element['#action'])) {
$element['webform_build']['#action'] = $element['#action'];
}
// Hide submission information.
if ($element['#information'] === FALSE && isset($element['webform_build']['information'])) {
$element['webform_build']['information']['#access'] = FALSE;
}
}
// Allow anonymous drafts to be restored.
// @see \Drupal\webform\WebformSubmissionForm::buildForm
if (\Drupal::currentUser()
->isAnonymous() && $webform
->getSetting('draft') === WebformInterface::DRAFT_ALL) {
$element['#cache']['max-age'] = 0;
// @todo Remove once bubbling of element's max-age to page cache is fixed.
// @see https://www.drupal.org/project/webform/issues/3015760
// @see https://www.drupal.org/project/drupal/issues/2352009
if (\Drupal::moduleHandler()
->moduleExists('page_cache')) {
\Drupal::service('page_cache_kill_switch')
->trigger();
}
}
return $element;
}