PageRenderTime 45ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/source/application/controller/Admin/DocumentController.php

http://sharebooks.googlecode.com/
PHP | 421 lines | 329 code | 49 blank | 43 comment | 61 complexity | 65185fa25b1f4b57a4d47163c5f9a7a8 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. class Admin_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();
  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('admin/document_download.html');
  16. }
  17. /*
  18. public function downloadFileAction()
  19. {
  20. $md5_id = TVC_Request::get('f');
  21. $file = File::getFileById($md5_id);
  22. if (!$file){
  23. exit("File is not available");
  24. }
  25. $dir = $file->path;
  26. $file_name = $dir.$file->name;
  27. if (!file_exists($file_name)){
  28. exit("File is not available");
  29. }
  30. $ctype="application/force-download";
  31. // set headers
  32. header("Pragma: public");
  33. header("Expires: 0");
  34. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  35. header("Cache-Control: private");
  36. header("Content-Description: File Transfer");
  37. header("Content-Type: $ctype");
  38. header("Content-Disposition: attachment; filename=\"".basename("$file->name")."\"");
  39. header("Content-Transfer-Encoding: binary");
  40. header("Content-Length: " . @filesize("$file->name"));
  41. @readfile($file_name);
  42. die();
  43. }*/
  44. public function downloadFileAction()
  45. {
  46. $md5_id = TVC_Request::get('f');
  47. $file = File::getFileById($md5_id);
  48. if (!$file){
  49. exit("File is not available");
  50. }
  51. $dir = $file->path;
  52. $file_name = $dir.$file->file_name;
  53. if (!file_exists($file_name)){
  54. exit("File is not available");
  55. }
  56. $pathinfo = pathinfo ($file_name);
  57. $ext = $pathinfo['extension'];
  58. if ($ext) {
  59. $ctype = File::$mine_types["$ext"];
  60. }
  61. if (!$ctype) {
  62. $ctype="application/force-download";
  63. }
  64. // set headers
  65. header("Pragma: public");
  66. header("Expires: 0");
  67. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  68. header("Cache-Control: private");
  69. header("Content-Description: File Transfer");
  70. header("Content-Type: $ctype");
  71. header("Content-Disposition: attachment; filename=\"".basename("$file->file_name")."\"");
  72. header("Content-Transfer-Encoding: binary");
  73. header("Content-Length: " . @filesize("$file->file_name"));
  74. $fd = fopen($file_name, 'rb');
  75. if($fd == false)
  76. {
  77. die("<font color=red>ERROR: File not found.</font>");
  78. }
  79. sleep(1);
  80. session_write_close();
  81. ob_flush();
  82. flush();
  83. while(!feof($fd)) {
  84. $buffer = fread($fd, 4096);
  85. print $buffer;
  86. }
  87. fclose ($fd);
  88. exit;
  89. }
  90. public function uploadAction() {
  91. $smarty = TVC::load('smarty');
  92. $code_subject = TVC_Request::get('code_subject');
  93. $code_class = TVC_Request::get('code_class');
  94. $bct = new BCT('document_upload');
  95. if (TVC_Request::getString('parent_page')) {
  96. $bct = new BCT('document_upload_2');
  97. }
  98. $file = new File();
  99. if (TVC_Request::get('act')) {
  100. $file->code_subject = $code_subject;
  101. $file->code_class = $code_class;
  102. $files = $_FILES["files"];
  103. $file->is_visible = Parameter::$params['IS_VISIBLE_UPLOADED_FILE'];
  104. if ($file->validateInput($files)) {
  105. $arr_id = array();
  106. foreach ($files['name'] as $key=>$filename) {
  107. if ($filename) {
  108. $fname = $filename;
  109. $fextension = '';
  110. if (strrpos($filename, '.') > 0) {
  111. $fextension = strtolower(substr($filename, strrpos($filename, '.')+1, strlen($filename)));
  112. }
  113. $fsize = $files['size'][$key];
  114. $file->file_type = $fextension;
  115. $file->file_size = $fsize;
  116. $file->uploaded_date = date('Y-m-d H:i:s');
  117. $current_user = unserialize(TVC_Session::get('user_serialize'));
  118. $file->id_user = $current_user->id;
  119. if (!Subject::isExistByCode($code_subject)) {
  120. $code_subject = File::OTHER;
  121. $file->code_subject = $code_subject;
  122. }
  123. $dir = FTP_DOCUMENT_DIR.$code_subject.'/';
  124. $dir2 = DOCUMENT_DIR.$code_subject.'/';
  125. $file->path = $dir2;
  126. $file->name = $filename;
  127. if($file->insert()) {
  128. if ($fextension) {
  129. $filename = substr($filename, 0, strrpos($filename, '.')).'_'.$file->id.'.'.$fextension;
  130. } else {
  131. $filename = $filename.'_'.$file->id;
  132. }
  133. $arr_id[]= $file->id;
  134. }
  135. if (!is_dir($dir2)) {
  136. mkdir($dir2, 0777);
  137. }
  138. if (@move_uploaded_file($files["tmp_name"][$key], $dir2.$filename)) {
  139. //if (File::uploadFTP($files["tmp_name"][$key], $dir.$filename, $dir, $dir2)) {
  140. $file->file_name = $filename;
  141. $file->update();
  142. } else {
  143. $file->delete();
  144. ErrorHandler::add('_MSG_UPLOAD_FAILED');
  145. }
  146. }
  147. }
  148. if (TVC_Request::getString('parent_page')) {
  149. $parent_page = "parent_page/".TVC_Request::get('parent_page');
  150. }
  151. TVC::redirect($bct->map['document_upload_success']['url_default'].$parent_page.'/id_files/'.implode(",",$arr_id));
  152. }
  153. }
  154. $class = Classes::getClassByCode(Parameter::$params['CODE_B2CQ3A']);
  155. $subject = Subject::getSubjectList('', $class->code);
  156. $smarty->assign('bct', $bct);
  157. $smarty->assign('subject', $subject);
  158. $smarty->assign('code_subject', $code_subject);
  159. $smarty->assign('code_class', $code_class);
  160. $smarty->assign('class', $class);
  161. $smarty->display('admin/document_upload.html');
  162. }
  163. public function sendAction() {
  164. $smarty = TVC::load('smarty');
  165. $id_files = TVC_Request::get('id_files');
  166. $bct = new BCT('document_upload_success');
  167. if (TVC_Request::getString('parent_page')) {
  168. $bct = new BCT('document_upload_success_2');
  169. }
  170. if (!File::isExistsByIds(explode(",",$id_files))) {
  171. TVC::redirect($bct->getBackLink());
  172. }
  173. $email = new Email();
  174. $email_3a = TVC_Request::get('email_3a');
  175. $error = false;
  176. if (TVC_Request::get('act')) {
  177. $email->content = TVC_Request::get('content');
  178. $email->subject = TVC_Request::get('subject');
  179. $email->from_email = TVC_Request::get('from_email');
  180. $email->to_email = TVC_Request::get('to_email');
  181. if ($email->validateInput($email_3a)) {
  182. if($email_3a){
  183. if ($email->to_email){
  184. $email->to_email.=",".Parameter::$params['EMAIL_3A'];
  185. } else {
  186. $email->to_email.= Parameter::$params['EMAIL_3A'];
  187. }
  188. }
  189. $email->insert();
  190. foreach(explode(",", $id_files) as $id_file) {
  191. $file_email = new FileEmail();
  192. $file_email->id_file= $id_file;
  193. $file_email->id_email= $email->id;
  194. $file_email->insert();
  195. }
  196. $file = File::getFileByIds($id_files);
  197. $email->sendEmailUpload($email, $file, 'admin/mails/upload-mail-'.TVC_MultiLanguage::getLanguage().'.tpl');
  198. TVC::redirect($bct->getBackLink());
  199. } else {
  200. $error = true;
  201. }
  202. }
  203. $smarty->assign('bct', $bct);
  204. $smarty->assign('email_3a', $email_3a);
  205. $smarty->assign('email', $email);
  206. $smarty->assign('error', $error);
  207. $smarty->assign('id_files', $id_files);
  208. $smarty->display('admin/document_upload_success.html');
  209. }
  210. public function editAction() {
  211. $smarty = TVC::load('smarty');
  212. $bct = new BCT('document_edit');
  213. $id = TVC_Request::getIntNumber('id');
  214. $code_subject = TVC_Request::get('code_subject');
  215. $code_class = TVC_Request::get('code_class');
  216. $is_visible = TVC_Request::getIntNumber('is_visible');
  217. $file = new File();
  218. if (!$file->get($id)) {
  219. TVC::redirect($bct->getBackLink());
  220. }
  221. if (TVC_Request::get('act')) {
  222. $old_code_subject = $file->code_subject;
  223. $file->code_subject = $code_subject;
  224. $file->code_class = $code_class;
  225. $file->is_visible = $is_visible;
  226. $files = $_FILES["file"];
  227. if ($file->validateInput($files)) {
  228. if ($files['name']) {
  229. $fileinfo = pathinfo($files['name']);
  230. $fextension = $fileinfo['extension'];
  231. $file->file_type = $fextension;
  232. $filename = $files['name'];
  233. $file->size = $files['size'];
  234. $file->uploaded_date = date('Y-m-d H:i:s');
  235. $file->is_visible = $is_visible;
  236. $subject = new Subject();
  237. $subject->get($code_subject);
  238. if ($subject->code) {
  239. $code_subject = $subject->code;
  240. } else {
  241. $code_subject = File::OTHER;
  242. }
  243. $dir = DOCUMENT_DIR.$code_subject.'/';
  244. if ($fextension) {
  245. $filename = substr($filename, 0, strrpos($filename, '.')).'_'.$file->id.'.'.$fextension;
  246. } else {
  247. $filename = $filename.'_'.$file->id;
  248. }
  249. if (!is_dir($dir)) {
  250. mkdir($dir, 0777);
  251. }
  252. if (file_exists($file->path.$file->name)) {
  253. unlink($file->path.$file->name);
  254. if ($dir != $file->path && !self::getDirectoryList($file->path)) {
  255. rmdir($file->path);
  256. }
  257. }
  258. if (@move_uploaded_file($files["tmp_name"], $dir.$filename)) {
  259. $file->name = $filename;
  260. $file->path = $dir;
  261. $file->update();
  262. } else {
  263. ErrorHandler::add('_MSG_UPLOAD_FAILED');
  264. }
  265. } else {
  266. if ($code_subject != $old_code_subject) {
  267. $subject = new Subject();
  268. $subject->get($code_subject);
  269. if ($subject->code) {
  270. $code_subject = $subject->code;
  271. } else {
  272. $code_subject = File::OTHER;
  273. }
  274. $dir = DOCUMENT_DIR.$code_subject.'/';
  275. if (!is_dir($dir)) {
  276. mkdir($dir, 0777);
  277. }
  278. if (file_exists($file->path.$file->name)) {
  279. if (@copy($file->path.$file->name, $dir.$file->name)) {
  280. unlink($file->path.$file->name);
  281. if (!self::getDirectoryList($file->path)) {
  282. rmdir($file->path);
  283. }
  284. $file->path = $dir;
  285. $file->update();
  286. }
  287. } else {
  288. ErrorHandler::add('_MSG_NOT_AVAIBLE_FILE');
  289. }
  290. } else {
  291. $file->update();
  292. }
  293. }
  294. TVC::redirect($bct->getBackLink());
  295. }
  296. }
  297. $subject_class = SubjectClass::getSubjectClassList();
  298. $class = Classes::getClassList();
  299. $subject = Subject::getSubjectList();
  300. $smarty->assign('bct', $bct);
  301. $smarty->assign('file', $file);
  302. $smarty->assign('subject', $subject);
  303. $smarty->assign('class', $class);
  304. $smarty->assign('subject_class', $subject_class);
  305. $smarty->assign('code_subject', $code_subject);
  306. $smarty->assign('is_visible', $is_visible);
  307. $smarty->display('admin/document_edit.html');
  308. }
  309. public function listAction() {
  310. $bct = new BCT('document_list');
  311. $smarty = TVC::load('smarty');
  312. $code_subject = TVC_Request::get('code_subject');
  313. $code_class = TVC_Request::get('code_class');
  314. $name = TVC_Request::getString('name');
  315. $array_files = File::getFileList(0, $name, $code_class, $code_subject);
  316. $array_subject = Subject::getSubjectCodeList();
  317. //$subject_class = SubjectClass::getSubjectClassList();
  318. //$class = Classes::getClassList();
  319. $subject = Subject::getSubjectList();
  320. $smarty->assign('bct', $bct);
  321. $smarty->assign('name', $name);
  322. $smarty->assign('code_subject', $code_subject);
  323. $smarty->assign('code_class', $code_class);
  324. $smarty->assign('subject', $subject);
  325. //$smarty->assign('class', $class);
  326. //$smarty->assign('subject_class', $subject_class);
  327. $smarty->assign('array_subject', $array_subject);
  328. $smarty->assign('array_files', $array_files);
  329. $smarty->display('admin/document_list.html');
  330. }
  331. public function setFileVisible($id, $value)
  332. {
  333. return File::setVisible($id, $value)?"1":"0";
  334. }
  335. public function deleteAction() {
  336. $bct = new BCT('document_delete');
  337. $id = TVC_Request::getIntNumber('id');
  338. $file = new File();
  339. if (!$file->get($id)) {
  340. TVC::redirect($bct->getBackLink());
  341. }
  342. if (file_exists($file->path.$file->name)) {
  343. unlink($file->path.$file->name);
  344. if (!self::getDirectoryList($file->path)) {
  345. rmdir($file->path);
  346. }
  347. }
  348. $file->delete();
  349. TVC::redirect($bct->getBackLink());
  350. }
  351. function getDirectoryList($directory)
  352. {
  353. // create an array to hold directory list
  354. $results = array();
  355. // create a handler for the directory
  356. $handler = opendir($directory);
  357. // open directory and walk through the filenames
  358. while ($file = readdir($handler)) {
  359. // if file isn't this directory or its parent, add it to the results
  360. if ($file != "." && $file != "..") {
  361. $results[] = $file;
  362. }
  363. }
  364. // tidy up: close the handler
  365. closedir($handler);
  366. // done!
  367. return $results;
  368. }
  369. }