bulkImport.php
5.02 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
require_once('../../../../config/dmsDefaults.php');
require_once(KT_LIB_DIR . '/dispatcher.inc.php');
require_once(KT_DIR . "/presentation/webpageTemplate.inc");
require_once(KT_LIB_DIR . "/documentmanagement/DocumentType.inc");
require_once(KT_LIB_DIR . "/documentmanagement/DocumentField.inc");
require_once(KT_LIB_DIR . "/visualpatterns/PatternMetaData.inc");
require_once(KT_LIB_DIR . "/import/fsimportstorage.inc.php");
require_once(KT_LIB_DIR . "/import/bulkimport.inc.php");
require_once(KT_LIB_DIR . "/validation/dispatchervalidation.inc.php");
class KTBulkImportDispatcher extends KTStandardDispatcher {
function check() {
if ($_REQUEST['fFolderID']) {
$_REQUEST['fFolderId'] = $_REQUEST['fFolderID'];
unset($_REQUEST['fFolderID']);
}
$this->oFolder =& $this->oValidator->validateFolder($_REQUEST['fFolderId']);
$this->oPermission =& $this->oValidator->validatePermissionByName('ktcore.permissions.write');
$this->oValidator->userHasPermissionOnItem($this->oUser, $this->oPermission, $this->oFolder);
return true;
}
function do_main() {
$oTemplating =& KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate('ktcore/import/fs_import');
$aTypes = $this->getDocumentTypes();
$iDefaultType = $aTypes[0]->getId();
$aFields = array(
'folder_id' => $this->oFolder->getID(),
'folder_path_array' => $this->oFolder->getPathArray(),
'document_type_choice' => $this->getDocumentTypeChoice($aTypes, 'getMetadataForType(this.value);'),
'generic_metadata_fields' => $this->getGenericMetadataFields(),
'type_metadata_fields' => $this->getTypeMetadataFields($iDefaultType),
);
return $oTemplate->render($aFields);
}
function getDocumentTypeChoice($aTypes, $onchange = "") {
$oTemplating =& KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate('ktcore/document/document_type_choice');
$aFields = array(
'document_types' => $aTypes,
'onchange' => $onchange,
);
return $oTemplate->render($aFields);
}
function getGenericMetadataFields() {
$oTemplating = KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate("ktcore/metadata/editable_metadata_fields");
$aTemplateData = array(
'caption' => _('Generic meta data'),
'empty_message' => _("No Generic Meta Data"),
'fields' => DocumentField::getList(array('is_generic = ?', array(true))),
);
return $oTemplate->render($aTemplateData);
}
function getTypeMetadataFields($iDocumentTypeID) {
global $default;
/*ok*/ $sQuery = array("SELECT DF.id AS id " .
"FROM document_fields AS DF LEFT JOIN document_type_fields_link AS DTFL ON DTFL.field_id = DF.id " .
"WHERE DF.is_generic = ? " .
"AND DTFL.document_type_id = ?", array(false, $iDocumentTypeID));
$aIDs = DBUtil::getResultArray($sQuery);
$aFields = array();
foreach ($aIDs as $iID) {
$aFields[] =& call_user_func(array('DocumentField', 'get'), $iID);
}
$aTemplateData = array(
'caption' => _('Type specific meta data'),
'empty_message' => _("No Type Specific Meta Data"),
'fields' => $aFields,
);
$oTemplating = KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate("ktcore/metadata/editable_metadata_fields");
return $oTemplate->render($aTemplateData);
}
function getDocumentTypes() {
$sTable = KTUtil::getTableName('folder_doctypes');
$aQuery = array(
"SELECT document_type_id FROM $sTable WHERE folder_id = ?",
array($this->oFolder->getId()),
);
$aIds = DBUtil::getResultArrayKey($aQuery, 'document_type_id');
$aRet = array();
foreach ($aIds as $iId) {
$aRet[] = DocumentType::get($iId);
}
return $aRet;
}
function do_import() {
$matches = array();
$aFields = array();
foreach ($_REQUEST as $k => $v) {
if (preg_match('/^emd(\d+)$/', $k, $matches)) {
$aFields[] = array(DocumentField::get($matches[1]), $v);
}
}
$aOptions = array(
'documenttype' => DocumentType::get($fDocumentTypeID),
'metadata' => $aFields,
);
$fs =& new KTFSImportStorage($_REQUEST['fPath']);
$bm =& new KTBulkImportManager($this->oFolder, $fs, $this->oUser, $aOptions);
DBUtil::startTransaction();
$res = $bm->import();
if (PEAR::isError($res)) {
DBUtil::rollback();
$_SESSION["KTErrorMessage"][] = _("Bulk import failed") . ": " . $res->getMessage();
} else {
DBUtil::commit();
}
controllerRedirect("browse", 'fFolderID=' . $this->oFolder->getID());
exit(0);
}
}
$d =& new KTBulkImportDispatcher;
$d->dispatch();
?>