function _webform_demo_application_evaluation_calculate_evaluation_rating in Webform 6.x
Same name and namespace in other branches
- 8.5 modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.module \_webform_demo_application_evaluation_calculate_evaluation_rating()
Calculate an applications average evaluation rating.
Parameters
\Drupal\webform\WebformSubmissionInterface $webform_submission: A webform submission.
3 calls to _webform_demo_application_evaluation_calculate_evaluation_rating()
- webform_demo_application_evaluation_webform_submission_delete in modules/
webform_demo/ webform_demo_application_evaluation/ webform_demo_application_evaluation.module - Implements hook_ENTITY_TYPE_delete() for webform_submission entities.
- webform_demo_application_evaluation_webform_submission_insert in modules/
webform_demo/ webform_demo_application_evaluation/ webform_demo_application_evaluation.module - Implements hook_ENTITY_TYPE_insert() for webform_submission entities.
- webform_demo_application_evaluation_webform_submission_update in modules/
webform_demo/ webform_demo_application_evaluation/ webform_demo_application_evaluation.module - Implements hook_ENTITY_TYPE_update() for webform_submission entities.
File
- modules/
webform_demo/ webform_demo_application_evaluation/ webform_demo_application_evaluation.module, line 67 - Demonstrate how to use the Webform module to build an application/evaluation system.
Code
function _webform_demo_application_evaluation_calculate_evaluation_rating(WebformSubmissionInterface $webform_submission) {
$webform = $webform_submission
->getWebform();
if (!$webform || $webform
->id() !== 'demo_application_evaluation') {
return;
}
$source_entity = $webform_submission
->getSourceEntity();
if (!$source_entity instanceof WebformSubmissionInterface || $source_entity
->getWebform()
->id() !== 'demo_application') {
return;
}
// Get evaluation ratings.
/** @var \Drupal\webform\WebformSubmissionStorageInterface $webform_submission_storage */
$webform_submission_storage = \Drupal::entityTypeManager()
->getStorage('webform_submission');
$webform_submissions = $webform_submission_storage
->loadByEntities($webform, $source_entity);
$ratings = [];
foreach ($webform_submissions as $webform_submission) {
$ratings[] = $webform_submission
->getElementData('rating');
}
// Set evaluations rating average and count.
$evaluation_rating = array_sum($ratings) / count($ratings);
$source_entity
->setElementData('evaluation_rating', $evaluation_rating);
$source_entity
->setElementData('evaluation_count', count($ratings));
$source_entity
->save();
}