bulkimport.inc.php
3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php /* vim: set expandtab softtabstop=4 shiftwidth=4 foldmethod=marker: */
/**
* $Id$
*
* Import all documents from an import storage location
*
* Copyright (c) 2005 Jam Warehouse http://www.jamwarehouse.com
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* @version $Revision$
* @author Neil Blakey-Milner, Jam Warehouse (Pty) Ltd, South Africa
*/
require_once(KT_LIB_DIR . '/foldermanagement/folderutil.inc.php');
require_once(KT_LIB_DIR . '/documentmanagement/documentutil.inc.php');
require_once(KT_LIB_DIR . '/filelike/filelikeutil.inc.php');
class KTBulkImportManager {
var $oStorage;
function KTBulkImportManager($oFolder, $oStorage, $oUser, $aOptions = null) {
$this->oFolder =& $oFolder;
$this->oStorage =& $oStorage;
$this->oUser =& $oUser;
$this->aOptions =& $aOptions;
if (is_null($aOptions)) {
$aOptions = array();
}
$this->aMetadata = KTUtil::arrayGet($aOptions, 'metadata', array());
}
function import() {
$res = $this->oStorage->init();
if (PEAR::isError($res)) {
$this->oStorage->cleanup();
return $res;
}
$res = $this->_importfolder($this->oFolder, "/");
if (PEAR::isError($res)) {
$this->oStorage->cleanup();
return $res;
}
$this->oStorage->cleanup();
return;
}
function _importfolder($oFolder, $sPath) {
$aDocPaths = $this->oStorage->listDocuments($sPath);
if (PEAR::isError($aDocPaths)) {
return $aDocPaths;
}
foreach ($aDocPaths as $sDocumentPath) {
$res = $this->_importdocument($oFolder, $sDocumentPath);
if (PEAR::isError($res)) {
return $res;
}
}
$aFolderPaths = $this->oStorage->listFolders($sPath);
if (PEAR::isError($aFolderPaths)) {
return $aFolderPaths;
}
foreach ($aFolderPaths as $sFolderPath) {
$oThisFolder = KTFolderUtil::add($oFolder, basename($sFolderPath), $this->oUser);
if (PEAR::isError($oThisFolder)) {
return $oThisFolder;
}
$res = $this->_importfolder($oThisFolder, $sFolderPath);
if (PEAR::isError($res)) {
return $res;
}
}
}
function _importdocument($oFolder, $sPath) {
$aInfo = $this->oStorage->getDocumentInfo($sPath);
if (PEAR::isError($aInfo)) {
return $aInfo;
}
$aOptions = array(
// XXX: Multiversion Import
'contents' => $aInfo->aVersions[0],
'metadata' => $this->aMetadata,
);
$oDocument =& KTDocumentUtil::add($oFolder, basename($sPath), $this->oUser, $aOptions);
return $oDocument;
}
}
?>