2009-09-07 6 views
1

Sur mon site, j'ai trois rôles:Limiter le nombre total de certains types de nœuds qu'un utilisateur peut créer dans Drupal par rôle?

  1. Rôle 1
  2. Rôle 2
  3. Rôle 3

Rôle 1 peut ne jamais avoir 10 noeuds de type "NODE_TYPE". Le rôle 2 peut uniquement contenir 100 nœuds de type "NODE_TYPE". Le rôle 3 peut uniquement avoir 1000 nœuds de type "NODE_TYPE".

Que puis-je utiliser pour appliquer ceci? Les modules suivants ne font pas l'affaire:

  • node_limit
  • quota utilisateur

Toute personne?

Répondre

2

La façon dont cela peut être réalisé dépend en grande partie de la façon dont est créé. En supposant que vous avez un module NODE_TYPE vous pourriez mettre en œuvre hook_validate en faisant quelque chose comme ceci:

function NODE_TYPE_validate($node, &$form) { 
    if (NODE_TYPE_reached_post_limit()) { 
    form_set_error('form_name', t('You have reached your post limit')); 
    } 
} 

function NODE_TYPE_reached_post_limit() { 
    global $user; 
    //Write code to do the following: 
    //-> Check which group $user belongs to 
    //-> Create query to see how many posts $user has made 
    //-> Return true if $user has reached the limit 
} 

Si vous ne disposez pas d'accès au module qui crée le NODE_TYPE vous pouvez créer un nouveau module et mettre en œuvre hook_nodeapi:

function yournewmodule_nodeapi(&$node, $op) { 
    switch ($op) { 
    case 'validate': 
     if ($node->type == "NODE_TYPE" && yournewmodule_reached_post_limit()) { 
     form_set_error('form_name', t('You have reached your post limit')); 
     } 
     break; 
    } 
} 

function yournewmodule_reached_post_limit() { 
    global $user; 
    //Write code to do the following: 
    //-> Check which group $user belongs to 
    //-> Create query to see how many posts $user has made 
    //-> Return true if $user has reached the limit 
} 

Je ne suis pas sûr à 100% si validate est le meilleur crochet à mettre en œuvre, mais c'est certainement une option.

+0

C'est probablement une meilleure solution que ce que j'ai fait. J'ai utilisé un autre module, appelé user_quota, qui fonctionne, mais maintenant, chaque fois qu'un noeud est supprimé, je dois augmenter le quota de la personne. – coderama

Questions connexes