<?php
  
  /**
  * Implementation of hook_permission(). 
  */
  function private_files_permission() {
    return array(
      'view all private files' => array(
        'title' => t('View All Private Files'), 
        'description' => t('View all files that are in private folders'),
      ),
      'administer private files' => array(
        'title' => t('Administer Private Files'), 
        'description' => t('Access module configuration.'),
      ),
    );
  }
  
  /**
  * Implementation of hook_menu().
  */
  function private_files_menu() {
    $items = array();
    $items['admin/config/media/private-files'] = array(
      'title' => 'Private Files',
      'description' => 'Choose which folders within the private file system that should be truly private.',
      'page callback' => 'drupal_get_form',
      'page arguments' => array('private_files_settings'),
	    'access arguments' => array('administer private files'),
    );
    return $items;
  }
  
  
  /**
  * Implementation of system_settings_form().
  */
  function private_files_settings($form, $form_state) {
    if(file_default_scheme() == 'public') {
      drupal_set_message("You need to enable the private file system before you setup this module.", "error");
    }
    else {  // DLV MODIFICATION 
		/*  //bypassing this as we will fill up the variable table unnecessarily with individual file folder permissions.
				// for every DR directory we create
      $options = array();
      foreach(scandir("private://") as $folder) {
        if($folder != '..' && $folder != '.' && $folder != '' && is_dir("private://".$folder)) {
          $options[$folder] = $folder;
          $default = variable_get('private_files_folder_'.$folder);
          if(!isset($default)) { 
            variable_set('private_files_folder_'.$folder, 'users');
          }
        }
      }
      foreach($options as $folder) {
        $form['private_files_folder_'.$folder] = array(
          '#type' => "radios",
          '#title' => $folder,
          '#default_value' => variable_get('private_files_folder_'.$folder, ''),
          '#options' => array("all" => "Everyone", "users" => "Logged In Users", "owner" => "File Owner"),
        );
      }
			*/
    }
		
    return system_settings_form($form);
  }
  
  /**
  * Implementation of hook_file_download().
  */
  function private_files_file_download($uri) {
    global $user;
    $folder = explode("/", $uri);
		$permissions = 'user';	// DLV -- forcing this for all folders
    //$permissions = variable_get('private_files_folder_'.$folder[2]);
    $file = db_query("SELECT * FROM {file_managed} WHERE uri = :uri", array(':uri' => $uri))->fetchObject();
    if($file && file_uri_scheme($uri) =='private' && ((!$user->uid && $permissions == 'users') || ($permissions == 'owner' && $user->uid != $file->uid))) {
      return -1; 
    }
  }

?>