You are here

function download_download in Download 7

Same name and namespace in other branches
  1. 7.2 download.module \download_download()
1 string reference to 'download_download'
download_menu in ./download.module
Implements hook_menu().

File

./download.module, line 201
Handles module administration and download link

Code

function download_download($field_info) {
  $prefix = array_shift(explode('.', $field_info));
  list($nid, $delta) = explode('-', $prefix);
  $lib_path = libraries_get_path('pclzip');
  if (!is_dir($lib_path)) {
    drupal_goto('node/' . $nid);
  }
  include $lib_path . '/pclzip.lib.php';
  $archive = new PclZip(file_directory_temp() . '/' . $nid . '-' . $delta . '.zip');
  $files = array();
  $node = node_load($nid);
  $fields = $node->field_download[LANGUAGE_NONE][$delta]['download_fields'];
  $fieldnames = array_filter(explode(';', $fields));
  foreach ($fieldnames as $fieldname) {
    if (isset($node->{$fieldname})) {
      foreach ($node->{$fieldname} as $field_array) {
        foreach ($field_array as $field) {
          $files[] = drupal_realpath($field['uri']);
        }
      }
    }
  }
  $archive
    ->add($files, PCLZIP_OPT_REMOVE_ALL_PATH);
  header("Content-Type: application/force-download");
  header('Content-Description: File Transfer');
  readfile(file_directory_temp() . '/' . $nid . '-' . $delta . '.zip');
  exit;
}