You are here

static function Course::preDelete in Course 3.x

Clean up enrollments and objects after deleting a course.

Overrides EntityBase::preDelete

File

src/Entity/Course.php, line 484

Class

Course
Defines the Course entity class.

Namespace

Drupal\course\Entity

Code

static function preDelete(Drupal\Core\Entity\EntityStorageInterface $storage, array $entities) {
  foreach ($entities as $course) {

    // Remove enrollments, which will also remove fulfillments.
    $enrollment_storage = \Drupal::entityTypeManager()
      ->getStorage('course_enrollment');
    $course_enrollments = $enrollment_storage
      ->loadByProperties([
      'cid' => $course
        ->id(),
    ]);
    $enrollment_storage
      ->delete($course_enrollments);

    // Remove objects.
    $object_storage = \Drupal::entityTypeManager()
      ->getStorage('course_object');
    $course_objects = $object_storage
      ->loadByProperties([
      'cid' => $course
        ->id(),
    ]);
    $object_storage
      ->delete($course_objects);
  }
  parent::preDelete($storage, $entities);
}