You are here

function system_check_directory in Drupal 7

Same name and namespace in other branches
  1. 8 core/modules/system/system.module \system_check_directory()
  2. 4 modules/system.module \system_check_directory()
  3. 5 modules/system/system.module \system_check_directory()
  4. 6 modules/system/system.module \system_check_directory()
  5. 9 core/modules/system/system.module \system_check_directory()
  6. 10 core/modules/system/system.module \system_check_directory()

Checks the existence of the directory specified in $form_element.

This function is called from the system_settings form to check all core file directories (file_public_path, file_private_path, file_temporary_path).

Parameters

$form_element: The form element containing the name of the directory to check.

1 string reference to 'system_check_directory'
system_file_system_settings in modules/system/system.admin.inc
Form builder; Configure the site file handling.

File

modules/system/system.module, line 2189
Configuration system that lets administrators modify the workings of the site.

Code

function system_check_directory($form_element) {
  $directory = $form_element['#value'];
  if (strlen($directory) == 0) {
    return $form_element;
  }
  if (!is_dir($directory) && !drupal_mkdir($directory, NULL, TRUE)) {

    // If the directory does not exists and cannot be created.
    form_set_error($form_element['#parents'][0], t('The directory %directory does not exist and could not be created.', array(
      '%directory' => $directory,
    )));
    watchdog('file system', 'The directory %directory does not exist and could not be created.', array(
      '%directory' => $directory,
    ), WATCHDOG_ERROR);
  }
  if (is_dir($directory) && !is_writable($directory) && !drupal_chmod($directory)) {

    // If the directory is not writable and cannot be made so.
    form_set_error($form_element['#parents'][0], t('The directory %directory exists but is not writable and could not be made writable.', array(
      '%directory' => $directory,
    )));
    watchdog('file system', 'The directory %directory exists but is not writable and could not be made writable.', array(
      '%directory' => $directory,
    ), WATCHDOG_ERROR);
  }
  elseif (is_dir($directory)) {
    if ($form_element['#name'] == 'file_public_path') {

      // Create public .htaccess file.
      file_create_htaccess($directory, FALSE);
    }
    else {

      // Create private .htaccess file.
      file_create_htaccess($directory);
    }
  }
  return $form_element;
}