rules

Avertir par mail certains utilisateurs lors de la création de certain type de contenu.

Bonjour.

Je voulais savoir si il était possible d'utiliser rules pour envoyer un mail à un groupe d'utilisateurs autorisés à créer un types de contenu.
Un utilisateur créé un contenu, tous les utilisateurs qui ont le droit de créer ce type de contenu reçoivent un mail les avertissant de la création d'un nouveau contenu.
Rules est-il suffisant pour faire ce genre de chose?
D'avance merci
A+

Création automatique de groupe

Bonjour,
Cherchant à m'entraîner avec Drupal, je chercher à faire un "facebook like", et je bloque sur la création de la liste d'ami.

J'ai directement pensé à utiliser Organic Groups, et à créer un groupe par utilisateur, cependant, je ne vois pas comment rendre cette création automatique... J'ai fait un tour du côté du module Rules, cependant celui là ne permet que (en tout cas, à ce que j'ai vu) de créer des Group Contents, ou de gérer le déplacement d'utilisateurs dans les groupes, ce qui m'intéresse pour la suite, mais est assez limité sans les groupes en question^^

Rules Assigner un node à un utilisateur existant

Bonjour j'aimerai pouvoir assigner un node à un utilisateur existant dans la base à partir d'une adresse email fournie

J'utilise pour ca le module Rules 6x 1_4
Comme ca un utilisateur anonyme peut créer un contenu sans avoir à se connecter. Il suffit de fournir son adresse email dans un champ CCK
Si l'adresse existe déjà le node est associé à l'utilisateur
Si l'adresse est nouvelle, un utilisateur est créé
C'est un peu le même fonctionnement que sur le bon coin

J'ai essayé cette rule http://drupal.org/node/782462
Mais ca ne fonctionne pas chez moi

envoi email dans une rules

Bonjour,

Je cherche à écrire une rules, et à mettre dans l'action, en code php un envoi de mail.
Dans ma rules j'ai donc mis ce code la :

$message = " 'TRUE'))."' alt='logo' />

";
$message .= "un article à été ".$node->field_statut_validation[$language][0]["value"]."
";
$message .= "veuillez vous connecter au site pour le valider

";
$message .= "".$base_url."

";
echo $emails."
";
echo $message;
$params = array(

accèder à la variable user dans une rules

Bonjour,

Je rencontre un petit problème avec le module rules,
je souhaiterais faire une règle qui prend en compte le type de l'utilisateur qui serait connecté lorsque la règle serait lancée.
Par exemple : ma règle se lance quand on ajoute un article. Je voudrais accéder au rôle de l'utilisateur qui a posté l'article (administrateur, moderateur ou contributeur).
J'ai donc choisi "Execute custom PHP code" mais derrière je n'arrive pas à accéder à la variable globale $user qui contient les infos dont j'ai besoin.

Auriez-vous une idée?

merci

Par Artusamak
Julien Dubois

Rules : Ajouter programmatiquement des événements, actions ou conditions

Dans les épisodes précédents vous avez pu lire une première présentation de Rules, module très utile et avec qui vous allez devoir devenir meilleurs amis lorsque vous utiliserez Drupal Commerce.

Nous allons donc voir comment exposer vos propres événements, conditions et actions à Rules. Rules est très flexible et offre la possibilité par défaut de rajouter les briques dont vous pourriez avoir besoin pour vos développements.

Commençons par les événements qui déclenchent les rules. Nous allons déclencher un événement lorsqu’un type de contenu précis sera visualisé, nous pourrions le faire avec les composants de base de Rules mais cela permet d’avoir un exemple assez simple. N’hésitez pas à consulter la documentation rédigée par fago pour rules, elle est assez complète et à jour.

Pour déclarer un événement il suffit d’implementer le hook hook_rules_event_info() et de décrire tous vos événements avec leurs paramètres. Exemple :

Source code    
<?php
/**
* Implements hook_rules_event_info().
* Déclaration d'un événement basé sur le type du node vu.
*/
function monmodule_rules_event_info() {
  return array(
    'nodearticle_is_viewed' => array( // Nom de l'événement à invoquer via Rules.
      'label' => t("Un node de type article est entrain d'être vu"), // Description de la rule.
      'module' => 'Mon Module', // Groupe dans lequel faire apparaitre l'événement (node, utilisateur ou mon module).
      'arguments' => array( // Tableau des paramètres à passer à la fonction.
        'article' => array('type' => 'node', 'label' => t('Article visualisé.')), // Ici seulement le node.
      ),
    ),
  );
}
?>

Pour que l’implémentation de l’événement soit complète il ne reste plus qu’à signaler à rules que l’événement se produit. Pour cela il suffit d’appeler la fonction rules_invoke_event() au bon moment. Dans notre exemple il suffit de faire cela au sein du hook_nodeapi() si le node est affiché et qu’il a le type article.

/**
* Implements hook_nodeapi().
*/
function monmodule_nodeapi(&$node, $op) {
  if ($op == 'view' && $node->type == 'article') {
    rules_invoke_event('nodearticle_is_viewed', $node); // Invocation de l'événement.
  }
}

Regardons maintenant comment déclarer de nouvelles conditions, l’exemple ici consiste à déterminer si le node que nous sommes entrain de visualiser possède un champ CCK précis (de type nodereférence )avec une valeur.

Cette fois ci il faut implémenter le hook hook_rules_condition_info() pour arriver à nos fins. Comme d’habitude un exemple est plus parlant.

Source code    
/**
 * Implements hook_rules_condition_info().
 */
function monmodule_rules_condition_info() {
  return array(
    'monmodule_has_nodereference' => array(
      'label' => t('Mon node a un node référence.'),
      'arguments' => array(
        'node' => array('type' => 'node', 'label' => t('Node à vérifier')),
      ),
      'module' => 'User',
    ),
  );
}

Comme pour la déclaration d’un événement, les conditions font appel à une fonction de callback, ici monmodule_has_nodereference. Dans cette fonction nous allons implémenter concrètement effectuer le test de la condition à évaluer.

Source code    
function monmodule_has_reference($node, $settings) {
  if (isset($node->field_book)) {
    if (!is_null($node->field_book[0]['nid'])) {
      return TRUE;
    }
  }
  return FALSE;
}

Ici nous évaluons la valeur d’un éventuel node reference pour le champ field_book mais le nom de ce champ pourrait être exposé dans la configuration de la condition, cette valeur se retrouverait dans le paramètre $settings. Pour voir comment configurer les conditions et actions, reportez à la documentation.

Une fois que les événements et conditions sont là, il ne reste qu’une chose à faire, écrire le code qui va être exécuté une fois notre évènement déclenché et notre condition remplie. Vous l’avez compris cette fois il faut exposer cette action via le hook hook_rules_action_info().

Source code    
/**
 * Implements hook_rules_action_info().
 */
function monmodule_rules_action_info() {
  return array(
    'monmodule_domyaction' => array(
      'label' => t('Effectuer mon traitement'),
      'arguments' => array(
        'node' => array('type' => 'node', 'label' => t('Node exposé')),
      ),
      'module' => 'Mon Module',
    ),
  );
}

Et toujours sur le même principe, la fonction de callback que vous avez déclaré est appelée lorsque la rule est déclenchée et satisfait les conditions configurée.

Source code    
function monmodule_domyaction(&$node) {
  drupal_set_message(t("Ce noeud est de type article et possède au moins un node comme node reference dans le champ field_book"));
  // Effectuer tous les traitements imaginables.
}

Etendre Rules 1 est donc quelque chose de très simple, tout se passe principalement dans ces trois hooks et grâce à eux vous pouvez étendre les possibilités de Rules à l’infini. N’hésitez pas à consulter la documentation pour découvrir d’autres fonctionnalités offertes par Rules.

Rules 2 (Drupal 7)  permet d’utiliser Rules comme une API de façon beaucoup plus simple,  cette nouvelle version explore très facilement les types d’entités et si vous installé entity metadata, vous pourrez également exploiter la puissance des informations additionnelles mises à disposition (accès à toutes les données d’un type d’entity).

Par Artusamak
Julien Dubois

Rules, pénétrez dans le monde merveilleux des actions automatisées

Comment faire pour déclencher des actions avancées de façon conditionnelles avec Drupal ? Avec trigger et action les modules de core ? Oui pourquoi pas, mais connaissez-vous Rules ?

Rules est un module développé par Wolfgang Ziegler AKA fago et est simplement une pure merveille et ça ne serait pas surprenant qu’il soit intégré à core sur Drupal 8 en remplacement de trigger et action. Rules était puissant sous Drupal 6 et l’est encore plus sous Drupal 7 (enfin là !).

Ensemble nous allons construire quelques rules simples via l’interface de Drupal et une action « custom » en implémentant les hooks à notre disposition.

Définition : Une rule représente une ou plusieurs actions réalisées lorsqu’une ou plusieurs conditions sont remplies suite au déclenchement d’un événement.

Trois termes clés ressortent ici :

Condition
Une condition peut être le test d’une valeur d’un champ CCK, le rôle d’un utilisateur, le type d’un node, la valeur de l’URL, la force de Rules est que chaque module peut étendre les conditions disponibles avec par exemple Organic Groups qui donne la possibilité de tester si l’utilisateur est membre d’un groupe.
Les conditions peuvent être multiples et peuvent être groupées et combinées via des opérateurs logique (ET et OU).

Action
Une action est une opération à executer lorsque les conditions listées précédement sont toutes remplies. Charger un noeud, envoyer un email, afficher un message, attribuer un rôle et dépublier un node sont des exemples d’actions possibles. Les actions pouvant être executées sont elles aussi extensibles par les modules contrib.
Les actions peuvent être multiples.

Evénement
Un événement est une opération qui déclenche l’évaluation des conditions d’une rule. Exemples possibles : un node est visualisé, un commentaire est publié, un utilisateur se connecte, etc. Les événements sont eux aussi extensibles par les modules contrib.

Un exemple complet d’une rule serait donc d’attribuer le rôle contributeur à un utilisateur lorsqu’il soumet un node de type article.

La puissance de Rules réside dans le fait que les actions peuvent se combiner et les conditions peuvent s’additionner pour donner des rules très complexes.

Note : Ceux qui ont déjà travaillé avec Ubercart et les predicats retrouveront des similitudes avec Rules.

Il faut ajouter aux conditions, actions et événements un élément clé supplémentaire, les arguments. Lorsque l’on veut évaluer une condition sur le rôle de l’utilisateur, il est nécessaire d’avoir l’objet utilisateur à disposition. Lorsque l’on veut tester le type d’un node, il fait avoit l’objet node à disposition. L’utilisateur ou le node sont donc les arguments utilisés dans l’évaluation des conditions ou des événements. Les arguments à transmettre dépendent du déclencheur que vous avez configuré pour lancer l’évaluation d’une rule. Lorsqu’une action ou une condition que vous aimeriez utiliser dans votre rule n’est pas disponible, cela signifie que vous n’avez pas à disposition l’argument dont vous avez besoin (exemple : vous voulez tester le type du node alors que vous avez utilisé l’événement de déclenchement de la rule « lorsque l’utilisateur se connecte », vous avez à disposition l’utilisateur alors que vous voulez utiliser le noeud). La solution dans ces cas là est d’utiliser un rules set.

Le rules set est un ensemble de rules à executer. Les rules sets peuvent être utilisés lorsque les actions doivent être programmées dans le temps, exemple : dépublier tous les lundi les articles de la page d’accueil datant de plus d’une semaine. Les rules sets ont l’avantage de pouvoir cumuler les arguments (utilisateur, noeud, taxonomie, etc) et donc d’élargir les conditions et actions pouvant être executées.

Partie 2 sur les rules implémentées programmatiquement à venir.

Paramètres du menu : imposer "titre du lien = user's" et "élément parent=navigation" par défaut

bonjour

je souhaite que lors d'une inscription :

(1 - un groupe, une page et un article soient créés --> OK avec le "Rules module" )

(2- que le nom de chacun soit "le contenu de [account:user]" --> OK avec Rules)

3 - changer (avoir par défaut ?) les "paramètres du menu" :

  • titre du lien = "le contenu de [account:user]"
  • élément parent = navigation

(ce point 3 est l'objet du titre)

4 - de plus, placer page et article dans le groupe du [user]

Règle RULES comment parcourir tous les utilisateurs

Bonjour,

J'ai fait un champ cck date pour la date d'adhésion (a une asso) d'un utilisateur. Je cherche maintenant à pouvoir parcourir tous les utilisateurs et supprimer ou au moins bloquer les utilisateurs qui ont une date qui dépassent un an.
Pour l'instant, la condition est bonne pour UN utilisateur. Mais cette action est effectuée lorsqu'il se connecte à son compte. J'aimerais aller plus loi, a savoir parcourir tous les utilisateurs (exécution via cron) pour mettre à jour les profils utilisateurs !

Pages