2011-09-30 65 views
0

我有一個Drupal 6站點,其節點類型有一個可選的無限值Imagefield(Filefield/CCK)設置。節點類型的內容權限設置爲允許所有經過身份驗證的用戶能夠編輯這些節點,這非常棒。用戶可以編輯節點並將圖像附加到Imagefield,這也很棒。Drupal Filefield用戶權限粒度

但是,當用戶正在編輯其中一個節點時,他們還能夠編輯/刪除其他用戶上傳的Imagefield圖像。如何防止用戶編輯和/或刪除自己未上傳的Imagefield圖像?

回答

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