<?php

/**
 * @file
 * Install, uninstall, and requirements functions for Encrypted Files module.
 */

/**
 * Implements hook_uninstall().
 */
function encrypted_files_uninstall() {
  // Remove the default encryption configuration variable.
  variable_del('encrypted_files_encryption_config');
}

/**
 * Implements hook_requirements().
 */
function encrypted_files_requirements($phase) {
  $requirements = array();
  // Ensure translations don't break during installation.
  $t = get_t();
  // Ensure private directory is writable.
  $requirements['encrypted_files_private_write'] = array(
    'title' => $t('Encrypted Files private filesystem access'),
  );
  // Make sure private directory is set up and is writable.
  $private_directory = variable_get('file_private_path', NULL);
  if (!isset($private_directory) ||
      !is_dir($private_directory) ||
      !is_writable($private_directory)) {
    $requirements['encrypted_files_private_write']['description']
      = $t('Your private files directory is not configured properly or
        is not writable. Encrypted Files must be able to write its
        files to this directory in order to install and run.');
    $requirements['encrypted_files_private_write']['severity']
      = REQUIREMENT_ERROR;
    if ($phase == 'runtime') {
      $requirements['encrypted_files_private_write']['value'] = $t('No access');
    }
  }
  else {
    if ($phase == 'runtime') {
      $requirements['encrypted_files_private_write']['value']
        = $t('Has access');
    }
  }

  // Runtime-only checking.
  if ($phase == 'runtime') {
    // Create Encrypted Files directory if it doesn't exist.
    $ef_directory = $private_directory . '/' . ENCRYPTED_FILES_DIRECTORY;
    $directory_exists = file_exists($ef_directory);
    if (!$directory_exists) {
      $directory_exists = mkdir($ef_directory, 0755);
    }
    // Make sure directory created successfully and is writable.
    $requirements['encrypted_files_directory_write'] = array(
      'title' => $t('Encrypted Files file directory access'),
    );
    if (!$directory_exists ||
        !is_dir($ef_directory) ||
        !is_writable($ef_directory)) {
      $requirements['encrypted_files_directory_write']['description']
        = $t('Encrypted Files could not access its file directory. Please
          make sure that the Encrypted Files directory within the private
          directory is writable.');
      $requirements['encrypted_files_directory_write']['severity']
        = REQUIREMENT_ERROR;
      $requirements['encrypted_files_directory_write']['value']
        = $t('No access');
    }
    else {
      $requirements['encrypted_files_directory_write']['value']
        = $t('Has access');
    }
  }

  return $requirements;
}
