PageRenderTime 25ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/source/application/controller/Master/DocumentController.php

http://sharebooks.googlecode.com/
PHP | 198 lines | 168 code | 24 blank | 6 comment | 23 complexity | 02a2e379e1e42ca9b1cd21c87887f778 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. class Master_DocumentController extends TvcController
  3. {
  4. // specific which menu will be highlighted
  5. const MENU_ITEM = Parameter::MENU_DOCUMENT;
  6. public function indexAction()
  7. {
  8. $smarty = TVC::load('smarty');
  9. $bct = new BCT('document');
  10. $array_files = File::getFileList(File::IS_VISIBLE);
  11. $array_subject = Subject::getSubjectCodeList();
  12. $smarty->assign('bct', $bct);
  13. $smarty->assign('array_subject', $array_subject);
  14. $smarty->assign('array_files', $array_files);
  15. $smarty->display('master/document_download.html');
  16. }
  17. public function downloadFileAction()
  18. {
  19. $md5_id = TVC_Request::get('f');
  20. $file = File::getFileById($md5_id);
  21. if (!$file){
  22. exit("File is not available");
  23. }
  24. $dir = $file->path;
  25. $file_name = $dir.$file->file_name;
  26. if (!file_exists($file_name)){
  27. exit("File is not available");
  28. }
  29. $pathinfo = pathinfo ($file_name);
  30. $ext = $pathinfo['extension'];
  31. if ($ext) {
  32. $ctype = File::$mine_types["$ext"];
  33. }
  34. if (!$ctype) {
  35. $ctype="application/force-download";
  36. }
  37. // set headers
  38. header("Pragma: public");
  39. header("Expires: 0");
  40. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  41. header("Cache-Control: private");
  42. header("Content-Description: File Transfer");
  43. header("Content-Type: $ctype");
  44. header("Content-Disposition: attachment; filename=\"".basename("$file->file_name")."\"");
  45. header("Content-Transfer-Encoding: binary");
  46. header("Content-Length: " . @filesize("$file->file_name"));
  47. $fd = fopen($file_name, 'rb');
  48. if($fd == false)
  49. {
  50. die("<font color=red>ERROR: File not found.</font>");
  51. }
  52. sleep(1);
  53. session_write_close();
  54. ob_flush();
  55. flush();
  56. while(!feof($fd)) {
  57. $buffer = fread($fd, 4096);
  58. print $buffer;
  59. }
  60. fclose ($fd);
  61. exit;
  62. }
  63. public function uploadAction() {
  64. $smarty = TVC::load('smarty');
  65. $code_subject = TVC_Request::get('code_subject');
  66. $code_class = TVC_Request::get('code_class');
  67. $bct = new BCT('document_upload');
  68. $file = new File();
  69. if (TVC_Request::get('act')) {
  70. $file->code_subject = $code_subject;
  71. $file->code_class = $code_class;
  72. $files = $_FILES["files"];
  73. $file->is_visible = Parameter::$params['IS_VISIBLE_UPLOADED_FILE'];
  74. if ($file->validateInput($files)) {
  75. $arr_id = array();
  76. foreach ($files['name'] as $key=>$filename) {
  77. if ($filename) {
  78. $fname = $filename;
  79. $fextension = '';
  80. if (strrpos($filename, '.') > 0) {
  81. $fextension = strtolower(substr($filename, strrpos($filename, '.')+1, strlen($filename)));
  82. }
  83. $fsize = $files['size'][$key];
  84. $file->file_type = $fextension;
  85. $file->file_size = $fsize;
  86. $file->uploaded_date = date('Y-m-d H:i:s');
  87. $current_user = unserialize(TVC_Session::get('user_serialize'));
  88. $file->id_user = $current_user->id;
  89. if (!Subject::isExistByCode($code_subject)) {
  90. $code_subject = File::OTHER;
  91. $file->code_subject = $code_subject;
  92. }
  93. $dir = FTP_DOCUMENT_DIR.$code_subject.'/';
  94. $dir2 = DOCUMENT_DIR.$code_subject.'/';
  95. $file->path = $dir2;
  96. $file->name = $filename;
  97. if($file->insert()) {
  98. if ($fextension) {
  99. $filename = substr($filename, 0, strrpos($filename, '.')).'_'.$file->id.'.'.$fextension;
  100. } else {
  101. $filename = $filename.'_'.$file->id;
  102. }
  103. $arr_id[]= $file->id;
  104. }
  105. //if (!is_dir($dir2)) {
  106. // mkdir($dir2, 0777);
  107. //}
  108. //if (@move_uploaded_file($files["tmp_name"][$key], $dir2.$filename)) {
  109. if (File::uploadFTP($files["tmp_name"][$key], $dir.$filename, $dir, $dir2)) {
  110. $file->file_name = $filename;
  111. $file->update();
  112. } else {
  113. $file->delete();
  114. ErrorHandler::add('_MSG_UPLOAD_FAILED');
  115. }
  116. }
  117. }
  118. TVC::redirect($bct->map['document_upload_success']['url_default'].'id_files/'.implode(",",$arr_id));
  119. }
  120. }
  121. $class = Classes::getClassByCode(Parameter::$params['CODE_B2CQ3A']);
  122. $subject = Subject::getSubjectList('', $class->code);
  123. $smarty->assign('bct', $bct);
  124. $smarty->assign('subject', $subject);
  125. $smarty->assign('code_subject', $code_subject);
  126. $smarty->assign('code_class', $code_class);
  127. $smarty->assign('class', $class);
  128. $smarty->display('master/document_upload.html');
  129. }
  130. public function sendAction() {
  131. $smarty = TVC::load('smarty');
  132. $id_files = TVC_Request::get('id_files');
  133. $bct = new BCT('document_upload_success');
  134. if (!File::isExistsByIds(explode(",",$id_files))) {
  135. TVC::redirect($bct->getBackLink());
  136. }
  137. $email = new Email();
  138. $email_3a = TVC_Request::get('email_3a');
  139. $error = false;
  140. if (TVC_Request::get('act')) {
  141. $email->content = TVC_Request::get('content');
  142. $email->subject = TVC_Request::get('subject');
  143. $email->from_email = TVC_Request::get('from_email');
  144. $email->to_email = TVC_Request::get('to_email');
  145. if ($email->validateInput($email_3a)) {
  146. if($email_3a){
  147. if ($email->to_email){
  148. $email->to_email.=",".Parameter::$params['EMAIL_3A'];
  149. } else {
  150. $email->to_email.= Parameter::$params['EMAIL_3A'];
  151. }
  152. }
  153. $email->insert();
  154. foreach(explode(",", $id_files) as $id_file) {
  155. $file_email = new FileEmail();
  156. $file_email->id_file= $id_file;
  157. $file_email->id_email= $email->id;
  158. $file_email->insert();
  159. }
  160. $file = File::getFileByIds($id_files);
  161. $email->sendEmailUpload($email, $file, 'master/mails/upload-mail-'.TVC_MultiLanguage::getLanguage().'.tpl');
  162. TVC::redirect($bct->getBackLink());
  163. } else {
  164. $error = true;
  165. }
  166. }
  167. $smarty->assign('bct', $bct);
  168. $smarty->assign('email_3a', $email_3a);
  169. $smarty->assign('email', $email);
  170. $smarty->assign('error', $error);
  171. $smarty->assign('id_files', $id_files);
  172. $smarty->display('master/document_upload_success.html');
  173. }
  174. }