/** * * 移动目录 * @param string $fromPath * @param string $toPath */ private function handleMoveFolder($fromPath, $toPath) { $createFolder = new CreateFolder(); $createFolder->_deviceId = $this->_deviceId; $createFolder->_userId = $this->to_share_filter->master; $createFolder->share_filter = $this->to_share_filter; $pathInfo = CUtils::pathinfo_utf($this->toPath); $parentId = $createFolder->handleCreateByPath($pathInfo["dirname"]); // 重命名 $name = $this->handleRename($parentId, $pathInfo["basename"]); $this->toPath = $pathInfo["dirname"] . "/" . $name; // // 如果是存在同名的已经删除的记录,则删除之 // $deleted = UserFile::model()->findByAttributes(array("user_id" => $this->_userId, "file_path" => $this->toPath, "is_deleted" => 1)); // 为子文件创建版本 $children = new UserFile(); $children = $children->getChildrenFileByPath($this->fromPath); foreach ($children as $child) { $filePath = $child["file_path"]; $index = strlen($this->fromPath); $filePath = substr_replace($filePath, $this->toPath, 0, $index); $action = CConst::CREATE_FILE; // 创建 if ($child["is_deleted"]) { $action = 1; } // 保持原来的删除状态 $this->handleFileMeta($filePath, $child["version_id"], $this->_userId, $this->_userNick, $action, $this->_deviceName, $child['file_size']); } $handler = new UserFile(); if ($deleted) { $handler->updateAll(array('parent_file_id' => $this->from['id']), array('condition' => 'user_id=:user_id and parent_file_id=:parent_file_id', 'params' => array(':user_id' => $this->_userId, ":parent_file_id" => $deleted["id"]))); $deleted->delete(); } // 更新所有子 对象 $handler->updateAllByParentPath($this->fromPath, $this->toPath, $this->master, $this->to_share_filter->master); $this->from["file_path"] = $this->toPath; $this->from["file_name"] = $name; $this->from["event_uuid"] = MiniUtil::getEventRandomString(46); $this->from["parent_file_id"] = $parentId; $this->from["user_id"] = $this->to_share_filter->master; $this->from->save(); // 创建事件 MiniEvent::getInstance()->createEvent($this->_userId, $this->_deviceId, $this->_action, $this->fromPath, $this->toPath, $this->from["event_uuid"]); if ($this->rename) { $this->to_share_filter->handlerRenameShared($this->fromPath, $this->toPath); } else { $this->to_share_filter->handlerAction($this->_action, $this->_deviceId, $this->fromPath, $this->toPath); } }