Drupal Filefield Пользовательские разрешения Детализация - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть сайт Drupal 6 с типом узла, который имеет необязательное неограниченное значение, настройка Imagefield (Filefield / CCK). Права доступа к типу узла установлены так, чтобы все аутентифицированные пользователи могли редактировать эти узлы, и это здорово. Пользователи могут редактировать узел и прикреплять изображения к полю изображения, также отлично.

Однако, когда пользователь редактирует один из этих узлов, он также может редактировать / удалять изображения поля изображения, загруженные другими пользователями. Как я могу запретить пользователю редактировать и / или удалять изображения Imagefield, которые не были загружены сами по себе?

1 Ответ

1 голос
/ 01 октября 2011

Благодаря нескольким людям в канале # drupal-support на IRC я ​​смог получить ответ на этот вопрос. Вот пример модульного решения:

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']

...