Ejemplo n.º 1
0
 public function deleteFile($recordId, $userId)
 {
     $fileRecord = FileRecord::find()->where(['f_record_id' => $recordId, 'state' => '0'])->one();
     $fileSize = $fileRecord->file_size;
     $disk = Disk::findOne(['user_id' => $userId]);
     $tran = \Yii::$app->db->beginTransaction();
     try {
         $fileRecord->state = '1';
         if ($fileRecord->save()) {
             $disk->available_size = $disk->available_size + $fileSize;
             $parent_folder = FileRecord::findOne(['f_record_id' => $fileRecord->parent_id]);
             while ($parent_folder->parent_id != '0') {
                 $parent_folder->file_size = $parent_folder->file_size - $fileSize;
                 if ($parent_folder->save()) {
                     $parent_folder = FileRecord::findOne(['f_record_id' => $parent_folder->parent_id]);
                 } else {
                     $tran->rollBack();
                     return 'error';
                 }
             }
             $logService = new LogService();
             if ($logService->removeLog($fileRecord->f_record_id) != 'success') {
                 $tran->rollBack();
                 return 'error';
             }
             if ($disk->save()) {
                 $tran->commit();
                 return 'success';
             }
         }
     } catch (Exception $e) {
         $tran->rollBack();
         return 'error';
     }
 }
Ejemplo n.º 2
0
 public function setUserSize($userEmail, $size, $info)
 {
     $user = User::findOne(['user_email' => $userEmail]);
     $disk = Disk::findOne(['user_id' => $user->user_id]);
     $disk->capacity = $disk->capacity + $size * (1024 * 1024 * 1024);
     $disk->available_size = $disk->available_size + $size * (1024 * 1024 * 1024);
     $tran = \Yii::$app->db->beginTransaction();
     if ($disk->save()) {
         $logService = new LogService();
         if ($logService->setUserSize($user->user_id, $info) == 'success') {
             $tran->commit();
             return 'success';
         }
     }
     $tran->rollBack();
     return 'error';
 }
Ejemplo n.º 3
0
 public function actionSetFile()
 {
     if (Yii::$app->request->isPost) {
         $fileId = $_POST['file_id'];
         $info = $_POST['info'];
         $logService = new LogService();
         $msg = $logService->logManageFile($fileId, $info);
         return $msg;
         if ($msg == 'success') {
             $data['code'] = '0';
         } else {
             $data['code'] = '1';
             $data['msg'] = $msg;
         }
         return json_encode($data);
     }
 }
Ejemplo n.º 4
0
 public function actionPersonInfo()
 {
     $this->layout = 'person_info';
     $userId = $_SESSION['user']['user_id'];
     $disk = Disk::findOne(['user_id' => $userId]);
     $fileService = new FileService();
     $typeSize = $fileService->typeSize($userId);
     $logService = new LogService();
     $logs = $logService->getLoginLog();
     return $this->render('person_info', ['disk' => $disk, 'typeSize' => $typeSize, 'logs' => $logs]);
 }
Ejemplo n.º 5
0
 /**
  * Action getfile
  * download file
  * 文件下载action
  */
 public function actionGetfile()
 {
     if (Yii::$app->request->isGet) {
         $file_id = $_GET['file_id'];
         $file = UserFile::findOne($file_id);
         $logService = new LogService();
         $logService->downloadLog($file_id);
         Header("Content-type: " . $file->filetype);
         Header("Accept-Ranges: bytes");
         Header("Accept-Length: " . $file->length);
         Header("Content-Disposition: attachment; filename=" . $file->filename);
         /*
                     Header("Content-Disposition:  attachment;  filename=".$model->filename);
                     header("Content-Transfer-Encoding:binary");
                     header('Content-Length:'.$model->filesize);
                     header('Content-type:'.$model->filetype);
                     header('Expires:0');
                     header('Content-Type:application-x/force-download');*/
         $fp = $file->file->getResource();
         fseek($fp, 0);
         while (!feof($fp)) {
             set_time_limit(0);
             echo fread($fp, 1024);
             flush();
             ob_flush();
         }
         fclose($fp);
     }
 }