Example #1
0
 /**
  * 获取文件编码及文件信息
  */
 public function getfilesbyidAction()
 {
     // 获取参数
     $request = $this->getRequest()->getParams();
     $id = $request['id'];
     $user_session = new Zend_Session_Namespace('user');
     $user = $user_session->user_info['employee_id'];
     $myDept = $user_session->user_info['dept_id'];
     $nowDate = date('Y-m-d');
     $files = new Dcc_Model_Files();
     $record = new Dcc_Model_Record();
     $upload = new Dcc_Model_Upload();
     $codeModel = new Dcc_Model_Code();
     $share = new Dcc_Model_Share();
     $review = new Dcc_Model_Review();
     $modelUser = new Application_Model_User();
     $data = $files->getDataById($id);
     // [id, code, ver, file_id, file_name, file_path, file_view_path]
     $result = array();
     $row0 = $data[0];
     $names = explode(',', $row0['name']);
     $codes = explode(',', $row0['code']);
     $vers = explode(',', $row0['ver']);
     $description = explode('|', $row0['description']);
     $project_info = explode(',', $row0['project_info']);
     $final_codes = array();
     $final_vers = array();
     $final_names = array();
     $final_descs = array();
     $final_projs = array();
     $k = 0;
     for ($i = 0; $i < count($names); $i++) {
         $sub_names = explode('|', $names[$i]);
         $final_codes[$k] = $codes[$i];
         $final_vers[$k] = $vers[$i];
         if (isset($description[$i]) && $description[$i]) {
             $final_descs[$k] = $description[$i];
         } else {
             $final_descs[$k] = "";
         }
         if (isset($project_info[$i]) && $project_info[$i]) {
             $final_projs[$k] = $project_info[$i];
         } else {
             $final_projs[$k] = "";
         }
         $final_names[$k] = $sub_names[0];
         $k++;
         for ($j = 1; $j < count($sub_names); $j++) {
             $final_codes[$k] = $codes[$i];
             $final_vers[$k] = $vers[$i];
             $final_names[$k] = $sub_names[$j];
             if (isset($description[$i]) && $description[$i]) {
                 $final_descs[$k] = $description[$i];
             } else {
                 $final_descs[$k] = "";
             }
             if (isset($project_info[$i]) && $project_info[$i]) {
                 $final_projs[$k] = $project_info[$i];
             } else {
                 $final_projs[$k] = "";
             }
             $k++;
         }
     }
     $catalog = new Product_Model_Catalog();
     for ($i = 0; $i < count($data); $i++) {
         $paths = $this->getPathByName($data, trim($final_names[$i]));
         $row = $data[$i];
         $result[$i]['id'] = $row['id'];
         $result[$i]['state'] = $row['state'];
         if ($final_descs[$i]) {
             $result[$i]['description'] = $final_descs[$i];
         } else {
             // 获取描述
             $descData = $codeModel->getJoinList("code = '{$final_codes[$i]}'", array(), array('description', 'project_no'));
             if (count($descData) > 0) {
                 $result[$i]['description'] = $descData[0]['description'];
                 if (!$final_projs[$i]) {
                     $final_projs[$i] = $descData[0]['project_no'];
                 }
             }
         }
         $result[$i]['project_no'] = $final_projs[$i];
         if ($final_projs[$i]) {
             $projData = $catalog->getById($final_projs[$i]);
             if ($projData && $projData['model_internal']) {
                 $result[$i]['project_name'] = $projData['model_internal'];
             }
         }
         $result[$i]['code'] = $final_codes[$i];
         $result[$i]['ver'] = $final_vers[$i];
         $result[$i]['file_id'] = $paths[0];
         $result[$i]['file_name'] = $final_names[$i];
         $result[$i]['file_path'] = $paths[1];
         $result[$i]['file_view_path'] = $paths[2];
         // 权限检查
         // 有权限的情况:1、本人上传的文件 2、本人提交的文件评审 3、本人参与审核的文件评审 4、共享给我的 5、将要审核的审核人 6、文件管理员、BOM管理员、物料管理员
         // 首先检查文件是否存在
         $result[$i]['exists'] = true;
         if (!file_exists($paths[1])) {
             $result[$i]['exists'] = false;
         }
         $role = false;
         if ($modelUser->checkPermissionByRoleName('物料管理员') || $modelUser->checkPermissionByRoleName('文件管理员') || $modelUser->checkPermissionByRoleName('系统管理员') || $modelUser->checkPermissionByRoleName('BOM管理员')) {
             $role = true;
         } else {
             if ($row0['create_user'] == $user || $row0['update_user'] == $user) {
                 $role = true;
             } else {
                 if ($record->fetchAll("table_id = {$id} and handle_user = {$user} and table_name = 'oa_doc_files' and action = '审批'")->count() > 0) {
                     $role = true;
                 } else {
                     if ($upload->fetchAll("id = " . $row['id'] . " and (create_user = {$user} or update_user = {$user})")->count() > 0) {
                         $role = true;
                     } else {
                         if ($share->fetchAll("shared_id = " . $row['id'] . " and type = 'upload' and share_time_begin <= '{$nowDate}' and share_time_end >= '{$nowDate}'  and (FIND_IN_SET({$user}, share_user) or FIND_IN_SET({$myDept}, share_dept))")->count() > 0) {
                             $role = true;
                         } else {
                             if ($review->fetchAll("file_id = {$id} and FIND_IN_SET({$user}, plan_user) and type = 'files'")->count() > 0) {
                                 $role = true;
                             }
                         }
                     }
                 }
             }
         }
         $result[$i]['role'] = $role;
     }
     echo Zend_Json::encode($result);
     exit;
 }
