original_string: public static function delete_tags($tagids) {
          global $DB;
  
          if (!is_array($tagids)) {
              $tagids = array($tagids);
          }
          if (empty($tagids)) {
              return;
          }
  
          // Use the tagids to create a select statement to be used later.
          list($tagsql, $tagparams) = $DB->get_in_or_equal($tagids);
  
          // Store the tags and tag instances we are going to delete.
          $tags = $DB->get_records_select('tag', 'id ' . $tagsql, $tagparams);
          $taginstances = $DB->get_records_select('tag_instance', 'tagid ' . $tagsql, $tagparams);
  
          // Delete all the tag instances.
          $select = 'WHERE tagid ' . $tagsql;
          $sql = "DELETE FROM {tag_instance} $select";
          $DB->execute($sql, $tagparams);
  
          // Delete all the tag correlations.
          $sql = "DELETE FROM {tag_correlation} $select";
          $DB->execute($sql, $tagparams);
  
          // Delete all the tags.
          $select = 'WHERE id ' . $tagsql;
          $sql = "DELETE FROM {tag} $select";
          $DB->execute($sql, $tagparams);
  
          // Fire an event that these items were untagged.
          if ($taginstances) {
              // Save the system context in case the 'contextid' column in the 'tag_instance' table is null.
              $syscontextid = context_system::instance()->id;
              // Loop through the tag instances and fire a 'tag_removed'' event.
              foreach ($taginstances as $taginstance) {
                  // We can not fire an event with 'null' as the contextid.
                  if (is_null($taginstance->contextid)) {
                      $taginstance->contextid = $syscontextid;
                  }
  
                  // Trigger tag removed event.
                  \core\event\tag_removed::create_from_tag_instance($taginstance,
                      $tags[$taginstance->tagid]->name, $tags[$taginstance->tagid]->rawname,
                      true)->trigger();
              }
          }
  
          // Fire an event that these tags were deleted.
          if ($tags) {
              $context = context_system::instance();
              foreach ($tags as $tag) {
                  // Delete all files associated with this tag.
                  $fs = get_file_storage();
                  $files = $fs->get_area_files($context->id, 'tag', 'description', $tag->id);
                  foreach ($files as $file) {
                      $file->delete();
                  }
  
                  // Trigger an event for deleting this tag.
                  $event = \core\event\tag_deleted::create(array(
                      'objectid' => $tag->id,
                      'relateduserid' => $tag->userid,
                      'context' => $context,
                      'other' => array(
                          'name' => $tag->name,
                          'rawname' => $tag->rawname
                      )
                  ));
                  $event->add_record_snapshot('tag', $tag);
                  $event->trigger();
              }
          }
  
          return true;
      }
code: public static function delete_tags($tagids) {
          global $DB;
  
          if (!is_array($tagids)) {
              $tagids = array($tagids);
          }
          if (empty($tagids)) {
              return;
          }
  
          // Use the tagids to create a select statement to be used later.
          list($tagsql, $tagparams) = $DB->get_in_or_equal($tagids);
  
          // Store the tags and tag instances we are going to delete.
          $tags = $DB->get_records_select('tag', 'id ' . $tagsql, $tagparams);
          $taginstances = $DB->get_records_select('tag_instance', 'tagid ' . $tagsql, $tagparams);
  
          // Delete all the tag instances.
          $select = 'WHERE tagid ' . $tagsql;
          $sql = "DELETE FROM {tag_instance} $select";
          $DB->execute($sql, $tagparams);
  
          // Delete all the tag correlations.
          $sql = "DELETE FROM {tag_correlation} $select";
          $DB->execute($sql, $tagparams);
  
          // Delete all the tags.
          $select = 'WHERE id ' . $tagsql;
          $sql = "DELETE FROM {tag} $select";
          $DB->execute($sql, $tagparams);
  
          // Fire an event that these items were untagged.
          if ($taginstances) {
              // Save the system context in case the 'contextid' column in the 'tag_instance' table is null.
              $syscontextid = context_system::instance()->id;
              // Loop through the tag instances and fire a 'tag_removed'' event.
              foreach ($taginstances as $taginstance) {
                  // We can not fire an event with 'null' as the contextid.
                  if (is_null($taginstance->contextid)) {
                      $taginstance->contextid = $syscontextid;
                  }
  
                  // Trigger tag removed event.
                  \core\event\tag_removed::create_from_tag_instance($taginstance,
                      $tags[$taginstance->tagid]->name, $tags[$taginstance->tagid]->rawname,
                      true)->trigger();
              }
          }
  
          // Fire an event that these tags were deleted.
          if ($tags) {
              $context = context_system::instance();
              foreach ($tags as $tag) {
                  // Delete all files associated with this tag.
                  $fs = get_file_storage();
                  $files = $fs->get_area_files($context->id, 'tag', 'description', $tag->id);
                  foreach ($files as $file) {
                      $file->delete();
                  }
  
                  // Trigger an event for deleting this tag.
                  $event = \core\event\tag_deleted::create(array(
                      'objectid' => $tag->id,
                      'relateduserid' => $tag->userid,
                      'context' => $context,
                      'other' => array(
                          'name' => $tag->name,
                          'rawname' => $tag->rawname
                      )
                  ));
                  $event->add_record_snapshot('tag', $tag);
                  $event->trigger();
              }
          }
  
          return true;
      }
