Example #1
0
 /**
  * 彻底删除文件
  * 根据{id}递归删除自目录
  * 根据{id}找出文件的{version_id},把文件引用数减1
  * 根據{id}删除fileMeta
  * 根据{id}删除file
  * @param $fileIds
  * @param $force
  * @return boolean
  */
 public function deletedFile($fileIds, $force = false)
 {
     if ($fileIds === '' && strlen($fileIds) <= 0) {
         return 0;
     }
     $ids = '';
     $arr = array();
     $data = $this->findAll("id in(" . $fileIds . ")");
     $list = array();
     $device_id = Yii::app()->session["deviceId"];
     foreach ($data as $key => $value) {
         //
         // 递归删除所有子文件
         //
         $moreData = $this->findAll("user_id=:type1 and file_path like :type2", array('type1' => $value['user_id'], 'type2' => $value['file_path'] . "%"));
         foreach ($moreData as $k => $v) {
             if ($v['is_deleted'] == 0 || $v['is_deleted'] == -1) {
                 $user_id = $v['user_id'];
                 $path = $v['file_path'];
                 $context = $path;
                 $event_uuid = MiniUtil::getEventRandomString(46);
                 $action = 1;
                 // 修改文件
                 $share_filter = MSharesFilter::init();
                 $share_filter->handlerCheckByFile($user_id, $v);
                 if ($v['file_type'] == 0) {
                     //
                     // 如果是文件,需要创建版本
                     //
                     $user = Yii::app()->session['user'];
                     $device = UserDevice::model()->findByUserIdAndType($user['id'], CConst::DEVICE_WEB);
                     $deviceName = $device["user_device_name"];
                     $this->_saveFileMeta($path, $v['version_id'], $user['id'], $user['name'], CConst::DELETE, $deviceName, $v['file_size']);
                 }
                 MiniEvent::getInstance()->createEvent($user_id, $device_id, $action, $path, $context, $event_uuid, $share_filter->type);
                 $share_filter->handlerAction($action, $device_id, $path, $context);
                 //
                 // 删除共享目录
                 //
                 if ($v['file_type'] == 2 || $v['file_type'] == 3) {
                     $handler = new ShareManager();
                     $handler->_userId = $share_filter->operator;
                     $handler->_id = $v['id'];
                     try {
                         $handler->invoke(ShareManager::CANCEL_SHARED);
                     } catch (Exception $e) {
                     }
                 }
             }
             $id = $v['id'];
             if (in_array($id, $arr)) {
                 // 排除重复
                 continue;
             }
             if ($v['file_type'] == 0) {
                 array_push($list, $v['version_id']);
             }
             if (strlen($ids) > 0) {
                 $ids = $ids . ",";
             }
             array_push($arr, $id);
             $ids = $ids . $id;
         }
     }
     //
     // 更新文件版本引用次数
     //
     $version = new FileVersion();
     $version->updateRefCountByIds($list);
     //删除共享文件信息
     MiniLink::getInstance()->unlink($ids);
     FileStar::model()->deleteAll('id in (:ids)', array(':ids' => $ids));
     //后台管理员台实现逻辑
     $value = $this->deleteAll("id in(" . $ids . ")");
     return $value;
 }
Example #2
0
 /**
  *
  * 删除用户相关信息
  * @userIds 用户列表{1,2,3,4,5}这样的格式
  */
 public function deleteUsers($userIds)
 {
     if ($userIds != '' && strlen($userIds) > 0) {
         $ids = explode(',', $userIds);
         $userFile = new UserFile();
         foreach ($ids as $id) {
             // 删除用户共享文件
             $userFile->deleteSharedFolders($id);
             //删除所有标签信息
             Tag::model()->deleteUserAllTag($id);
             //删除我的最爱文件
             FileStar::model()->deleteUserAllStar($id);
         }
         //删除用户的文件信息
         $userFile->deleteUserFile($userIds);
         //删除用户的群组部门关系
         MiniUserGroupRelation::getInstance()->deleteUserRelation($userIds);
         //删除用户的事件信息
         MiniEvent::getInstance()->deleteByIds($userIds);
         //删除用户Meta以及用户自己
         foreach ($ids as $id) {
             //删除用户自身
             MiniUser::getInstance()->deleteUser($id);
         }
     }
 }
Example #3
0
 /**
  *
  * 删除我的最爱
  * @param int $slave
  * @param string $path
  */
 private function handlerDeleteMyFavorate($slave, $path)
 {
     $conditions = 'user_id = :user_id and file_id in ( SELECT id FROM ' . UserFile::model()->tableName() . ' WHERE file_path like :file_path)';
     FileStar::model()->deleteAll($conditions, array(':user_id' => $slave, ':file_path' => $path . '/%'));
 }
Example #4
0
 /**
  * 删除回收站所有记录, 但保留源数据
  * @since 1.0.0
  * by Kindac
  */
 private function handleSuperClean()
 {
     $this->fromIds = $this->getTrashList();
     if (empty($this->fromIds)) {
         $this->handleResult(TRUE, 0, Yii::t('api_message', 'action_success'));
         Yii::app()->end();
     }
     $files = UserFile::model()->getFilesByIds($this->fromIds, 1);
     //         $files = UserFile::model()->findAllByAttributes(array("user_id" => $this->_userId, "is_deleted" => 1));
     $ids = array();
     foreach ($files as $file) {
         array_push($ids, $file["id"]);
         //
         // 将文件的版本引用次数减1
         //
         if ($file['file_type'] == 0) {
             MiniVersion::getInstance()->updateRefCount($file['version_id'], FALSE);
         }
     }
     $ids = join(",", $ids);
     // 我的最爱和分享都删除
     $value = 0;
     if (!empty($ids)) {
         FileStar::model()->deleteAll('id in (' . $ids . ')');
         MiniLink::getInstance()->unlink($ids);
         $value = UserFile::model()->updateAll(array("is_deleted" => -1), "id in ({$ids})");
     }
     if ($value >= 0) {
         $this->handleResult(TRUE, 0, Yii::t('api_message', 'action_success'));
     }
 }