diff --git a/config/config.ini b/config/config.ini index ab8df98..7d2b689 100644 --- a/config/config.ini +++ b/config/config.ini @@ -113,6 +113,11 @@ phpErrorLogFile = false ; browse section browseToUnitFolder = default +; Whether bulk operations should generate a transaction notice on each +; item, or only on the folder. Default of "false" indicates that only +; the folder transaction should occur. +noisyBulkOperations = false + [email] ; email settings emailServer = none diff --git a/config/dmsDefaults.php b/config/dmsDefaults.php index 3f30a3f..fb55333 100644 --- a/config/dmsDefaults.php +++ b/config/dmsDefaults.php @@ -403,10 +403,12 @@ class KTInit { $oKTConfig->setdefaultns("KnowledgeTree", "pathInfoSupport", false); $oKTConfig->setdefaultns("storage", "manager", 'KTOnDiskHashedStorageManager'); $oKTConfig->setdefaultns("config", "useDatabaseConfiguration", false); + $oKTConfig->setdefaultns("tweaks", "browseToUnitFolder", false); $oKTConfig->setdefaultns("tweaks", "genericMetaDataRequired", true); $oKTConfig->setdefaultns("tweaks", "phpErrorLogFile", false); $oKTConfig->setdefaultns("tweaks", "developmentWindowLog", false); + $oKTConfig->setdefaultns("tweaks", "noisyBulkOperations", false); $oKTConfig->setdefaultns("user_prefs", "passwordLength", 6); $oKTConfig->setdefaultns("user_prefs", "restrictAdminPasswords", false); diff --git a/plugins/ktstandard/KTBulkExportPlugin.php b/plugins/ktstandard/KTBulkExportPlugin.php index 63f7210..5e2adf2 100644 --- a/plugins/ktstandard/KTBulkExportPlugin.php +++ b/plugins/ktstandard/KTBulkExportPlugin.php @@ -30,6 +30,8 @@ require_once(KT_LIB_DIR . '/plugins/plugin.inc.php'); require_once(KT_LIB_DIR . '/plugins/pluginregistry.inc.php'); require_once(KT_LIB_DIR . '/browse/browseutil.inc.php'); +require_once(KT_LIB_DIR . '/config/config.inc.php'); + class KTBulkExportPlugin extends KTPlugin { var $sNamespace = "ktstandard.bulkexport.plugin"; @@ -60,6 +62,11 @@ class KTBulkExportAction extends KTFolderAction { $aQuery = $this->buildQuery(); $this->oValidator->notError($aQuery); $aDocumentIds = DBUtil::getResultArrayKey($aQuery, 'id'); + + $this->startTransaction(); + + $oKTConfig =& KTConfig::getSingleton(); + $bNoisy = $oKTConfig->get("tweaks/noisyBulkOperations"); if (empty($aDocumentIds)) { $this->addErrorMessage(_kt("No documents found to export")); @@ -79,6 +86,12 @@ class KTBulkExportAction extends KTFolderAction { $aPaths = array(); foreach ($aDocumentIds as $iId) { $oDocument = Document::get($iId); + + if ($bNoisy) { + $oDocumentTransaction = & new DocumentTransaction($oDocument, "Document part of bulk export", 'ktstandard.transactions.bulk_export', array()); + $oDocumentTransaction->create(); + } + $sParentFolder = sprintf('%s/%s', $sTmpPath, $oDocument->getFullPath()); $newDir = $this->sTmpPath; foreach (split('/', $oDocument->getFullPath()) as $dirPart) { @@ -130,6 +143,14 @@ class KTBulkExportAction extends KTFolderAction { } pclose($fh); + $oTransaction = KTFolderTransaction::createFromArray(array( + 'folderid' => $this->oFolder->getId(), + 'comment' => "Bulk export", + 'transactionNS' => 'ktstandard.transactions.bulk_export', + 'userid' => $_SESSION['userID'], + 'ip' => Session::getClientIP(), + )); + $url = KTUtil::addQueryStringSelf(sprintf('action=downloadZipFile&fFolderId=%d&exportcode=%s', $this->oFolder->getId(), $sExportCode)); printf(_kt('Go here to download the zip file if you are not automatically redirected there'), $url); printf("\n"); @@ -140,6 +161,8 @@ class KTBulkExportAction extends KTFolderAction { callLater(1, kt_bulkexport_redirect); ', $url); + + $this->commitTransaction(); exit(0); }