Commit 09924229324a240b4da9bfbb0ecd208820668db0

Authored by nbm
1 parent b11e5520

Build the default criteria list from the browser_criteria table.

Add a columns helper method to make building the table easier.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3080 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 81 additions and 11 deletions
lib/browse/Browser.inc
@@ -73,7 +73,7 @@ class BrowseCriterion { @@ -73,7 +73,7 @@ class BrowseCriterion {
73 return array($sFolderQuery, $aParams); 73 return array($sFolderQuery, $aParams);
74 } 74 }
75 75
76 - $sFolderQuery .= "WHERE parent_id = ? ORDER BY $this->sSortField " . $this->oBrowser->sSortDirection; 76 + $sFolderQuery .= "WHERE parent_id = ? ORDER BY " . $this->getFolderSortField() . " " . $this->oBrowser->sSortDirection;
77 $aParams = array($iParentID); 77 $aParams = array($iParentID);
78 return array($sFolderQuery, $aParams); 78 return array($sFolderQuery, $aParams);
79 } 79 }
@@ -104,7 +104,7 @@ class BrowseCriterion { @@ -104,7 +104,7 @@ class BrowseCriterion {
104 } else { 104 } else {
105 $sDocumentJoinField = $this->getDocumentField(); 105 $sDocumentJoinField = $this->getDocumentField();
106 // $sSortField = $this->getSortField(); 106 // $sSortField = $this->getSortField();
107 - $documentQuery .= "ORDER BY $this->sSortField " . $this->oBrowser->sSortDirection; 107 + $documentQuery .= "ORDER BY " . $this->getSortField() . " " . $this->oBrowser->sSortDirection;
108 } 108 }
109 109
110 return array($documentQuery, $aParams); 110 return array($documentQuery, $aParams);
@@ -118,9 +118,17 @@ class BrowseCriterion { @@ -118,9 +118,17 @@ class BrowseCriterion {
118 return $this->sSortField; 118 return $this->sSortField;
119 } 119 }
120 120
  121 + function getFolderSortField () {
  122 + return $this->sSortField;
  123 + }
  124 +
121 function getLookup () { 125 function getLookup () {
122 return $this->aLookup; 126 return $this->aLookup;
123 } 127 }
  128 +
  129 + function getName() {
  130 + return $this->sDocumentField;
  131 + }
