You are here

function private_files_download_permission_list_directories in Private files download permission 7.2

(Page callback.) Displays the main page and lists directories under control.

1 string reference to 'private_files_download_permission_list_directories'
private_files_download_permission_menu in ./private_files_download_permission.module
Implements hook_menu().

File

./private_files_download_permission.module, line 157
Handles both module settings and its behaviour.

Code

function private_files_download_permission_list_directories() {
  $output = '';

  // Check if file system download method is set to private.
  if ('private' !== file_default_scheme()) {
    drupal_set_message(t('Your !default_download_method is not set as private. Please keep in mind that these settings only affect private file system downloads.', array(
      '!default_download_method' => l(t('default download method'), 'admin/config/media/file-system'),
    )), 'warning');
  }

  // Display the private file system path.
  $private_path = variable_get('file_private_path');
  if (!$private_path) {
    $output .= '<p>' . t('Your private file system path is not set.') . '</p>';
  }
  else {
    $output .= '<p>' . t('Your private file system path is %path.', array(
      '%path' => $private_path,
    )) . '</p>';
  }

  // Display a warning if by-user checks are not enabled.
  if (!variable_get('private_files_download_permission_by_user_checks')) {
    $output .= '<p>' . t('!by_user_checks are not enabled.', array(
      '!by_user_checks' => l(t('By-user checks'), 'admin/config/media/private-files-download-permission/preferences'),
    )) . '</p>';
  }

  // Retrieve directory list and display it as a table.
  $directory_list = private_files_download_permission_get_directory_list();
  if (variable_get('private_files_download_permission_by_user_checks')) {
    $users = private_files_download_permission_get_users();
  }
  $roles = user_roles();
  $rows = array();
  foreach ($directory_list as $directory) {

    // Prepare the 'Enabled users' cell.
    if (variable_get('private_files_download_permission_by_user_checks')) {
      $enabled_users = array_intersect_key($users, $directory->uid);
      natcasesort($enabled_users);
    }

    // Prepare the 'Enabled roles' cell.
    $enabled_roles = array_intersect_key($roles, $directory->rid);
    natcasesort($enabled_roles);

    // Fill table row.
    $rows[] = array(
      $directory->path,
      $directory->bypass ? t('Yes') : '',
      ($directory->grant_file_owners ? t('File owners') . '<br />' : '') . (variable_get('private_files_download_permission_by_user_checks') && !empty($enabled_users) && !$directory->bypass ? implode('<br />', $enabled_users) : ''),
      !empty($enabled_roles) && !$directory->bypass ? implode('<br />', $enabled_roles) : '',
      l(t('Edit'), 'admin/config/media/private-files-download-permission/' . $directory->did . '/edit/'),
      l(t('Remove'), 'admin/config/media/private-files-download-permission/' . $directory->did . '/remove/'),
    );
  }
  $output .= theme('table', array(
    'header' => array(
      t('Directory path'),
      t('Bypass'),
      t('Enabled users'),
      t('Enabled roles'),
      array(
        'data' => t('Operations'),
        'colspan' => 2,
      ),
    ),
    'rows' => $rows,
    'attributes' => array(),
    'caption' => NULL,
    'colgroups' => array(),
    'sticky' => FALSE,
    'empty' => t('The directory list is empty.'),
  ));

  // Display output.
  return $output;
}