Commit 51c1b9fda04c3822fe282d43570b820e927455d3
1 parent
60782450
Modernise bulk import to use dispatcher validation and implement
document type choice. git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3785 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
39 additions
and
23 deletions
presentation/lookAndFeel/knowledgeTree/documentmanagement/bulkImport.php
| @@ -12,26 +12,40 @@ require_once(KT_LIB_DIR . "/visualpatterns/PatternMetaData.inc"); | @@ -12,26 +12,40 @@ require_once(KT_LIB_DIR . "/visualpatterns/PatternMetaData.inc"); | ||
| 12 | require_once(KT_LIB_DIR . "/import/fsimportstorage.inc.php"); | 12 | require_once(KT_LIB_DIR . "/import/fsimportstorage.inc.php"); |
| 13 | require_once(KT_LIB_DIR . "/import/bulkimport.inc.php"); | 13 | require_once(KT_LIB_DIR . "/import/bulkimport.inc.php"); |
| 14 | 14 | ||
| 15 | +require_once(KT_LIB_DIR . "/validation/dispatchervalidation.inc.php"); | ||
| 16 | + | ||
| 15 | class KTBulkImportDispatcher extends KTStandardDispatcher { | 17 | class KTBulkImportDispatcher extends KTStandardDispatcher { |
| 18 | + function check() { | ||
| 19 | + if ($_REQUEST['fFolderID']) { | ||
| 20 | + $_REQUEST['fFolderId'] = $_REQUEST['fFolderID']; | ||
| 21 | + unset($_REQUEST['fFolderID']); | ||
| 22 | + } | ||
| 23 | + $this->oFolder =& $this->oValidator->validateFolder($_REQUEST['fFolderId']); | ||
| 24 | + $this->oPermission =& $this->oValidator->validatePermissionByName('ktcore.permissions.write'); | ||
| 25 | + $this->oValidator->userHasPermissionOnItem($this->oUser, $this->oPermission, $this->oFolder); | ||
| 26 | + return true; | ||
| 27 | + } | ||
| 28 | + | ||
| 16 | function do_main() { | 29 | function do_main() { |
| 17 | $oTemplating =& KTTemplating::getSingleton(); | 30 | $oTemplating =& KTTemplating::getSingleton(); |
| 18 | $oTemplate = $oTemplating->loadTemplate('ktcore/import/fs_import'); | 31 | $oTemplate = $oTemplating->loadTemplate('ktcore/import/fs_import'); |
| 19 | - $oFolder = Folder::get($_REQUEST['fFolderID']); | 32 | + $aTypes = $this->getDocumentTypes(); |
| 33 | + $iDefaultType = $aTypes[0]->getId(); | ||
| 20 | $aFields = array( | 34 | $aFields = array( |
| 21 | - 'folder_id' => $oFolder->getID(), | ||
| 22 | - 'folder_path_array' => $oFolder->getPathArray(), | ||
| 23 | - 'document_type_choice' => $this->getDocumentTypeChoice('getMetadataForType(this.value);'), | 35 | + 'folder_id' => $this->oFolder->getID(), |
| 36 | + 'folder_path_array' => $this->oFolder->getPathArray(), | ||
| 37 | + 'document_type_choice' => $this->getDocumentTypeChoice($aTypes, 'getMetadataForType(this.value);'), | ||
| 24 | 'generic_metadata_fields' => $this->getGenericMetadataFields(), | 38 | 'generic_metadata_fields' => $this->getGenericMetadataFields(), |
| 25 | - 'type_metadata_fields' => $this->getTypeMetadataFields(1), | 39 | + 'type_metadata_fields' => $this->getTypeMetadataFields($iDefaultType), |
| 26 | ); | 40 | ); |
| 27 | return $oTemplate->render($aFields); | 41 | return $oTemplate->render($aFields); |
| 28 | } | 42 | } |
| 29 | 43 | ||
| 30 | - function getDocumentTypeChoice($onchange = "") { | 44 | + function getDocumentTypeChoice($aTypes, $onchange = "") { |
| 31 | $oTemplating =& KTTemplating::getSingleton(); | 45 | $oTemplating =& KTTemplating::getSingleton(); |
| 32 | $oTemplate = $oTemplating->loadTemplate('ktcore/document/document_type_choice'); | 46 | $oTemplate = $oTemplating->loadTemplate('ktcore/document/document_type_choice'); |
| 33 | $aFields = array( | 47 | $aFields = array( |
| 34 | - 'document_types' => DocumentType::getList(), | 48 | + 'document_types' => $aTypes, |
| 35 | 'onchange' => $onchange, | 49 | 'onchange' => $onchange, |
| 36 | ); | 50 | ); |
| 37 | return $oTemplate->render($aFields); | 51 | return $oTemplate->render($aFields); |
| @@ -39,7 +53,7 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { | @@ -39,7 +53,7 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { | ||
| 39 | 53 | ||
| 40 | function getGenericMetadataFields() { | 54 | function getGenericMetadataFields() { |
| 41 | $oTemplating = KTTemplating::getSingleton(); | 55 | $oTemplating = KTTemplating::getSingleton(); |
| 42 | - $oTemplate = $oTemplating->loadTemplate("ktcore/metadata_fields/editable_metadata_fields"); | 56 | + $oTemplate = $oTemplating->loadTemplate("ktcore/metadata/editable_metadata_fields"); |
| 43 | $aTemplateData = array( | 57 | $aTemplateData = array( |
| 44 | 'caption' => _('Generic meta data'), | 58 | 'caption' => _('Generic meta data'), |
| 45 | 'empty_message' => _("No Generic Meta Data"), | 59 | 'empty_message' => _("No Generic Meta Data"), |
| @@ -67,12 +81,25 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { | @@ -67,12 +81,25 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { | ||
| 67 | 'fields' => $aFields, | 81 | 'fields' => $aFields, |
| 68 | ); | 82 | ); |
| 69 | $oTemplating = KTTemplating::getSingleton(); | 83 | $oTemplating = KTTemplating::getSingleton(); |
| 70 | - $oTemplate = $oTemplating->loadTemplate("ktcore/metadata_fields/editable_metadata_fields"); | 84 | + $oTemplate = $oTemplating->loadTemplate("ktcore/metadata/editable_metadata_fields"); |
| 71 | return $oTemplate->render($aTemplateData); | 85 | return $oTemplate->render($aTemplateData); |
| 72 | } | 86 | } |
| 73 | 87 | ||
| 88 | + function getDocumentTypes() { | ||
| 89 | + $sTable = KTUtil::getTableName('folder_doctypes'); | ||
| 90 | + $aQuery = array( | ||
| 91 | + "SELECT document_type_id FROM $sTable WHERE folder_id = ?", | ||
| 92 | + array($this->oFolder->getId()), | ||
| 93 | + ); | ||
| 94 | + $aIds = DBUtil::getResultArrayKey($aQuery, 'document_type_id'); | ||
| 95 | + $aRet = array(); | ||
| 96 | + foreach ($aIds as $iId) { | ||
| 97 | + $aRet[] = DocumentType::get($iId); | ||
| 98 | + } | ||
| 99 | + return $aRet; | ||
| 100 | + } | ||
| 101 | + | ||
| 74 | function do_import() { | 102 | function do_import() { |
| 75 | - $oFolder =& Folder::get($_REQUEST['fFolderID']); | ||
| 76 | $matches = array(); | 103 | $matches = array(); |
| 77 | $aFields = array(); | 104 | $aFields = array(); |
| 78 | foreach ($_REQUEST as $k => $v) { | 105 | foreach ($_REQUEST as $k => $v) { |
| @@ -87,8 +114,7 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { | @@ -87,8 +114,7 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { | ||
| 87 | ); | 114 | ); |
| 88 | 115 | ||
| 89 | $fs =& new KTFSImportStorage($_REQUEST['fPath']); | 116 | $fs =& new KTFSImportStorage($_REQUEST['fPath']); |
| 90 | - $oUser =& User::get($_SESSION['userID']); | ||
| 91 | - $bm =& new KTBulkImportManager($oFolder, $fs, $oUser, $aOptions); | 117 | + $bm =& new KTBulkImportManager($this->oFolder, $fs, $this->oUser, $aOptions); |
| 92 | DBUtil::startTransaction(); | 118 | DBUtil::startTransaction(); |
| 93 | $res = $bm->import(); | 119 | $res = $bm->import(); |
| 94 | if (PEAR::isError($res)) { | 120 | if (PEAR::isError($res)) { |
| @@ -98,19 +124,9 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { | @@ -98,19 +124,9 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { | ||
| 98 | DBUtil::commit(); | 124 | DBUtil::commit(); |
| 99 | } | 125 | } |
| 100 | 126 | ||
| 101 | - controllerRedirect("browse", 'fFolderID=' . $oFolder->getID()); | 127 | + controllerRedirect("browse", 'fFolderID=' . $this->oFolder->getID()); |
| 102 | exit(0); | 128 | exit(0); |
| 103 | } | 129 | } |
| 104 | - | ||
| 105 | - function handleOutput($data) { | ||
| 106 | - global $main; | ||
| 107 | - if (empty($data)) { | ||
| 108 | - $data = ""; | ||
| 109 | - } | ||
| 110 | - $main->bFormDisabled = true; | ||
| 111 | - $main->setCentralPayload($data); | ||
| 112 | - $main->render(); | ||
| 113 | - } | ||
| 114 | } | 130 | } |
| 115 | 131 | ||
| 116 | $d =& new KTBulkImportDispatcher; | 132 | $d =& new KTBulkImportDispatcher; |