/source/application/controller/Admin/DocumentController.php
PHP | 421 lines | 329 code | 49 blank | 43 comment | 61 complexity | 65185fa25b1f4b57a4d47163c5f9a7a8 MD5 | raw file
Possible License(s): LGPL-2.1
- <?php
- class Admin_DocumentController extends TvcController
- {
- // specific which menu will be highlighted
- const MENU_ITEM = Parameter::MENU_DOCUMENT;
- public function indexAction()
- {
- $smarty = TVC::load('smarty');
- $bct = new BCT('document');
- $array_files = File::getFileList();
- $array_subject = Subject::getSubjectCodeList();
-
- $smarty->assign('bct', $bct);
- $smarty->assign('array_subject', $array_subject);
- $smarty->assign('array_files', $array_files);
- $smarty->display('admin/document_download.html');
- }
- /*
- public function downloadFileAction()
- {
- $md5_id = TVC_Request::get('f');
- $file = File::getFileById($md5_id);
- if (!$file){
- exit("File is not available");
- }
- $dir = $file->path;
- $file_name = $dir.$file->name;
- if (!file_exists($file_name)){
- exit("File is not available");
- }
- $ctype="application/force-download";
- // set headers
- header("Pragma: public");
- header("Expires: 0");
- header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
- header("Cache-Control: private");
- header("Content-Description: File Transfer");
- header("Content-Type: $ctype");
- header("Content-Disposition: attachment; filename=\"".basename("$file->name")."\"");
- header("Content-Transfer-Encoding: binary");
- header("Content-Length: " . @filesize("$file->name"));
- @readfile($file_name);
- die();
- }*/
- public function downloadFileAction()
- {
- $md5_id = TVC_Request::get('f');
- $file = File::getFileById($md5_id);
- if (!$file){
- exit("File is not available");
- }
- $dir = $file->path;
- $file_name = $dir.$file->file_name;
- if (!file_exists($file_name)){
- exit("File is not available");
- }
- $pathinfo = pathinfo ($file_name);
- $ext = $pathinfo['extension'];
- if ($ext) {
- $ctype = File::$mine_types["$ext"];
- }
-
- if (!$ctype) {
- $ctype="application/force-download";
- }
-
- // set headers
- header("Pragma: public");
- header("Expires: 0");
- header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
- header("Cache-Control: private");
- header("Content-Description: File Transfer");
- header("Content-Type: $ctype");
- header("Content-Disposition: attachment; filename=\"".basename("$file->file_name")."\"");
- header("Content-Transfer-Encoding: binary");
- header("Content-Length: " . @filesize("$file->file_name"));
- $fd = fopen($file_name, 'rb');
-
- if($fd == false)
- {
- die("<font color=red>ERROR: File not found.</font>");
- }
- sleep(1);
- session_write_close();
- ob_flush();
- flush();
-
- while(!feof($fd)) {
- $buffer = fread($fd, 4096);
- print $buffer;
- }
-
- fclose ($fd);
- exit;
- }
-
- public function uploadAction() {
- $smarty = TVC::load('smarty');
- $code_subject = TVC_Request::get('code_subject');
- $code_class = TVC_Request::get('code_class');
- $bct = new BCT('document_upload');
- if (TVC_Request::getString('parent_page')) {
- $bct = new BCT('document_upload_2');
- }
- $file = new File();
-
- if (TVC_Request::get('act')) {
- $file->code_subject = $code_subject;
- $file->code_class = $code_class;
- $files = $_FILES["files"];
- $file->is_visible = Parameter::$params['IS_VISIBLE_UPLOADED_FILE'];
- if ($file->validateInput($files)) {
- $arr_id = array();
- foreach ($files['name'] as $key=>$filename) {
- if ($filename) {
- $fname = $filename;
- $fextension = '';
- if (strrpos($filename, '.') > 0) {
- $fextension = strtolower(substr($filename, strrpos($filename, '.')+1, strlen($filename)));
- }
- $fsize = $files['size'][$key];
-
- $file->file_type = $fextension;
- $file->file_size = $fsize;
- $file->uploaded_date = date('Y-m-d H:i:s');
- $current_user = unserialize(TVC_Session::get('user_serialize'));
- $file->id_user = $current_user->id;
- if (!Subject::isExistByCode($code_subject)) {
- $code_subject = File::OTHER;
- $file->code_subject = $code_subject;
- }
- $dir = FTP_DOCUMENT_DIR.$code_subject.'/';
- $dir2 = DOCUMENT_DIR.$code_subject.'/';
- $file->path = $dir2;
- $file->name = $filename;
- if($file->insert()) {
- if ($fextension) {
- $filename = substr($filename, 0, strrpos($filename, '.')).'_'.$file->id.'.'.$fextension;
- } else {
- $filename = $filename.'_'.$file->id;
- }
- $arr_id[]= $file->id;
- }
- if (!is_dir($dir2)) {
- mkdir($dir2, 0777);
- }
- if (@move_uploaded_file($files["tmp_name"][$key], $dir2.$filename)) {
- //if (File::uploadFTP($files["tmp_name"][$key], $dir.$filename, $dir, $dir2)) {
- $file->file_name = $filename;
- $file->update();
- } else {
- $file->delete();
- ErrorHandler::add('_MSG_UPLOAD_FAILED');
- }
- }
- }
- if (TVC_Request::getString('parent_page')) {
- $parent_page = "parent_page/".TVC_Request::get('parent_page');
- }
- TVC::redirect($bct->map['document_upload_success']['url_default'].$parent_page.'/id_files/'.implode(",",$arr_id));
- }
- }
-
- $class = Classes::getClassByCode(Parameter::$params['CODE_B2CQ3A']);
-
- $subject = Subject::getSubjectList('', $class->code);
-
- $smarty->assign('bct', $bct);
- $smarty->assign('subject', $subject);
- $smarty->assign('code_subject', $code_subject);
- $smarty->assign('code_class', $code_class);
- $smarty->assign('class', $class);
- $smarty->display('admin/document_upload.html');
- }
-
- public function sendAction() {
- $smarty = TVC::load('smarty');
- $id_files = TVC_Request::get('id_files');
- $bct = new BCT('document_upload_success');
- if (TVC_Request::getString('parent_page')) {
- $bct = new BCT('document_upload_success_2');
- }
- if (!File::isExistsByIds(explode(",",$id_files))) {
- TVC::redirect($bct->getBackLink());
- }
- $email = new Email();
- $email_3a = TVC_Request::get('email_3a');
- $error = false;
- if (TVC_Request::get('act')) {
- $email->content = TVC_Request::get('content');
- $email->subject = TVC_Request::get('subject');
- $email->from_email = TVC_Request::get('from_email');
- $email->to_email = TVC_Request::get('to_email');
- if ($email->validateInput($email_3a)) {
- if($email_3a){
- if ($email->to_email){
- $email->to_email.=",".Parameter::$params['EMAIL_3A'];
- } else {
- $email->to_email.= Parameter::$params['EMAIL_3A'];
- }
- }
- $email->insert();
-
- foreach(explode(",", $id_files) as $id_file) {
- $file_email = new FileEmail();
- $file_email->id_file= $id_file;
- $file_email->id_email= $email->id;
- $file_email->insert();
- }
- $file = File::getFileByIds($id_files);
- $email->sendEmailUpload($email, $file, 'admin/mails/upload-mail-'.TVC_MultiLanguage::getLanguage().'.tpl');
- TVC::redirect($bct->getBackLink());
- } else {
- $error = true;
- }
- }
-
- $smarty->assign('bct', $bct);
- $smarty->assign('email_3a', $email_3a);
- $smarty->assign('email', $email);
- $smarty->assign('error', $error);
- $smarty->assign('id_files', $id_files);
- $smarty->display('admin/document_upload_success.html');
- }
- public function editAction() {
- $smarty = TVC::load('smarty');
- $bct = new BCT('document_edit');
- $id = TVC_Request::getIntNumber('id');
- $code_subject = TVC_Request::get('code_subject');
- $code_class = TVC_Request::get('code_class');
- $is_visible = TVC_Request::getIntNumber('is_visible');
- $file = new File();
- if (!$file->get($id)) {
- TVC::redirect($bct->getBackLink());
- }
-
- if (TVC_Request::get('act')) {
- $old_code_subject = $file->code_subject;
- $file->code_subject = $code_subject;
- $file->code_class = $code_class;
- $file->is_visible = $is_visible;
-
- $files = $_FILES["file"];
- if ($file->validateInput($files)) {
- if ($files['name']) {
- $fileinfo = pathinfo($files['name']);
- $fextension = $fileinfo['extension'];
- $file->file_type = $fextension;
- $filename = $files['name'];
- $file->size = $files['size'];
- $file->uploaded_date = date('Y-m-d H:i:s');
- $file->is_visible = $is_visible;
-
- $subject = new Subject();
- $subject->get($code_subject);
- if ($subject->code) {
- $code_subject = $subject->code;
- } else {
- $code_subject = File::OTHER;
- }
- $dir = DOCUMENT_DIR.$code_subject.'/';
- if ($fextension) {
- $filename = substr($filename, 0, strrpos($filename, '.')).'_'.$file->id.'.'.$fextension;
- } else {
- $filename = $filename.'_'.$file->id;
- }
-
- if (!is_dir($dir)) {
- mkdir($dir, 0777);
- }
- if (file_exists($file->path.$file->name)) {
- unlink($file->path.$file->name);
- if ($dir != $file->path && !self::getDirectoryList($file->path)) {
- rmdir($file->path);
- }
- }
-
- if (@move_uploaded_file($files["tmp_name"], $dir.$filename)) {
- $file->name = $filename;
- $file->path = $dir;
- $file->update();
- } else {
- ErrorHandler::add('_MSG_UPLOAD_FAILED');
- }
- } else {
- if ($code_subject != $old_code_subject) {
- $subject = new Subject();
- $subject->get($code_subject);
- if ($subject->code) {
- $code_subject = $subject->code;
- } else {
- $code_subject = File::OTHER;
- }
- $dir = DOCUMENT_DIR.$code_subject.'/';
- if (!is_dir($dir)) {
- mkdir($dir, 0777);
- }
- if (file_exists($file->path.$file->name)) {
- if (@copy($file->path.$file->name, $dir.$file->name)) {
- unlink($file->path.$file->name);
- if (!self::getDirectoryList($file->path)) {
- rmdir($file->path);
- }
-
- $file->path = $dir;
- $file->update();
- }
- } else {
- ErrorHandler::add('_MSG_NOT_AVAIBLE_FILE');
- }
- } else {
- $file->update();
- }
- }
- TVC::redirect($bct->getBackLink());
- }
- }
- $subject_class = SubjectClass::getSubjectClassList();
- $class = Classes::getClassList();
- $subject = Subject::getSubjectList();
- $smarty->assign('bct', $bct);
- $smarty->assign('file', $file);
- $smarty->assign('subject', $subject);
- $smarty->assign('class', $class);
- $smarty->assign('subject_class', $subject_class);
- $smarty->assign('code_subject', $code_subject);
- $smarty->assign('is_visible', $is_visible);
- $smarty->display('admin/document_edit.html');
- }
-
- public function listAction() {
- $bct = new BCT('document_list');
- $smarty = TVC::load('smarty');
- $code_subject = TVC_Request::get('code_subject');
- $code_class = TVC_Request::get('code_class');
- $name = TVC_Request::getString('name');
- $array_files = File::getFileList(0, $name, $code_class, $code_subject);
- $array_subject = Subject::getSubjectCodeList();
-
- //$subject_class = SubjectClass::getSubjectClassList();
- //$class = Classes::getClassList();
- $subject = Subject::getSubjectList();
-
- $smarty->assign('bct', $bct);
- $smarty->assign('name', $name);
- $smarty->assign('code_subject', $code_subject);
- $smarty->assign('code_class', $code_class);
- $smarty->assign('subject', $subject);
- //$smarty->assign('class', $class);
- //$smarty->assign('subject_class', $subject_class);
- $smarty->assign('array_subject', $array_subject);
- $smarty->assign('array_files', $array_files);
- $smarty->display('admin/document_list.html');
- }
-
- public function setFileVisible($id, $value)
- {
- return File::setVisible($id, $value)?"1":"0";
- }
- public function deleteAction() {
- $bct = new BCT('document_delete');
- $id = TVC_Request::getIntNumber('id');
- $file = new File();
- if (!$file->get($id)) {
- TVC::redirect($bct->getBackLink());
- }
- if (file_exists($file->path.$file->name)) {
- unlink($file->path.$file->name);
- if (!self::getDirectoryList($file->path)) {
- rmdir($file->path);
- }
- }
- $file->delete();
- TVC::redirect($bct->getBackLink());
- }
-
- function getDirectoryList($directory)
- {
-
- // create an array to hold directory list
- $results = array();
-
- // create a handler for the directory
- $handler = opendir($directory);
-
- // open directory and walk through the filenames
- while ($file = readdir($handler)) {
-
- // if file isn't this directory or its parent, add it to the results
- if ($file != "." && $file != "..") {
- $results[] = $file;
- }
-
- }
-
- // tidy up: close the handler
- closedir($handler);
-
- // done!
- return $results;
-
- }
-
- }