1

I created a module for flagging entities automatically when created or updated.

There are some errors in my code because only nodes work.

If a user "user1" creates a node, the flag will be in his name. I want the flag to be done automatically on behalf of the site administrator.

How do I get the administrator to automatically flag?

use Drupal\flag\FlaggingInterface;
use Drupal\Core\Entity\ContentEntityBase;
use Drupal\user\Entity\User;
use Drupal\commerce_store\Entity\Store;
use Drupal\commerce_product\Entity\Product;
use Drupal\group\Entity\Group;
use Drupal\node\Entity\Node;
use Drupal\comment\Entity\Comment;

/**
 * Flag node.
 */
function admin_task_notify_node_update(Node $node) {
    $flag_id = 'moderate_node';
    $flag_service = \Drupal::service('flag');
    $flag = $flag_service->getFlagById($flag_id);
    $flag_service->flag($flag, $node);
}
1

FlagServiceInterface::flag takes an $account argument:

The account of the user flagging the entity. If not given, the current user is used.

So for example:

$flag_id = 'moderate_node';
$flag_service = \Drupal::service('flag');
$flag = $flag_service->getFlagById($flag_id);
$account = \Drupal\user\Entity\User::load(1);
$flag_service->flag($flag, $node, $account);
4
  • Thanks, but I have a PHP error. I updated my question.
    – sdfff
    Sep 17 '20 at 19:57
  • Check the arguments, you have them the wrong way round
    – Clive
    Sep 17 '20 at 20:34
  • Thanks, it works. But how do I do for the "Flag User" part? Do I add $account twice
    – sdfff
    Sep 17 '20 at 20:54
  • Just name the variables differently - use $admin_account for the admin account for example
    – Clive
    Sep 17 '20 at 22:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.