Drupal - How can I flag content programmatically?
Here's how to flag or unflag an entity programmatically, using the Flag service.
$flag_id = 'bookmark';
$flag_service = \Drupal::service('flag');
$flag = $flag_service->getFlagById($flag_id);
// Flag an entity with a specific flag.
$flag_service->flag($flag, $entity);
// Unflag an entity with a specific flag.
$flag_service->unflag($flag, $entity);
Flag for a certain user you will have to do :
$account = \Drupal::currentUser(); // or load a specific user
$flag_service = \Drupal::service('flag');
$flag = $flag_service->getFlagById('bookmark'); // replace by flag machine name
// check if already flagged
$flagging = $flag_service->getFlagging($flag, $media, $account);
if (!$flagging) {
$flag_service->flag($flag, $media, $account);
}
else {
$flag_service->unflag($flag, $media, $account);
}