本文整理汇总了PHP中CUtils::removeUserFromPath方法的典型用法代码示例。如果您正苦于以下问题:PHP CUtils::removeUserFromPath方法的具体用法?PHP CUtils::removeUserFromPath怎么用?PHP CUtils::removeUserFromPath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CUtils
的用法示例。
在下文中一共展示了CUtils::removeUserFromPath方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: buildResult
/**
* 处理返回值
*/
public function buildResult($query_db_file, $to_path = null)
{
// 处理不同端,不同返回值
if (MUserManager::getInstance()->isWeb() === true) {
$this->buildWebResponse();
return;
}
if ($this->isEcho === false) {
return;
}
$is_dir = true;
$size = $query_db_file["file_size"];
$response = array();
if ($query_db_file["file_type"] == MConst::OBJECT_TYPE_FILE) {
// 根据文件名后缀判断mime type
$mime_type = MiniUtil::getMimeType($query_db_file["file_name"]);
$is_dir = false;
$response["mime_type"] = $mime_type;
$response["thumb_exists"] = MUtils::isExistThumbnail($mime_type, (int) $query_db_file["file_size"]);
}
// 去除/{user_id}
$path = CUtils::removeUserFromPath($query_db_file["file_path"]);
$response["size"] = MUtils::getSizeByLocale($this->_locale, $size);
$response["is_deleted"] = false;
$response["bytes"] = intval($size);
$response["modified"] = MUtils::formatIntTime($query_db_file["file_update_time"]);
if ($to_path) {
$path = $to_path;
} else {
$path = $query_db_file["file_path"];
}
$path_info = MUtils::pathinfo_utf($path);
$path_info_out = MUtils::pathinfo_utf($this->to_share_filter->src_path);
$path = MUtils::convertStandardPath($path_info_out['dirname'] . "/" . $path_info['basename']);
$response["path"] = $path;
$response["root"] = $this->_root;
$response["is_dir"] = $is_dir;
$response["rev"] = strval($query_db_file["version_id"]);
$response["revision"] = intval($query_db_file["version_id"]);
// 增加操作返回事件编码
$response["event_uuid"] = $query_db_file["event_uuid"];
echo json_encode($response);
}
示例2: downloadToPackage
//.........这里部分代码省略.........
}
if (count($fileNames) > 1) {
$packageName = 'miniyun';
} else {
$packageName = $fileNames[0];
}
//创建临时文件夹
$fileSystem = new CFileSystem();
MUtils::MkDirsLocal(DOCUMENT_TEMP . $userId);
$storePath = DOCUMENT_TEMP . $userId . "/" . $packageName;
$array = array();
$ids = explode(",", $code);
foreach ($ids as $id) {
$file = MiniFile::getInstance()->getById($id);
if (empty($file)) {
continue;
}
if ($file["file_type"] == MConst::OBJECT_TYPE_FILE) {
//属于自己的文件
$array[] = $file;
} else {
//不属于自己的文件
//查询共有多少个子目录
$array[] = $file;
$files = MiniFile::getInstance()->getChildrenByPath($file["file_path"]);
$array = array_merge($array, $files);
}
}
if (count($array) > $limitCount) {
echo "批量下载单次最大文件数不能超过:" . $limitCount;
exit;
}
$size = $this->calculateSize($array);
if ($size > $limitSize * 1024 * 1024) {
echo "批量下载单次最大文件大小不能超过:" . $limitSize . "M";
exit;
}
$path = CUtils::removeUserFromPath($array[0]["file_path"]);
$removeParent = pathinfo($path, PATHINFO_DIRNAME);
if (strlen($removeParent) == 1) {
$removeParent = "";
}
//zip压缩
$zip = new ZipArchive();
$zipFile = $storePath . ".zip";
//删除上次存在的压缩文件
$fileSystem->delete($zipFile);
try {
$zipFile = mb_convert_encoding($zipFile, "gb2312", "UTF-8");
} catch (Exception $e) {
$zipFile = $zipFile;
}
if ($zip->open($zipFile, ZIPARCHIVE::OVERWRITE) === TRUE) {
//执行拷贝操作
foreach ($array as $file) {
$fileType = $file["file_type"];
$filePath = $file["file_path"];
//获取存储文件的绝对路径
if (!empty($removeParent)) {
$relativePath = CUtils::str_replace_once($removeParent, "", CUtils::removeUserFromPath($filePath));
} else {
$relativePath = CUtils::removeUserFromPath($filePath);
}
//打包加上nick
$relativePath = $packageName . $relativePath;
//转换文件编码为中文编码
try {
$store = mb_convert_encoding($relativePath, "gb2312", "UTF-8");
} catch (Exception $e) {
$store = $relativePath;
}
$hasRead = true;
if ($userId == $file["user_id"] && $fileType == MConst::OBJECT_TYPE_FILE) {
//属于自己的文件
$this->addToFile($zip, $file, $store, $fileSystem);
} elseif ($userId != $file["user_id"] && $fileType == MConst::OBJECT_TYPE_FILE) {
//不属于自己的文件
if ($hasRead) {
$this->addToFile($zip, $file, $store, $fileSystem);
}
} elseif ($userId == $file["user_id"] && $fileType == MConst::OBJECT_TYPE_DIRECTORY) {
//属于自己的文件夹
$this->addToFolder($zip, $store);
} else {
//不属于自己的文件夹
if ($hasRead) {
$this->addToFolder($zip, $store);
}
}
}
$zip->close();
//关闭
}
if (!file_exists($zipFile)) {
echo Yii::t('i18n', 'no_privilege');
Yii::app()->end();
}
//进行下载
CUtils::output($zipFile, "application/octet-stream", $packageName . ".zip");
}
示例3: invoke
/**
* 控制器执行主逻辑函数, 复制文件或者文件夹
*/
public function invoke($uri = null)
{
$this->setAction(MConst::COPY);
$this->beforeInvoke();
$this->beforecheck();
$user = MUserManager::getInstance()->getCurrentUser();
// 调用父类初始化函数,注册自定义的异常和错误处理逻辑
parent::init();
$params = $_REQUEST;
// 检查参数
if (isset($params) === false) {
throw new MFileopsException(Yii::t('api', 'Bad Request 11'), MConst::HTTP_CODE_400);
}
// 文件大小格式化参数
$locale = "bytes";
if (isset($params["root"]) === false || isset($params["from_path"]) === false || isset($params["to_path"]) === false) {
throw new MFileopsException(Yii::t('api', 'Bad Request 12'), MConst::HTTP_CODE_400);
}
if (isset($params["locale"])) {
$locale = $params["locale"];
}
$root = $params["root"];
$this->_from_path = $params["from_path"];
$this->_to_path = $params["to_path"];
if ($params['is_root']) {
$this->_to_path = '/' . $user['id'] . $this->_to_path;
}
//
// 检查文件名是否有效
//
$isInvalid = MUtils::checkNameInvalid(MUtils::get_basename($this->_to_path));
if ($isInvalid) {
throw new MFileopsException(Yii::t('api', 'Bad Request 13'), MConst::HTTP_CODE_400);
}
//
// 转换路径分隔符,便于以后跨平台,如:将 "\"=>"/"
//
$this->_from_path = MUtils::convertStandardPath($this->_from_path);
$this->_to_path = MUtils::convertStandardPath($this->_to_path);
if ($this->_from_path == "/" || $this->_to_path == "/" || $this->_from_path === false || $this->_to_path === false) {
throw new MFileopsException(Yii::t('api', 'Bad Request 14'), MConst::HTTP_CODE_400);
}
if ($this->_to_path[strlen($this->_to_path) - 1] == "/") {
// 目标文件无效,403 error
throw new Exception(Yii::t('api', 'The file or folder name is invalid'), MConst::HTTP_CODE_403);
}
//
// 检查共享
//
$from_share_filter = MSharesFilter::init();
$this->to_share_filter = MSharesFilter::init();
// 当从共享目录拷贝到其他目录时,源目录用户id设置为共享用户id
// if ($from_share_filter->handlerCheck($this->owner, $this->_from_path)) {
// $this->master = $from_share_filter->master;
// $this->_from_path = $from_share_filter->_path;
// }
//
// // 当拷贝到共享目录的时候,目标目录的用户id设置为共享用户id
// if ($this->to_share_filter->handlerCheck($this->_user_id, $this->_to_path)) {
// $this->_user_id = $this->to_share_filter->master;
// $this->user_nick = $this->to_share_filter->master_nick;
// $this->_to_path = $this->to_share_filter->_path;
// }
// if($this->_from_shared_path){
// $this->_from_path = $this->_from_shared_path;
// }else{
// $this->_from_path = "/".$this->master.$this->_from_path;
// }
// if($this->_to_shared_path){
// $this->_to_path = $this->_to_shared_path;
// }else{
// $this->_to_path = "/".$this->_user_id.$this->_to_path;
// }
//
// 检查目标路径是否在复制目录下
//
if (strpos($this->_to_path, $this->_from_path . "/") === 0) {
throw new MFileopsException(Yii::t('api', 'Can not be copied to the subdirectory'), MConst::HTTP_CODE_403);
}
$check = CUtils::removeUserFromPath($this->_to_path);
if (empty($check) || $check == '/') {
throw new MFileopsException(Yii::t('api', 'Can not be copied to the error directory'), MConst::HTTP_CODE_403);
}
//
// 检查目标路径文件是否存在
//
$queryToPathDbFile = MFiles::queryAllFilesByPath($this->_to_path);
$isUpdate = false;
if ($queryToPathDbFile) {
if ($queryToPathDbFile[0]["is_deleted"] == false) {
// 已经存在,403 error
throw new MFileopsException(Yii::t('api', 'There is already a item at the given destination'), MConst::HTTP_CODE_403);
}
$isUpdate = true;
}
//
// 查询其信息
//.........这里部分代码省略.........
示例4: invoke
//.........这里部分代码省略.........
$privilegeModel = new PrivilegeBiz();
$share_filter->slaves = $privilegeModel->getSlaveIdsByPath($permissionArr['share_root_path']);
$share_filter->is_shared = true;
if ($file_detail->file_type == 0) {
//删除文件
$can_file_delete = substr($permission, 7, 1);
if ($can_file_delete == 0) {
throw new MFileopsException(Yii::t('api', 'no permission'), MConst::HTTP_CODE_409);
}
}
if ($file_detail->file_type == 1 || $file_detail->file_type == 2 || $file_detail->file_type == 4) {
$can_folder_delete = substr($permission, 3, 1);
if ($can_folder_delete == 0) {
throw new MFileopsException(Yii::t('api', 'no permission'), MConst::HTTP_CODE_409);
}
}
}
}
//
// 更新文件元数据的为删除数据
//
$this->assembleFileDetail($file_detail, $query_db_file[0]);
$ret_value = MFiles::updateRemoveFileDetail($file_detail);
if ($ret_value === false) {
throw new MFileopsException(Yii::t('api', 'Internal Server Error'), MConst::HTTP_CODE_500);
}
//
// 将删除目录加入数组
//
array_push($files, $file_detail);
//
// 保存事件
//
$ret_value = MiniEvent::getInstance()->createEvents($this->_user_id, $user_device_id, $files, $share_filter->type);
if ($ret_value === false) {
throw new MFileopsException(Yii::t('api', 'Internal Server Error'), MConst::HTTP_CODE_500);
}
//
//
//
if ($share_filter->is_shared) {
foreach ($files as $file) {
$share_filter->handlerAction($file->event_action, $user_device_id, $file->from_path, $file->context);
}
}
//
// 删除共享目录(删除共享目录,对应的权限也一起删除)
//
//首先判断用户有无删除权限
$userPrivilegeList = MiniUserPrivilege::getInstance()->getPrivilegeList($file_detail->file_path);
$groupPrivilegeList = MiniGroupPrivilege::getInstance()->getPrivilegeList($file_detail->file_path);
if (!empty($userPrivilegeList)) {
MiniUserPrivilege::getInstance()->deleteByFilePath($file_detail->file_path);
}
if (!empty($groupPrivilegeList)) {
MiniGroupPrivilege::getInstance()->deleteByFilePath($file_detail->file_path);
}
//并且将file_type改为1
if ($file_detail->file_type == 0) {
MiniFile::getInstance()->togetherShareFile($file_detail->file_path, Mconst::OBJECT_TYPE_FILE);
} else {
MiniFile::getInstance()->togetherShareFile($file_detail->file_path, Mconst::OBJECT_TYPE_DIRECTORY);
}
if ($filter !== true && $share_filter->_is_shared_path && $share_filter->operator == $share_filter->master) {
$file = MFiles::queryFilesByPath("/" . $share_filter->operator . $path, true);
if (!$file) {
throw new MFileopsException(Yii::t('api', 'Internal Server Error'), MConst::HTTP_CODE_500);
}
$id = $file[0]["id"];
$handler = new ShareManager();
$handler->_userId = $share_filter->operator;
$handler->_id = $id;
try {
$handler->invoke(ShareManager::CANCEL_SHARED);
} catch (Exception $e) {
throw new MFileopsException(Yii::t('api', 'Internal Server Error'), MConst::HTTP_CODE_500);
}
}
// 如果彻底删除,则调用回收站
if ($this->completely_remove) {
$trash = new Trash();
$trash->_userId = $this->_user_id;
$trash->fromIds = $file_detail->id;
try {
$trash->invoke(Trash::DELETE);
} catch (Exception $e) {
throw new MFileopsException(Yii::t('api', 'Internal Server Error'), MConst::HTTP_CODE_500);
}
//执行的额外操作
$this->extend($share_filter, $query_db_file, $file_detail);
return;
}
$path = CUtils::removeUserFromPath($query_db_file[0]["file_path"]);
$path_info = MUtils::pathinfo_utf($path);
$path_info_out = MUtils::pathinfo_utf($share_filter->src_path);
$path = MUtils::convertStandardPath($path_info_out['dirname'] . "/" . $path_info['basename']);
//执行的额外操作
$this->extend($share_filter, $query_db_file, $file_detail);
$this->buildResult($root, $path, $query_db_file[0]["version_id"], $query_db_file[0]["file_update_time"], $file_detail->is_dir);
}
示例5: handleDelete
/**
*
* 删除回收站一条记录
*
* @since 1.0.7
*/
private function handleDelete()
{
if ($this->fromIds == "-1") {
throw new ApiException(Yii::t('common', 'param_error'));
}
// 获取文件(夹)信息
$files = UserFile::model()->getFilesByIds($this->fromIds, 1);
// 我的最爱和分享都删除
// FileStar::model()->deleteAllByFileIds($this->_userId, $this->fromIds);
FileStar::model()->deleteAll('id in (:ids)', array(':ids' => $this->fromIds));
MiniLink::getInstance()->unlink($this->fromIds);
$publicFilter = MSharesFilter::init();
// 如果是文件,则直接删除,否则删除文件夹下子文件
foreach ($files as $file) {
//先进行回收站删除权限的判断
$file_path = CUtils::removeUserFromPath($file["file_path"]);
if ($publicFilter->handlerCheck($this->_userId, $file_path)) {
$this->_userId = $publicFilter->master;
$path = $publicFilter->_path;
}
if ($publicFilter->is_shared && $publicFilter->master != $publicFilter->operator) {
//如果没有读权限则不进行删除
$permission = Yii::app()->privilege->checkPrivilege('/' . $publicFilter->master . $path);
if (!$permission[MPrivilege::RESOURCE_READ]) {
continue;
}
if ($file["file_type"] == 0 && !$permission[MPrivilege::FILE_DELETE]) {
continue;
} elseif (!$permission[MPrivilege::FOLDER_DELETE]) {
continue;
}
}
if ($file["file_type"] == 0) {
MiniVersion::getInstance()->updateRefCount($file['version_id'], FALSE);
$file->delete();
continue;
}
$parentPath = $file["file_path"];
$children = UserFile::model()->getFilesByPath($parentPath, 1);
foreach ($children as $child) {
if ($child["file_type"] == 0) {
MiniVersion::getInstance()->updateRefCount($child['version_id'], FALSE);
}
$child->delete();
}
$file->delete();
}
$this->handleResult(TRUE, 0, Yii::t('api_message', 'action_success'));
}
示例6: createPrivelegeEvent
/**
*
* 添加事件
*
* @since 1.0.7
*/
public function createPrivelegeEvent($user_id, $file_path, $permission)
{
//如果是自己则排除
$own_user_id = CUtils::getUserFromPath($file_path);
if ($own_user_id == $user_id) {
return;
}
//默认的权限
$defaultPermission = Yii::app()->privilege->getFilePrivilegeDefault($file_path);
$file_path = '/' . $user_id . CUtils::removeUserFromPath($file_path);
$content = $file_path;
if ($permission[MPrivilege::RESOURCE_READ] && !$defaultPermission[MPrivilege::RESOURCE_READ]) {
//当默认权限为不能读,现在变更为能读
$this->createEvent($user_id, MConst::CAN_READ, $file_path, $content);
} elseif (!$permission[MPrivilege::RESOURCE_READ] && $defaultPermission[MPrivilege::RESOURCE_READ]) {
//当默认权限为能读 现在变更为不能读
$this->createEvent($user_id, MConst::CAN_NOT_READ, $file_path, $content);
}
}
示例7: invoke
//.........这里部分代码省略.........
if ($path == false) {
throw new MFileopsException(Yii::t('api', 'The folder name is invalid'), MConst::HTTP_CODE_400);
}
// 检查是否在共享目录
$this->share_filter = MSharesFilter::init();
if ($this->share_filter->handlerCheck($this->_user_id, $path, MConst::CREATE_DIRECTORY)) {
$this->_user_id = $this->share_filter->master;
$path = $this->share_filter->_path;
}
if ($params['is_root'] == "/") {
$path = "/" . $this->_user_id . $path;
}
$item = explode("/", $path);
if (!preg_match("/^[0-9]+\$/", $item[1])) {
$path = "/" . $user["user_id"] . $path;
}
$parentPath = dirname($path);
$isSharedPath = false;
//主要用于判断是否为被共享文件
if (dirname(MiniUtil::getRelativePath($path)) == "/" . $this->_user_id) {
$permission = MConst::SUPREME_PERMISSION;
} else {
$pathArr = explode('/', $path);
$masterId = $pathArr[1];
if ($masterId != $this->_user_id) {
$isSharedPath = true;
} else {
$model = new GeneralFolderPermissionBiz($parentPath);
if ($model->isParentShared($parentPath)) {
//如果是父目录被共享
$isSharedPath = true;
}
}
if ($isSharedPath) {
$permissionArr = UserPermissionBiz::getInstance()->getPermission($parentPath, $this->_user_id);
if (!isset($permissionArr)) {
$permission = MConst::SUPREME_PERMISSION;
} else {
$permission = $permissionArr['permission'];
$privilegeModel = new PrivilegeBiz();
$this->share_filter->slaves = $privilegeModel->getSlaveIdsByPath($permissionArr['share_root_path']);
$this->share_filter->is_shared = true;
}
} else {
$permission = MConst::SUPREME_PERMISSION;
}
}
$miniPermission = new MiniPermission($permission);
$canCreateFolder = $miniPermission->canCreateFolder();
if (!$canCreateFolder) {
throw new MFileopsException(Yii::t('api', 'no permission'), MConst::HTTP_CODE_409);
}
// 查询其是否存在 信息
$file = MiniFile::getInstance()->getByPath($path);
// 是否存在相同文件路径, 且被删除的记录
$hadFileDelete = false;
if (isset($file)) {
if ($file["is_deleted"] == false) {
$code = $file["file_type"] == MConst::OBJECT_TYPE_FILE ? MConst::HTTP_CODE_402 : MConst::HTTP_CODE_403;
if (MUserManager::getInstance()->isWeb() === true) {
throw new MFileopsException(Yii::t('api', 'There is already a item at the given destination'), $code);
}
$uuid = $file["event_uuid"];
// 已经存在,403 error
throw new MFileopsException($code);
}
$hadFileDelete = true;
}
$this->_parentFilePath = "/{$this->_user_id}";
// 检查父目录
$parentFileId = $this->handlerParentFolder($parentPath);
$fileDetail = $this->createFile($path, $parentFileId, $hadFileDelete);
// 处理不同端,不同返回值
if (MUserManager::getInstance()->isWeb() === true) {
if ($this->isOutput) {
$this->buildWebResponse($fileName, $path);
}
return;
}
$response = array();
$response["size"] = "0";
$response["thumb_exists"] = false;
$response["bytes"] = 0;
$response["modified"] = MUtils::formatIntTime($fileDetail["file_update_time"]);
$path = CUtils::removeUserFromPath("{$this->_parentFilePath}/{$fileName}");
if ($this->share_filter->is_shared) {
$path = $this->share_filter->src_path;
$path_info = MUtils::pathinfo_utf($path);
$path = MUtils::convertStandardPath($path_info['dirname'] . "/" . $fileName);
}
$response["path"] = $this->_parentFilePath . "/" . $fileName;
$response["is_dir"] = true;
$response["icon"] = "folder";
$response["root"] = $root;
$response["revision"] = 0;
// 版本
// 增加返回事件uuid,便于客户端进行事件对比逻辑
$response["event_uuid"] = $fileDetail["event_uuid"];
echo json_encode($response);
}