Example #2
0
 public function multiuploadAction()
 {
     // 返回值数组
     $result = array('success' => true, 'result' => true);
     $upload = new Dcc_Model_Upload();
     $request = $this->getRequest()->getParams();
     $user_session = new Zend_Session_Namespace('user');
     $user = $user_session->user_info['employee_id'];
     if (!$user) {
         $user = $this->getRequest()->getParam('employee_id');
     }
     $now = date('Y-m-d H:i:s');
     $val = (object) $request;
     $file = $_FILES['file'];
     $fileSize = $file['size'];
     $fname_arr = explode(".", $file['name']);
     $fileName = $file['name'];
     $fileType = strrchr($file['name'], ".");
     // 检查本人上传的同名文件已存在
     if ($upload->fetchAll("name = '{$fileName}' and update_user = {$user}")->count() > 0) {
         $result['result'] = false;
         $result['info'] = '文件已存在';
         echo Zend_Json::encode($result);
         exit;
     }
     $absolutepath = $_SERVER['DOCUMENT_ROOT'] . "/evolve/upload/files/" . date('Y-m-d') . "/";
     $savepath = "../upload/files/" . date('Y-m-d') . "/";
     $fujian_name_tmp = $this->randomkeys(15) . strtolower($fileType);
     if (!is_dir($savepath)) {
         mkdir($savepath);
     }
     $path = $savepath . $fujian_name_tmp;
     move_uploaded_file($file["tmp_name"], $path);
     $fileType = str_replace('.', '', $fileType);
     if (!$fileSize) {
         $fileSize = $_SERVER['CONTENT_LENGTH'];
     }
     $data = array('category' => isset($val->category) ? $val->category : null, 'name' => $fileName, 'type' => $fileType, 'size' => $fileSize, 'path' => $path, 'upload_time' => $now, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user);
     try {
         $id = $upload->insert($data);
         if ($id) {
             $result['id'] = $id;
         }
     } catch (Exception $e) {
         $result['result'] = false;
         $result['info'] = $e->getMessage();
         echo Zend_Json::encode($result);
         exit;
     }
     echo Zend_Json::encode($result);
     exit;
     // 返回值数组
     $result = array('success' => true, 'result' => true, 'info' => $user);
     echo Zend_Json::encode($result);
     exit;
 }