Beispiel #1
0
 /**
  * Delete a competency framework by id.
  *
  * Requires moodle/competency:competencymanage capability at the system context.
  *
  * @param int $id The record to delete. This will delete alot of related data - you better be sure.
  * @return boolean
  */
 public static function delete_framework($id)
 {
     global $DB;
     static::require_enabled();
     $framework = new competency_framework($id);
     require_capability('moodle/competency:competencymanage', $framework->get_context());
     $events = array();
     $competenciesid = competency::get_ids_by_frameworkid($id);
     $contextid = $framework->get_contextid();
     if (!competency::can_all_be_deleted($competenciesid)) {
         return false;
     }
     $transaction = $DB->start_delegated_transaction();
     try {
         if (!empty($competenciesid)) {
             // Delete competencies.
             competency::delete_by_frameworkid($id);
             // Delete the related competencies.
             related_competency::delete_multiple_relations($competenciesid);
             // Delete the evidences for competencies.
             user_evidence_competency::delete_by_competencyids($competenciesid);
         }
         // Create a competency framework deleted event.
         $event = \core\event\competency_framework_deleted::create_from_framework($framework);
         $result = $framework->delete();
         // Register the deleted events competencies.
         $events = \core\event\competency_deleted::create_multiple_from_competencyids($competenciesid, $contextid);
     } catch (\Exception $e) {
         $transaction->rollback($e);
     }
     // Commit the transaction.
     $transaction->allow_commit();
     // If all operations are successfull then trigger the delete event.
     $event->trigger();
     // Trigger deleted event competencies.
     foreach ($events as $event) {
         $event->trigger();
     }
     return $result;
 }