¿Cómo consigo que el administrador marque automáticamente?

Sep 18 2020

Creé un módulo para marcar entidades automáticamente cuando se crea o actualiza.

Hay algunos errores en mi código porque solo funcionan los nodos.

Si un usuario "user1" crea un nodo, la bandera estará a su nombre. Quiero que la bandera se haga automáticamente en nombre del administrador del sitio.

¿Cómo consigo que el administrador marque automáticamente?

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);
}

Respuestas

1 Clive Sep 18 2020 at 02:42

FlagServiceInterface::flagtoma un $accountargumento:

La cuenta del usuario que marca la entidad. Si no se proporciona, se utiliza el usuario actual.

Así por ejemplo:

$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);