Index: private_upload.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/private_upload/private_upload.module,v retrieving revision 1.13.2.7 diff -d -u -p -r1.13.2.7 private_upload.module --- private_upload.module 26 Jul 2008 00:49:36 -0000 1.13.2.7 +++ private_upload.module 27 Oct 2009 20:25:32 -0000 @@ -75,6 +75,15 @@ function private_upload_menu() { return $items; } +/* + * hook_perm(). + */ +function private_upload_perm() { + if (variable_get('private_upload_use_access_control', 0) == 1) { + return array('access private checkbox'); + } + return array(); +} /** * hook_requrements(). @@ -326,6 +335,9 @@ function private_upload_nodeapi(&$node, * Two paths - one for normal submit, one for javascript. */ function private_upload_form_alter(&$form, $from_state, $form_id) { + + $has_access = _private_upload_has_checkbox_access(); + if (isset($form['type'])) { $node = $form['#node']; if ($form['type']['#value'] .'_node_form' == $form_id && variable_get("upload_$node->type", TRUE)) { @@ -346,6 +358,7 @@ function private_upload_form_alter(&$for $form['attachments']['wrapper']['files'][$fid]['private'] = array( '#type' => 'checkbox', + '#disabled' => !$has_access, '#default_value' => $default_value, ); if( !realpath($file->filepath) ) { @@ -387,6 +400,7 @@ function private_upload_form_alter(&$for $form['files'][$fid]['private'] = array( '#type' => 'checkbox', + '#disabled' => !$has_access, '#default_value' => $private, ); } @@ -477,6 +491,13 @@ function private_upload_admin() { '#description' => t('Are uploads public or private by default?'), ); + $form['settings']['private_upload_use_access_control'] = array( + '#type' => 'checkbox', + '#title' => t('Control Access to Private Checkbox'), + '#default_value' => variable_get('private_upload_use_access_control', 0), + '#description' => t('Restrict the private checkbox using the permission: access private checkbox?'), + ); + // STATUS REPORT *************************************************************** $form['status'] = array( @@ -682,6 +703,15 @@ function theme_private_upload_attachment // ***************************************************************************** /** + * Utility + * @return bool: true if the user has access to the private checkbox, false otherwise + */ +function _private_upload_has_checkbox_access() { + return variable_get('private_upload_use_access_control', 0) == 0 || // access control is disabled OR + user_access('access private checkbox'); // user has the correct permission +} + +/** * Returns the system path for the private folder, * Or false if the folder is invalid. *