code_tokens: public static function delete_tags ( $ tagids ) { global $ DB ; if ( ! is_array ( $ tagids ) ) { $ tagids = array ( $ tagids ) ; } if ( empty ( $ tagids ) ) { return ; } // Use the tagids to create a select statement to be used later. list ( $ tagsql , $ tagparams ) = $ DB -> get_in_or_equal ( $ tagids ) ; // Store the tags and tag instances we are going to delete. $ tags = $ DB -> get_records_select ( 'tag' , 'id ' . $ tagsql , $ tagparams ) ; $ taginstances = $ DB -> get_records_select ( 'tag_instance' , 'tagid ' . $ tagsql , $ tagparams ) ; // Delete all the tag instances. $ select = 'WHERE tagid ' . $ tagsql ; $ sql = "DELETE FROM {tag_instance} $select" ; $ DB -> execute ( $ sql , $ tagparams ) ; // Delete all the tag correlations. $ sql = "DELETE FROM {tag_correlation} $select" ; $ DB -> execute ( $ sql , $ tagparams ) ; // Delete all the tags. $ select = 'WHERE id ' . $ tagsql ; $ sql = "DELETE FROM {tag} $select" ; $ DB -> execute ( $ sql , $ tagparams ) ; // Fire an event that these items were untagged. if ( $ taginstances ) { // Save the system context in case the 'contextid' column in the 'tag_instance' table is null. $ syscontextid = context_system :: instance ( ) -> id ; // Loop through the tag instances and fire a 'tag_removed'' event. foreach ( $ taginstances as $ taginstance ) { // We can not fire an event with 'null' as the contextid. if ( is_null ( $ taginstance -> contextid ) ) { $ taginstance -> contextid = $ syscontextid ; } // Trigger tag removed event. \ core \ event \ tag_removed :: create_from_tag_instance ( $ taginstance , $ tags [ $ taginstance -> tagid ] -> name , $ tags [ $ taginstance -> tagid ] -> rawname , true ) -> trigger ( ) ; } } // Fire an event that these tags were deleted. if ( $ tags ) { $ context = context_system :: instance ( ) ; foreach ( $ tags as $ tag ) { // Delete all files associated with this tag. $ fs = get_file_storage ( ) ; $ files = $ fs -> get_area_files ( $ context -> id , 'tag' , 'description' , $ tag -> id ) ; foreach ( $ files as $ file ) { $ file -> delete ( ) ; } // Trigger an event for deleting this tag. $ event = \ core \ event \ tag_deleted :: create ( array ( 'objectid' => $ tag -> id , 'relateduserid' => $ tag -> userid , 'context' => $ context , 'other' => array ( 'name' => $ tag -> name , 'rawname' => $ tag -> rawname ) ) ) ; $ event -> add_record_snapshot ( 'tag' , $ tag ) ; $ event -> trigger ( ) ; } } return true ; }
docstring: Delete one or more tag, and all their instances if there are any left.
  
  @param    int|array    $tagids one tagid (int), or one array of tagids to delete
  @return   bool     true on success, false otherwise
docstring_tokens: Delete one or more tag and all their instances if there are any left .