Example #1
0
 /**
  * 
  * 移动目录
  * @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);
     }
 }