Commit f0a9c0b7652e070ef9dbfd471695515da6d028a6
1 parent
1f1cd630
added lookups relative to userID instead of expecting organisation and unit iden…
…tifiers to be on the session git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@328 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
29 additions
and
15 deletions
lib/documentmanagement/DocumentBrowser.inc
| @@ -26,33 +26,47 @@ class DocumentBrowser { | @@ -26,33 +26,47 @@ class DocumentBrowser { | ||
| 26 | 26 | ||
| 27 | if ($folderID == -1) { | 27 | if ($folderID == -1) { |
| 28 | // no folder specified, so start at the root for this users organisation | 28 | // no folder specified, so start at the root for this users organisation |
| 29 | - // TODO: organisationID (and name) should be on session | 29 | + |
| 30 | + // lookup this users groups | ||
| 31 | + $groupIDs = lookupGroupIDs($_SESSION["userID"]); | ||
| 32 | + $default->log->debug("DocumentBrowser::browseByFolder: groupIDs=" . arrayToString($groupIDs)); | ||
| 30 | 33 | ||
| 31 | - // TODO: use the organisation to find the root folder | ||
| 32 | - if (!isset($_SESSION["organisationName"])) { | ||
| 33 | - $_SESSION["organisationName"] = "MRC"; | ||
| 34 | - } | ||
| 35 | - $rootFolderName = $_SESSION["organisationName"] . " Document Root"; | 34 | + // look up this users unit |
| 35 | + // FIXME: what if the user belongs to multiple units? | ||
| 36 | + $unitID = lookupID($default->owl_groups_units_table, "group_id", $groupIDs[0]); | ||
| 37 | + // lookup the unit name | ||
| 38 | + $unitName = lookupField($default->owl_units_table, "name", "id", $unitID); | ||
| 39 | + $default->log->debug("DocumentBrowser::browseByFolder: unitID=$unitID; unitName=$unitName"); | ||
| 40 | + | ||
| 41 | + // look up the organisation name for this user | ||
| 42 | + $organisationID = lookupField($default->owl_units_table, "organisation_id", "id", $unitID); | ||
| 43 | + $organisationName = lookupField($default->owl_organisations_table, "name", "id", $organisationID); | ||
| 44 | + $default->log->debug("DocumentBrowser::browseByFolder: organisationID=$organisationID; orgName=$organisationName"); | ||
| 45 | + | ||
| 46 | + // construct the folder name from the organisation | ||
| 47 | + $rootFolderName = $organisationName . " Document Root"; | ||
| 48 | + | ||
| 36 | // lookup the id of the root folder | 49 | // lookup the id of the root folder |
| 37 | - $folderID = lookupID($default->owl_folders_table, "name", "'$rootFolderName'"); | 50 | + $folderID = lookupID($default->owl_folders_table, "name", "$rootFolderName"); |
| 51 | + $default->log->debug("DocumentBrowser::browseByFolder: folderID=$folderID"); | ||
| 38 | 52 | ||
| 39 | // if this is a system administrator, start her at the ROOT | 53 | // if this is a system administrator, start her at the ROOT |
| 40 | // TODO: add to default->sysadmin_group | 54 | // TODO: add to default->sysadmin_group |
| 41 | - if ($this->checkGroup("System Administrators", $_SESSION["groupID"])) { | 55 | + if ($this->checkGroup("System Administrators", $groupIDs)) { |
| 42 | $folderQuery = "SELECT * FROM $default->owl_folders_table WHERE name='$rootFolderName'"; | 56 | $folderQuery = "SELECT * FROM $default->owl_folders_table WHERE name='$rootFolderName'"; |
| 43 | } else { | 57 | } else { |
| 44 | // otherwise start everyone relative to their unit | 58 | // otherwise start everyone relative to their unit |
| 45 | 59 | ||
| 46 | // FIXME: actually need to lookup the unit root folder- which should map to the unitname | 60 | // FIXME: actually need to lookup the unit root folder- which should map to the unitname |
| 47 | // and descend directly from the organisation document root | 61 | // and descend directly from the organisation document root |
| 48 | - $unitRootFolder = $_SESSION["unitName"] . " Document Root"; | 62 | + |
| 63 | + $default->log->debug("DocumentBrowser::browseByFolder: unitName=$unitName"); | ||
| 64 | + | ||
| 65 | + $unitRootFolder = $unitName . " Document Root"; | ||
| 49 | 66 | ||
| 50 | - $unitID = $_SESSION["unitID"]; | ||
| 51 | // lookup descendant folders with the appropriate unit set | 67 | // lookup descendant folders with the appropriate unit set |
| 52 | $folderQuery = "SELECT * from $default->owl_folders_table " . | 68 | $folderQuery = "SELECT * from $default->owl_folders_table " . |
| 53 | - "WHERE unit_id=" . $unitID . | ||
| 54 | - " AND parent_id='$folderID'" . | ||
| 55 | - " AND name='$unitRootFolder'"; | 69 | + "WHERE name='$unitRootFolder'"; |
| 56 | } | 70 | } |
| 57 | } else { | 71 | } else { |
| 58 | // start from the specified folder | 72 | // start from the specified folder |
| @@ -121,7 +135,7 @@ class DocumentBrowser { | @@ -121,7 +135,7 @@ class DocumentBrowser { | ||
| 121 | $sql = new Owl_DB(); | 135 | $sql = new Owl_DB(); |
| 122 | 136 | ||
| 123 | // lookup document_fields id for category | 137 | // lookup document_fields id for category |
| 124 | - $categoryFieldID = lookupID($default->owl_fields_table, "name", "'$categoryField'"); | 138 | + $categoryFieldID = lookupID($default->owl_fields_table, "name", "$categoryField"); |
| 125 | $default->log->debug("DocumentBrowser::browseByCategory categoryFieldID=$categoryFieldID"); | 139 | $default->log->debug("DocumentBrowser::browseByCategory categoryFieldID=$categoryFieldID"); |
| 126 | 140 | ||
| 127 | if ($category == "") { | 141 | if ($category == "") { |
| @@ -216,7 +230,7 @@ class DocumentBrowser { | @@ -216,7 +230,7 @@ class DocumentBrowser { | ||
| 216 | global $default; | 230 | global $default; |
| 217 | $sql = new Owl_DB(); | 231 | $sql = new Owl_DB(); |
| 218 | // lookup the id of $requiredGroupName | 232 | // lookup the id of $requiredGroupName |
| 219 | - $requiredGroupID = lookupID($default->owl_groups_table, "name", "'$requiredGroupName'"); | 233 | + $requiredGroupID = lookupID($default->owl_groups_table, "name", "$requiredGroupName"); |
| 220 | $default->log->debug("DocumentBrowser::checkGroup reqGrpID=$requiredGroupID"); | 234 | $default->log->debug("DocumentBrowser::checkGroup reqGrpID=$requiredGroupID"); |
| 221 | if ($requiredGroupID) { | 235 | if ($requiredGroupID) { |
| 222 | // now loop through the array and check if we're in the group | 236 | // now loop through the array and check if we're in the group |