fields('textbook_companion_example_files'); $query->condition('id', $example_file_id); $query->range(0, 1); $result = $query->execute(); $example_file_data = $result->fetchObject(); header('Content-Type: ' . $example_file_data->filemime); header('Content-disposition: attachment; filename="' . $example_file_data->filename . '"'); header('Content-Length: ' . filesize($root_path . $example_file_data->filepath)); readfile($root_path . $example_file_data->filepath); } function textbook_companion_download_dependency_file() { $dependency_file_id = arg(2); $root_path = textbook_companion_path(); /*$dependency_file_q = db_query("SELECT * FROM {textbook_companion_dependency_files} WHERE id = %d LIMIT 1", $dependency_file_id); $dependency_file_data = db_fetch_object($dependency_file_q);*/ $query = db_select('textbook_companion_dependency_files'); $query->fields('textbook_companion_dependency_files'); $query->condition('id', $dependency_file_id); $query->range(0, 1); $result = $query->execute(); $dependency_file_data = $result->fetchObject(); header('Content-Type: ' . $dependency_file_data->filemime); header('Content-disposition: attachment; filename="' . $dependency_file_data->filename . '"'); header('Content-Length: ' . filesize($root_path . $dependency_file_data->filepath)); ob_clean(); readfile($root_path . $dependency_file_data->filepath); exit; } function textbook_companion_download_example() { $example_id = arg(2); $root_path = textbook_companion_path(); /* get example data */ /*$example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE id = %d", $example_id); $example_data = db_fetch_object($example_q);*/ $query = db_select('textbook_companion_example'); $query->fields('textbook_companion_example'); $query->condition('id', $example_id); $result = $query->execute(); $example_data = $result->fetchObject(); /*$chapter_q = db_query("SELECT * FROM {textbook_companion_chapter} WHERE id = %d", $example_data->chapter_id); $chapter_data = db_fetch_object($chapter_q);*/ $query = db_select('textbook_companion_chapter'); $query->fields('textbook_companion_chapter'); $query->condition('id', $example_data->chapter_id); $result = $query->execute(); $chapter_data = $result->fetchObject(); /*$example_files_q = db_query("SELECT * FROM {textbook_companion_example_files} WHERE example_id = %d", $example_id);*/ $query = db_select('textbook_companion_example_files'); $query->fields('textbook_companion_example_files'); $query->condition('example_id', $example_id); $example_files_q = $query->execute(); /*$example_dependency_files_q = db_query("SELECT * FROM {textbook_companion_example_dependency} WHERE example_id = %d", $example_id);*/ $query = db_select('textbook_companion_example_dependency'); $query->fields('textbook_companion_example_dependency'); $query->condition('example_id', $example_id); $example_dependency_files_q = $query->execute(); $EX_PATH = 'EX' . $example_data->number . '/'; /* zip filename */ $zip_filename = $root_path . 'zip-' . time() . '-' . rand(0, 999999) . '.zip'; /* creating zip archive on the server */ $zip = new ZipArchive(); $zip->open($zip_filename, ZipArchive::CREATE); while ($example_files_row = $example_files_q->fetchObject()) { $zip->addFile($root_path . $example_files_row->filepath, $EX_PATH . $example_files_row->filename); } //$example_files_row = $example_files_q->fetchObject() /* dependency files */ while ($example_dependency_files_row = $example_dependency_files_q->fetchObject()) { /*$dependency_file_data = db_fetch_object(db_query("SELECT * FROM {textbook_companion_dependency_files} WHERE id = %d LIMIT 1", $example_dependency_files_row->dependency_id));*/ $query = db_select('textbook_companion_dependency_files'); $query->fields('textbook_companion_dependency_files'); $query->condition('id', $example_dependency_files_row->dependency_id); $query->range(0, 1); $result = $query->execute(); $dependency_file_data = $result->fetchObject(); if ($dependency_file_data) $zip->addFile($root_path . $dependency_file_data->filepath, $EX_PATH . 'DEPENDENCIES/' . $dependency_file_data->filename); } //$example_dependency_files_row = $example_dependency_files_q->fetchObject() $zip_file_count = $zip->numFiles; $zip->close(); if ($zip_file_count > 0) { /* download zip file */ header('Content-Type: application/zip'); header('Content-disposition: attachment; filename="EX' . $example_data->number . '.zip"'); header('Content-Length: ' . filesize($zip_filename)); ob_end_flush(); ob_clean(); flush(); readfile($zip_filename); unlink($zip_filename); } //$zip_file_count > 0 else { drupal_set_message("There are no files in this examples to download", 'error'); drupal_goto('textbook_run'); } } function textbook_companion_download_chapter() { $chapter_id = arg(2); // var_dump($chapter_id);die; $root_path = textbook_companion_path(); /* get example data */ /*$chapter_q = db_query("SELECT * FROM {textbook_companion_chapter} WHERE id = %d", $chapter_id); $chapter_data = db_fetch_object($chapter_q);*/ $query = db_select('textbook_companion_chapter'); $query->fields('textbook_companion_chapter'); $query->condition('id', $chapter_id); $result = $query->execute(); $chapter_data = $result->fetchObject(); $CH_PATH = 'CH' . $chapter_data->number . '/'; /* zip filename */ $zip_filename = $root_path . 'zip-' . time() . '-' . rand(0, 999999) . '.zip'; /* creating zip archive on the server */ $zip = new ZipArchive(); $zip->open($zip_filename, ZipArchive::CREATE); /*$example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE chapter_id = %d AND approval_status = 1", $chapter_id);*/ $query = db_select('textbook_companion_example'); $query->fields('textbook_companion_example'); $query->condition('chapter_id', $chapter_id); $query->condition('approval_status', 1); $example_q = $query->execute(); while ($example_row = $example_q->fetchObject()) { $EX_PATH = 'EX' . $example_row->number . '/'; /*$example_files_q = db_query("SELECT * FROM {textbook_companion_example_files} WHERE example_id = %d", $example_row->id);*/ $query = db_select('textbook_companion_example_files'); $query->fields('textbook_companion_example_files'); $query->condition('example_id', $example_row->id); $example_files_q = $query->execute(); /*$example_dependency_files_q = db_query("SELECT * FROM {textbook_companion_example_dependency} WHERE example_id = %d", $example_row->id);*/ $query = db_select('textbook_companion_example_dependency'); $query->fields('textbook_companion_example_dependency'); $query->condition('example_id', $example_row->id); $example_dependency_files_q = $query->execute(); while ($example_files_row = $example_files_q->fetchObject()) { $zip->addFile($root_path . $example_files_row->filepath, $CH_PATH . $EX_PATH . $example_files_row->filename); } //$example_files_row = $example_files_q->fetchObject() /* dependency files */ while ($example_dependency_files_row = $example_dependency_files_q->fetchObject()) { /*$dependency_file_data = db_fetch_object(db_query("SELECT * FROM {textbook_companion_dependency_files} WHERE id = %d LIMIT 1", $example_dependency_files_row->dependency_id));*/ $query = db_select('textbook_companion_dependency_files'); $query->fields('textbook_companion_dependency_files'); $query->condition('id', $example_dependency_files_row->dependency_id); $query->range(0, 1); $result = $query->execute(); $dependency_file_data = $result->fetchObject(); if ($dependency_file_data) $zip->addFile($root_path . $dependency_file_data->filepath, $CH_PATH . $EX_PATH . 'DEPENDENCIES/' . $dependency_file_data->filename); } //$example_dependency_files_row = $example_dependency_files_q->fetchObject() } //$example_row = $example_q->fetchObject() $zip_file_count = $zip->numFiles; $zip->close(); if ($zip_file_count > 0) { /* download zip file */ header('Content-Type: application/zip'); header('Content-disposition: attachment; filename="CH' . $chapter_data->number . '.zip"'); header('Content-Length: ' . filesize($zip_filename)); ob_end_flush(); ob_clean(); flush(); readfile($zip_filename); unlink($zip_filename); } //$zip_file_count > 0 else { drupal_set_message("There are no examples in this chapter to download", 'error'); drupal_goto('textbook_run'); } } function textbook_companion_download_book() { $book_id = arg(2); $root_path = textbook_companion_path(); /* get example data */ $book_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE id = :book_id", array( ':book_id' => $book_id )); $book_data = $book_q->fetchObject(); $zipname = str_replace(' ', '_', ($book_data->book)); $BK_PATH = $zipname . '/'; /* zip filename */ $zip_filename = $root_path . 'zip-' . time() . '-' . rand(0, 999999) . '.zip'; /* creating zip archive on the server */ $zip = new ZipArchive; $zip->open($zip_filename, ZipArchive::CREATE); $chapter_q = db_query("SELECT * FROM {textbook_companion_chapter} WHERE preference_id = :book_id", array( ':book_id' => $book_id )); while ($chapter_row = $chapter_q->fetchObject()) { $CH_PATH = 'CH' . $chapter_row->number . '/'; $example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE chapter_id = :chapter_id AND approval_status = 1", array( ':chapter_id' => $chapter_row->id )); while ($example_row = $example_q->fetchObject()) { $EX_PATH = 'EX' . $example_row->number . '/'; $example_files_q = db_query("SELECT * FROM {textbook_companion_example_files} WHERE example_id = :id", array( ':id' => $example_row->id )); $example_dependency_files_q = db_query("SELECT * FROM {textbook_companion_example_dependency} WHERE example_id = :id", array( ':id' => $example_row->id )); while ($example_files_row = $example_files_q->fetchObject()) { $zip->addFile($root_path . $example_files_row->filepath, $BK_PATH . $CH_PATH . $EX_PATH . $example_files_row->filename); } //$example_files_row = $example_files_q->fetchObject() /* dependency files */ while ($example_dependency_files_row = $example_dependency_files_q->fetchObject()) { $query = db_query("SELECT * FROM {textbook_companion_dependency_files} WHERE id = :id LIMIT 1", array( ':id' => $example_dependency_files_row->dependency_id )); $dependency_file_data = $query->fetchObject(); if ($dependency_file_data) $zip->addFile($root_path . $dependency_file_data->filepath, $BK_PATH . $CH_PATH . $EX_PATH . 'DEPENDENCIES/' . $dependency_file_data->filename); } //$example_dependency_files_row = $example_dependency_files_q->fetchObject() $query = "SELECT * FROM textbook_companion_dependency_files WHERE preference_id = :preference_id"; $args = array( ':preference_id' => $book_id ); $result = db_query($query, $args); while ($row = $result->fetchObject()) { $zip->addFile($root_path . $row->filepath, $BK_PATH . 'DEPENDENCIES/' . $row->filename); } //$row = $result->fetchObject() } //$example_row = $example_q->fetchObject() } //$chapter_row = $chapter_q->fetchObject() $zip_file_count = $zip->numFiles; $zip->close(); if ($zip_file_count > 0) { /* download zip file */ global $user; if ($user->uid) { header('Content-Type: application/zip'); header('Content-disposition: attachment; filename="' . str_replace(' ', '_', ($book_data->book)) . '.zip"'); header('Content-Length: ' . filesize($zip_filename)); ob_clean(); readfile($zip_filename); unlink($zip_filename); } //$user->uid else { header('Content-Type: application/zip'); header('Content-disposition: attachment; filename="' . str_replace(' ', '_', ($book_data->book)) . '.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 examples in this book to download", 'error'); drupal_goto('textbook_run'); } } function textbook_companion_download_sample_code() { $proposal_id = arg(2); $root_path = textbook_companion_samplecode_path(); $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('id', $proposal_id); $query->range(0, 1); $result = $query->execute(); $example_file_data = $result->fetchObject(); $samplecodename = substr($example_file_data->samplefilepath, strrpos($example_file_data->samplefilepath, '/') + 1); header('Content-Type: application/zip'); header('Content-disposition: attachment; filename="' . $samplecodename . '"'); header('Content-Length: ' . filesize($root_path . $example_file_data->samplefilepath)); ob_clean(); readfile($root_path . $example_file_data->samplefilepath); }