-
Notifications
You must be signed in to change notification settings - Fork 3
/
full_download.inc
executable file
·129 lines (126 loc) · 4.77 KB
/
full_download.inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
// $Id$
function om_flowsheet_download_full_project()
{
global $user;
$flowsheet_id = arg(4);
$root_path = om_flowsheet_path();
$query = db_select('om_flowsheet_proposal');
$query->fields('om_flowsheet_proposal');
$query->condition('id', $flowsheet_id);
$flowsheet_q = $query->execute();
$flowsheet_data = $flowsheet_q->fetchObject();
$FLOWSHEET_PATH = $flowsheet_data->directory_name . '/';
/* zip filename */
$zip_filename = $root_path . 'zip-' . time() . '-' . rand(0, 999999) . '.zip';
//var_dump($zip_filename);die;
/* creating zip archive on the server */
$zip = new ZipArchive();
$zip->open($zip_filename, ZipArchive::CREATE);
$query = db_select('om_flowsheet_proposal');
$query->fields('om_flowsheet_proposal');
$query->condition('id', $flowsheet_id);
$flowsheet_udc_q = $query->execute();
$query = db_select('om_flowsheet_submitted_abstracts_file');
$query->fields('om_flowsheet_submitted_abstracts_file');
$query->condition('proposal_id', $flowsheet_id);
$flowsheet_f_q = $query->execute();
while ($flowsheet_f_row = $flowsheet_f_q->fetchObject()) {
$zip->addFile($root_path . $FLOWSHEET_PATH . '/' . $flowsheet_f_row->filepath, $FLOWSHEET_PATH . str_replace(' ', '_', basename($flowsheet_f_row->filename)));
} //$flowsheet_f_row = $flowsheet_f_q->fetchObject()
$zip_file_count = $zip->numFiles;
//var_dump($zip_file_count);die;
$zip->close();
//var_dump(filesize($zip_filename));die;
if ($zip_file_count > 0) {
if ($user->uid) {
/* download zip file */
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename="' . str_replace(' ', '_', $flowsheet_data->project_title) . '.zip"');
header('Content-Length: ' . filesize($zip_filename));
readfile($zip_filename);
ob_end_flush();
ob_clean();
flush();
unlink($zip_filename);
} //$user->uid
else {
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename="' . str_replace(' ', '_', $flowsheet_data->project_title) . '.zip"');
header('Content-Length: ' . filesize($zip_filename));
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
readfile($zip_filename);
ob_end_flush();
ob_clean();
flush();
unlink($zip_filename);
}
} //$zip_file_count > 0
else {
drupal_set_message("There are no flowsheet project in this proposal to download", 'error');
drupal_goto('chemical/flowsheeting-project/full-download/project');
}
}
function om_flowsheet_download_completed_project()
{
global $user;
$flowsheet_id = arg(4);
$root_path = om_flowsheet_path();
$query = db_select('om_flowsheet_proposal');
$query->fields('om_flowsheet_proposal');
$query->condition('id', $flowsheet_id);
$flowsheet_q = $query->execute();
$flowsheet_data = $flowsheet_q->fetchObject();
$FLOWSHEET_PATH = $flowsheet_data->directory_name . '/';
/* zip filename */
$zip_filename = $root_path . 'zip-' . time() . '-' . rand(0, 999999) . '.zip';
var_dump($zip_filename);die;
/* creating zip archive on the server */
$zip = new ZipArchive();
$zip->open($zip_filename, ZipArchive::CREATE);
$query = db_select('om_flowsheet_proposal');
$query->fields('om_flowsheet_proposal');
$query->condition('id', $flowsheet_id);
$flowsheet_udc_q = $query->execute();
$query = db_select('om_flowsheet_submitted_abstracts_file');
$query->fields('om_flowsheet_submitted_abstracts_file');
$query->condition('proposal_id', $flowsheet_id);
$flowsheet_f_q = $query->execute();
while ($flowsheet_f_row = $flowsheet_f_q->fetchObject()) {
$zip->addFile($root_path . $FLOWSHEET_PATH . '/' . $flowsheet_f_row->filepath, str_replace(' ', '_', basename($flowsheet_f_row->filename)));
} //$flowsheet_f_row = $flowsheet_f_q->fetchObject()
$zip_file_count = $zip->numFiles;
$zip->close();
if ($zip_file_count > 0) {
if ($user->uid) {
/* download zip file */
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename="' . str_replace(' ', '_', $flowsheet_data->project_title) . '.zip"');
header('Content-Length: ' . filesize($zip_filename));
ob_end_flush();
ob_clean();
flush();
readfile($zip_filename);
unlink($zip_filename);
} //$user->uid
else {
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename="' . str_replace(' ', '_', $flowsheet_data->project_title) . '.zip"');
header('Content-Length: ' . filesize($zip_filename));
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
ob_end_flush();
ob_clean();
flush();
readfile($zip_filename);
unlink($zip_filename);
}
} //$zip_file_count > 0
else {
drupal_set_message("There are no flowsheet project in this proposal to download", 'error');
drupal_goto('chemical/flowsheeting-project/om-flowsheet-run');
}
}