diff --git a/lib/foldermanagement/Folder.inc b/lib/foldermanagement/Folder.inc index fbf098e..6456b1d 100644 --- a/lib/foldermanagement/Folder.inc +++ b/lib/foldermanagement/Folder.inc @@ -439,15 +439,13 @@ class Folder extends KTEntity { * @return true if the folder exists, false otherwise and set $_SESSION["errorMessage"] */ function folderExistsName($sName, $iParentID) { - global $default, $lang_err_folder_exist; - $sql = $default->db; - $sQuery = "SELECT * FROM " . $default->folders_table . " WHERE name = ? AND parent_id = ?";/*ok*/ + $sQuery = "SELECT id FROM " . KTUtil::getTableName('folders') . " WHERE name = ? AND parent_id = ?";/*ok*/ $aParams = array($sName, $iParentID); - $sql->query(array($sQuery, $aParams)); - if ($sql->next_record()) { + $res = DBUtil::getResultArray(array($sQuery, $aParams)); + var_dump($res); + if (count($res) != 0) { return true; } - $_SESSION["errorMessage"] = $lang_err_folder_exist . $sName . " parent_id " . $iParentID; return false; } diff --git a/lib/foldermanagement/folderutil.inc.php b/lib/foldermanagement/folderutil.inc.php index 84aa77e..d8639a5 100644 --- a/lib/foldermanagement/folderutil.inc.php +++ b/lib/foldermanagement/folderutil.inc.php @@ -60,6 +60,11 @@ class KTFolderUtil { if (PEAR::isError($oFolder)) { return $oFolder; } + + // check for conflicts first + if (Folder::folderExistsName(KTUtil::getId($oParentfolder), $sFolderName)) { + return PEAR::raiseError(sprintf(_kt('The folder %s already exists.'), $sFolderName)); + } $oTransaction = KTFolderTransaction::createFromArray(array( 'folderid' => $oFolder->getId(), diff --git a/lib/import/bulkimport.inc.php b/lib/import/bulkimport.inc.php index 560c79b..e097626 100644 --- a/lib/import/bulkimport.inc.php +++ b/lib/import/bulkimport.inc.php @@ -74,7 +74,20 @@ class KTBulkImportManager { return $aFolderPaths; } foreach ($aFolderPaths as $sFolderPath) { - $oThisFolder = KTFolderUtil::add($oFolder, basename($sFolderPath), $this->oUser); + if (Folder::folderExistsName($sFolderPath, KTUtil::getId($oFolder))) { + $_SESSION['KTErrorMessage'][] = sprintf(_kt("The folder %s is already present in %s. Adding files into pre-existing folder."), $sFolderPath, $oFolder->getName()); + $aOptions = Folder::getList("parent_id = " . KTUtil::getId($oFolder) . ' AND name = "' . DBUtil::escapeSimple($sFolderPath) . '"'); + if (PEAR::isError($aOptions)) { + return $aOptions; + } + if (count($aOptions) != 1) { + return PEAR::raiseError(sprintf(_kt("Two folders named %s present in %s. Unable to decide which to use..."), $sFolderName, $oFolder->getName())); + } else { + $oThisFolder = $aOptions[0]; + } + } else { + $oThisFolder = KTFolderUtil::add($oFolder, basename($sFolderPath), $this->oUser); + } if (PEAR::isError($oThisFolder)) { return $oThisFolder; } @@ -90,6 +103,17 @@ class KTBulkImportManager { if (PEAR::isError($aInfo)) { return $aInfo; } + // need to check both of these. + if (KTDocumentUtil::nameExists($oFolder, basename($sPath))) { + $_SESSION['KTErrorMessage'][] = sprintf(_kt("The document %s is already present in %s. Ignoring."), basename($sPath), $oFolder->getName()); + $oDocument =& Document::getByNameAndFolder(basename($sPath), KTUtil::getId($oFolder)); + return $oDocument; + } else if (KTDocumentUtil::fileExists($oFolder, basename($sPath))) { + $_SESSION['KTErrorMessage'][] = sprintf(_kt("The document %s is already present in %s. Ignoring."), basename($sPath), $oFolder->getName()); + $oDocument =& Document::getByFilenameAndFolder(basename($sPath), KTUtil::getId($oFolder)); + return $oDocument; + } + // else $aOptions = array( // XXX: Multiversion Import 'contents' => $aInfo->aVersions[0],