Commit 39081d1e15a98a0b23fbdbe0dde829ea74683170

Authored by bshuttle
1 parent f9046d22

- fix folderOrDocument

- move checkout to KTDocumentUtil
- tidy up some extraneous fixmes.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4870 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/browse/browseutil.inc.php
... ... @@ -35,7 +35,7 @@ class KTBrowseUtil {
35 35 $sFolderPath = dirname($sPath);
36 36  
37 37 $aFolderInfo = KTBrowseUtil::_folderOrDocument($sFolderPath);
38   -
  38 +
39 39 if ($aFolderInfo === false) {
40 40 return $aFolderInfo;
41 41 }
... ... @@ -61,7 +61,12 @@ class KTBrowseUtil {
61 61 return array($id, null, null);
62 62 }
63 63  
64   - $sQuery = "SELECT id FROM documents WHERE folder_id = ? AND filename = ?";
  64 + $sQuery = sprintf("SELECT d.id FROM %s AS d" .
  65 + " LEFT JOIN %s AS dm ON (d.metadata_version_id = dm.id) LEFT JOIN %s AS dc ON (dm.content_version_id = dc.id)" .
  66 + " WHERE d.folder_id = ? AND dc.filename = ?",
  67 + KTUtil::getTableName(documents),
  68 + KTUtil::getTableName('document_metadata_version'),
  69 + KTUtil::getTableName('document_content_version'));
65 70 $aParams = array($iFolderID, $sFileName);
66 71 $iDocumentID = DBUtil::getOneResultKey(array($sQuery, $aParams), 'id');
67 72  
... ... @@ -90,7 +95,7 @@ class KTBrowseUtil {
90 95 $sFolderPath = dirname($sPath);
91 96  
92 97 $aFolderNames = split('/', $sFolderPath);
93   -
  98 +
94 99 $iFolderID = 0;
95 100  
96 101 $aRemaining = $aFolderNames;
... ... @@ -115,10 +120,15 @@ class KTBrowseUtil {
115 120 $iFolderID = (int)$id;
116 121 }
117 122  
118   - $sQuery = "SELECT id FROM documents WHERE folder_id = ? AND filename = ?";
  123 + $sQuery = sprintf("SELECT d.id FROM %s AS d" .
  124 + " LEFT JOIN %s AS dm ON (d.metadata_version_id = dm.id) LEFT JOIN %s AS dc ON (dm.content_version_id = dc.id)" .
  125 + " WHERE d.folder_id = ? AND dc.filename = ?",
  126 + KTUtil::getTableName(documents),
  127 + KTUtil::getTableName('document_metadata_version'),
  128 + KTUtil::getTableName('document_content_version'));
119 129 $aParams = array($iFolderID, $sFileName);
120 130 $iDocumentID = DBUtil::getOneResultKey(array($sQuery, $aParams), 'id');
121   -
  131 +
122 132 if (PEAR::isError($iDocumentID)) {
123 133 // XXX: log error
124 134 return false;
... ... @@ -128,6 +138,7 @@ class KTBrowseUtil {
128 138 $sQuery = "SELECT id FROM folders WHERE parent_id = ? AND name = ?";
129 139 $aParams = array($iFolderID, $sFileName);
130 140 $id = DBUtil::getOneResultKey(array($sQuery, $aParams), 'id');
  141 +
131 142 if (PEAR::isError($id)) {
132 143 // XXX: log error
133 144 return false;
... ... @@ -139,9 +150,6 @@ class KTBrowseUtil {
139 150 // XXX: log error
140 151 return array($iFolderID, false);
141 152 }
142   - /* if (substr($path, -1) !== "/") {
143   - header("Location: " . $_SERVER["PHP_SELF"] . "/");
144   - } */
145 153 return array($id, null);
146 154 }
147 155  
... ...
lib/documentmanagement/documentutil.inc.php
... ... @@ -118,6 +118,38 @@ class KTDocumentUtil {
118 118 return true;
119 119 }
120 120  
  121 + function checkout($oDocument, $sCheckoutComment, $oUser) {
  122 + if ($oDocument->getIsCheckedOut()) {
  123 + return PEAR::raiseError('Already checked out.');
  124 + }
  125 +
  126 + // FIXME at the moment errors this _does not_ rollback.
  127 +
  128 + $this->oDocument->setIsCheckedOut(true);
  129 + $this->oDocument->setCheckedOutUserID($oUser->getId());
  130 + if (!$this->oDocument->update()) { return PEAR::raiseError(_("There was a problem checking out the document.")); }
  131 +
  132 + $oKTTriggerRegistry = KTTriggerRegistry::getSingleton();
  133 + $aTriggers = $oKTTriggerRegistry->getTriggers('checkout', 'postValidate');
  134 + foreach ($aTriggers as $aTrigger) {
  135 + $sTrigger = $aTrigger[0];
  136 + $oTrigger = new $sTrigger;
  137 + $aInfo = array(
  138 + "document" => $this->oDocument,
  139 + );
  140 + $oTrigger->setInfo($aInfo);
  141 + $ret = $oTrigger->postValidate();
  142 + if (PEAR::isError($ret)) {
  143 + return $ret;
  144 + }
  145 + }
  146 +
  147 + $oDocumentTransaction = & new DocumentTransaction($oDocument, $sCheckoutComment, 'ktcore.transactions.check_out');
  148 + $oDocumentTransaction->create();
  149 +
  150 + return true;
  151 + }
  152 +
121 153 function &_add($oFolder, $sFilename, $oUser, $aOptions) {
122 154 global $default;
123 155  
... ...
plugins/ktcore/KTDocumentActions.php
... ... @@ -106,36 +106,13 @@ class KTDocumentCheckOutAction extends KTDocumentAction {
106 106 $oTemplate =& $this->oValidator->validateTemplate('ktcore/action/checkout_final');
107 107 $sReason = $this->oValidator->validateString(KTUtil::arrayGet($_REQUEST, 'reason'), $aErrorOptions);
108 108  
109   -
110   - // flip the checkout status
111   - $this->oDocument->setIsCheckedOut(true);
112   - // set the user checking the document out
113   - $this->oDocument->setCheckedOutUserID($_SESSION["userID"]);
114   - // update it
115   - if (!$this->oDocument->update()) {
116   - $_SESSION['KTErrorMessage'][] = _("There was a problem checking out the document.");
117   - controllerRedirect('viewDocument', 'fDocumentId=' . $this->oDocument->getId());
118   - }
119   -
120   - $oKTTriggerRegistry = KTTriggerRegistry::getSingleton();
121   - $aTriggers = $oKTTriggerRegistry->getTriggers('checkout', 'postValidate');
122   - foreach ($aTriggers as $aTrigger) {
123   - $sTrigger = $aTrigger[0];
124   - $oTrigger = new $sTrigger;
125   - $aInfo = array(
126   - "document" => $this->oDocument,
127   - );
128   - $oTrigger->setInfo($aInfo);
129   - $ret = $oTrigger->postValidate();
130   - if (PEAR::isError($ret)) {
131   - $this->oDocument->delete();
132   - return $ret;
133   - }
  109 + $this->startTransaction();
  110 + $res = KTDocumentUtil::checkout($this->oDocument, $sReason, $this->oUser);
  111 + if (PEAR::isError($res)) {
  112 + return $this->errorRedirectToMain(sprintf(_('Failed to check out the document: %s'), $res->getMessage()));
134 113 }
135   -
136   - $oDocumentTransaction = & new DocumentTransaction($this->oDocument, $sReason, 'ktcore.transactions.check_out');
137   - $oDocumentTransaction->create();
138   -
  114 +
  115 + $this->commitTransaction();
139 116 $oTemplate->setData(array(
140 117 'context' => &$this,
141 118 'reason' => $sReason,
... ...
view.php
... ... @@ -104,10 +104,6 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
104 104  
105 105 $document_data["field_values"] = $field_values;
106 106  
107   -
108   - // FIXME generate portlets
109   - // FIXME generate breadcrumb
110   -
111 107 // Fieldset generation.
112 108 //
113 109 // we need to create a set of FieldsetDisplay objects
... ...