124 } 132 }
125 133
126 class NameCriterion extends BrowseCriterion { 134 class NameCriterion extends BrowseCriterion {
@@ -148,15 +156,34 @@ class NameCriterion extends BrowseCriterion { @@ -148,15 +156,34 @@ class NameCriterion extends BrowseCriterion {
148 function folderDisplay($oFolder) { 156 function folderDisplay($oFolder) {
149 return displayFolderLink($oFolder); 157 return displayFolderLink($oFolder);
150 } 158 }
  159 +
  160 + function getFolderSortField() {
  161 + return 'name';
  162 + }
  163 +}
  164 +
  165 +class IDCriterion extends BrowseCriterion {
  166 + var $bFolderCriterion = true;
  167 + function documentDisplay ($oDocument) {
  168 + return $oDocument->getID();
  169 + }
  170 + function folderDisplay($oFolder) {
  171 + return $oFolder->getID();
  172 + }
151 } 173 }
152 174
153 class TitleCriterion extends BrowseCriterion { 175 class TitleCriterion extends BrowseCriterion {
  176 + var $bFolderCriterion = true;
154 function documentDisplay ($oDocument) { 177 function documentDisplay ($oDocument) {
155 return $oDocument->getName(); 178 return $oDocument->getName();
156 } 179 }
157 function folderDisplay($oFolder) { 180 function folderDisplay($oFolder) {
158 return $oFolder->getDescription(); 181 return $oFolder->getDescription();
159 } 182 }
  183 +
  184 + function getFolderSortField() {
  185 + return 'description';
  186 + }
160 } 187 }
161 188
162 class CreatorCriterion extends BrowseCriterion { 189 class CreatorCriterion extends BrowseCriterion {
@@ -189,6 +216,9 @@ class DateCreatedCriterion extends BrowseCriterion { @@ -189,6 +216,9 @@ class DateCreatedCriterion extends BrowseCriterion {
189 $aDocumentTransaction = DocumentTransaction::getList("transaction_id=1 AND document_id=" . $oDocument->getID()); 216 $aDocumentTransaction = DocumentTransaction::getList("transaction_id=1 AND document_id=" . $oDocument->getID());
190 return $aDocumentTransaction[0]->dDateTime; 217 return $aDocumentTransaction[0]->dDateTime;
191 } 218 }
  219 + function getName() {
  220 + return "datecreated";
  221 + }
192 } 222 }
193 223
194 class DocumentTypeCriterion extends BrowseCriterion { 224 class DocumentTypeCriterion extends BrowseCriterion {
@@ -235,6 +265,43 @@ class GenericMetadataCriterion extends BrowseCriterion { @@ -235,6 +265,43 @@ class GenericMetadataCriterion extends BrowseCriterion {
235 } 265 }
236 return $res; 266 return $res;
237 } 267 }
  268 +
  269 + function getName() {
  270 + global $default;
  271 + $aQuery = array("SELECT name FROM $default->document_fields_table WHERE id = ?", array($this->iFieldID)); /*ok*/
  272 + return "gmd_" . DBUtil::getOneResultKey($aQuery, 'name');
  273 + }
  274 +}
  275 +
  276 +function &getCriterionByNumber(&$aSortCriteria, &$oBrowser, $iID) {
  277 + global $default;
  278 + switch ($iID) {
  279 + case -1:
  280 + $oCriterion =& new NameCriterion(_("Name"), 'filename', 'filename', $oBrowser);
  281 + break;
  282 + case -2:
  283 + $oCriterion =& new TitleCriterion(_("Title"), 'name', 'name', $oBrowser);
  284 + break;
  285 + case -3:
  286 + $oCriterion =& new CreatorCriterion(_("Creator"), 'creator_id', 'creator_id', $oBrowser);
  287 + break;
  288 + case -4:
  289 + $oCriterion =& new DateCreatedCriterion(_("Date Created"), 'id', 'id', $oBrowser);
  290 + break;
  291 + case -5:
  292 + $oCriterion =& new DocumentTypeCriterion(_("Document Type"), 'document_type_id', 'document_type_id', $oBrowser);
  293 + break;
  294 + case -6:
  295 + $oCriterion =& new IDCriterion(_("ID"), 'id', 'id', $oBrowser);
  296 + break;
  297 + default:
  298 + $aQuery = array("SELECT name FROM $default->document_fields_table WHERE id = ?", array($iID)); /*ok*/
  299 + $sName = DBUtil::getOneResultKey($aQuery, 'name');
  300 + $oCriterion =& new GenericMetadataCriterion($sName, 'id', 'id', $oBrowser, $iID);
  301 + break;
  302 +
  303 + }
  304 + return $oCriterion;
238 } 305 }
239 306
240 class Browser { 307 class Browser {
@@ -270,17 +337,16 @@ class Browser { @@ -270,17 +337,16 @@ class Browser {
270 function Browser($sNewSortField, $sNewSortDirection, $aNewSortCriteria = array()) { 337 function Browser($sNewSortField, $sNewSortDirection, $aNewSortCriteria = array()) {
271 // default sort criteria 338 // default sort criteria
272 if (count($aNewSortCriteria) == 0) { 339 if (count($aNewSortCriteria) == 0) {
273 - $aNewSortCriteria = array (  
274 - "name" => new NameCriterion(_("Title"), 'name', 'name', $this),  
275 - "filename" => new TitleCriterion(_("Description"), 'filename', 'filename', $this),  
276 - "creator_id" => new CreatorCriterion(_("Creator"), 'creator_id', 'creator_id', $this),  
277 - "id" => new DateCreatedCriterion(_("Date Created"), 'id', 'id', $this),  
278 - "document_type_id" => new DocumentTypeCriterion(_("Document Type"), 'document_type_id', 'document_type_id', $this),  
279 - "category" => new GenericMetadataCriterion("Category", 'id', 'id', $this, 1),  
280 - ); 340 + $aNewSortCriteria = array();
  341 + $aQuery = array("SELECT criteria_id FROM browse_criteria ORDER BY precedence", array()); /*ok*/
  342 + $aSelectedCriteriaIDs = DBUtil::getResultArrayKey($aQuery, 'criteria_id');
  343 + foreach ($aSelectedCriteriaIDs as $iID) {
  344 + $oCriterion =& getCriterionByNumber($aNewSortCriteria, $this, $iID);
  345 + $aNewSortCriteria[$oCriterion->getName()] =& $oCriterion;
  346 + }
281 } 347 }
282 348
283 - $this->aSortCriteria = $aNewSortCriteria; 349 + $this->aSortCriteria =& $aNewSortCriteria;
284 $this->sSortField = $sNewSortField; 350 $this->sSortField = $sNewSortField;
285 $this->sSortDirection = $sNewSortDirection; 351 $this->sSortDirection = $sNewSortDirection;
286 } 352 }
@@ -350,6 +416,10 @@ class Browser { @@ -350,6 +416,10 @@ class Browser {
350 return $this->aOptions; 416 return $this->aOptions;
351 } 417 }
352 418
  419 + function columns() {
  420 + return count($this->aSortCriteria);
  421 + }
  422 +
353 /** 423 /**
354 * [Abstract] Browse the documents 424 * [Abstract] Browse the documents
355 * 425 *