Drupal Filefield用户权限粒度

时间:2011-09-30 19:41:15

标签: drupal drupal-6

我有一个Drupal 6站点,其节点类型具有可选的无限值Imagefield(Filefield / CCK)设置。节点类型的内容权限设置为允许所有经过身份验证的用户能够编辑这些节点,这很好。用户可以编辑节点并将图像附加到Imagefield,也很棒。

但是,当用户正在编辑其中一个节点时,他们还可以编辑/删除其他用户上传的Imagefield图像。如何防止用户编辑和/或删除未自行上传的Imagefield图像?

1 个答案:

答案 0 :(得分:1)

感谢IRC#drupal支持频道中的一些人,我能够得到这个问题的答案。以下是基于模块的示例解决方案:

function my_module_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  switch ($form['type']['#value']) {
    case "my_content_type":
      if (user_access("administer nodes")) { break; }
      foreach (array_keys($form['field_my_images']) as $key) {
        if (!is_numeric($key)) { continue; }
        if ($form['field_my_images'][$key]['#default_value']['fid']) {
          if ($form['field_my_images'][$key]['#default_value']['uid'] != $user->uid) {
            $form['field_my_images'][$key]['#access'] = false;
          }
        }
      }
      break;
  }
}

我现在感到愚蠢,因为我意识到我的整个问题是因为我正在访问,例如:

$form['#node']->field_my_images

而不是:

$form['field_my_images']