限制用户可以按角色在Drupal中创建的某些类型节点的总数?

时间:2009-09-07 09:22:02

标签: drupal

在我的网站上,我有三个角色:

  1. 角色1
  2. 角色2
  3. 角色3
  4. 角色1可能只有10个“NODE_TYPE”类型的节点。 角色2可能只有100个“NODE_TYPE”类型的节点。 角色3可能只有1000个“NODE_TYPE”类型的节点。

    我可以用什么来强制执行此操作?以下模块不起作用:

    • node_limit
    • 用户配额

    任何?

1 个答案:

答案 0 :(得分:2)

如何实现这一目标在很大程度上取决于NODE_TYPE的创建方式。 假设您有一个NODE_TYPE模块,您可以通过执行以下操作来实现hook_validate

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
}

如果您无权访问创建NODE_TYPE的模块,则可以创建新模块并实施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
}

我不是100%确定validate是否是最佳钩子来实现,但它肯定是一种选择。