drupal_verify_install_file($file, $mask = NULL, $type = 'file')
Verifies the state of the specified file.
Parameters
$file: The file to check for.
$mask: An optional bitmask created from various FILE_* constants.
$type: The type of file. Can be file (default), dir, or link.
Return value
TRUE on success or FALSE on failure. A message is set for the latter.
File
- core/includes/install.inc, line 650
- API functions for installing modules and themes.
Code
function drupal_verify_install_file($file, $mask = NULL, $type = 'file') { $return = TRUE; // Check for files that shouldn't be there. if (isset($mask) && ($mask & FILE_NOT_EXIST) && file_exists($file)) { return FALSE; } // Verify that the file is the type of file it is supposed to be. if (isset($type) && file_exists($file)) { $check = 'is_' . $type; if (!function_exists($check) || !$check($file)) { $return = FALSE; } } // Verify file permissions. if (isset($mask)) { $masks = array(FILE_EXIST, FILE_READABLE, FILE_WRITABLE, FILE_EXECUTABLE, FILE_NOT_READABLE, FILE_NOT_WRITABLE, FILE_NOT_EXECUTABLE); foreach ($masks as $current_mask) { if ($mask & $current_mask) { switch ($current_mask) { case FILE_EXIST: if (!file_exists($file)) { if ($type == 'dir') { drupal_install_mkdir($file, $mask); } if (!file_exists($file)) { $return = FALSE; } } break; case FILE_READABLE: if (!is_readable($file) && !drupal_install_fix_file($file, $mask)) { $return = FALSE; } break; case FILE_WRITABLE: if (!is_writable($file) && !drupal_install_fix_file($file, $mask)) { $return = FALSE; } break; case FILE_EXECUTABLE: if (!is_executable($file) && !drupal_install_fix_file($file, $mask)) { $return = FALSE; } break; case FILE_NOT_READABLE: if (is_readable($file) && !drupal_install_fix_file($file, $mask)) { $return = FALSE; } break; case FILE_NOT_WRITABLE: if (is_writable($file) && !drupal_install_fix_file($file, $mask)) { $return = FALSE; } break; case FILE_NOT_EXECUTABLE: if (is_executable($file) && !drupal_install_fix_file($file, $mask)) { $return = FALSE; } break; } } } } return $return; }
Please login to continue.