Commit 03754f49cb0e9de980a4151d5345143bc0fe198e

Authored by nbm
1 parent c983afe6

Add browseToUnitFolder, defaulting to false, which determines whether

the user browses to the root folder first, or to their (first) unit
folder.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@5093 c91229c3-7414-0410-bfa2-8a42b809f60b
browse.php
@@ -109,9 +109,17 @@ class BrowseDispatcher extends KTStandardDispatcher { @@ -109,9 +109,17 @@ class BrowseDispatcher extends KTStandardDispatcher {
109 109
110 // if we're going to main ... 110 // if we're going to main ...
111 if ($this->browse_mode == 'folder') { 111 if ($this->browse_mode == 'folder') {
112 -  
113 -  
114 - $in_folder_id = KTUtil::arrayGet($_REQUEST, "fFolderId", 1); 112 + $in_folder_id = KTUtil::arrayGet($_REQUEST, "fFolderId");
  113 + if (empty($in_folder_id)) {
  114 + $oConfig = KTConfig::getSingleton();
  115 + if ($oConfig->get('tweaks/browseToUnitFolder')) {
  116 + $iHomeFolderId = $this->oUser->getHomeFolderId();
  117 + if ($iHomeFolderId) {
  118 + $in_folder_id = $iHomeFolderId;
  119 + }
  120 + }
  121 + }
  122 +
115 $folder_id = (int) $in_folder_id; // conveniently, will be 0 if not possible. 123 $folder_id = (int) $in_folder_id; // conveniently, will be 0 if not possible.
116 if ($folder_id == 0) { 124 if ($folder_id == 0) {
117 $folder_id = 1; 125 $folder_id = 1;
config/config.ini
@@ -104,6 +104,10 @@ useAcceptLanguageHeader = true @@ -104,6 +104,10 @@ useAcceptLanguageHeader = true
104 ; file, change the following to true 104 ; file, change the following to true
105 phpErrorLogFile = false 105 phpErrorLogFile = false
106 106
  107 +; Whether to browse to the user's (first) unit when first going to the
  108 +; browse section
  109 +browseToUnitFolder = default
  110 +
107 [email] 111 [email]
108 ; email settings 112 ; email settings
109 emailServer = localhost 113 emailServer = localhost
config/dmsDefaults.php
@@ -412,7 +412,7 @@ $oKTConfig->setdefaultns("KnowledgeTree", "execSearchPath", $_SERVER['PATH']); @@ -412,7 +412,7 @@ $oKTConfig->setdefaultns("KnowledgeTree", "execSearchPath", $_SERVER['PATH']);
412 $oKTConfig->setdefaultns("KnowledgeTree", "pathInfoSupport", false); 412 $oKTConfig->setdefaultns("KnowledgeTree", "pathInfoSupport", false);
413 $oKTConfig->setdefaultns("storage", "manager", 'KTOnDiskPathStorageManager'); 413 $oKTConfig->setdefaultns("storage", "manager", 'KTOnDiskPathStorageManager');
414 $oKTConfig->setdefaultns("config", "useDatabaseConfiguration", false); 414 $oKTConfig->setdefaultns("config", "useDatabaseConfiguration", false);
415 -$oKTConfig->setdefaultns("tweaks", "browseToRoot", false); 415 +$oKTConfig->setdefaultns("tweaks", "browseToUnitFolder", false);
416 $oKTConfig->setdefaultns("tweaks", "genericMetaDataRequired", true); 416 $oKTConfig->setdefaultns("tweaks", "genericMetaDataRequired", true);
417 $oKTConfig->setdefaultns("tweaks", "phpErrorLogFile", false); 417 $oKTConfig->setdefaultns("tweaks", "phpErrorLogFile", false);
418 $oKTConfig->setdefaultns("tweaks", "developmentWindowLog", false); 418 $oKTConfig->setdefaultns("tweaks", "developmentWindowLog", false);
lib/users/User.inc
@@ -110,28 +110,6 @@ class User extends KTEntity { @@ -110,28 +110,6 @@ class User extends KTEntity {
110 function getAuthenticationDetails2() { return $this->sAuthenticationDetails2; } 110 function getAuthenticationDetails2() { return $this->sAuthenticationDetails2; }
111 function setAuthenticationDetails2($sNewValue) { $this->sAuthenticationDetails2 = $sNewValue; } 111 function setAuthenticationDetails2($sNewValue) { $this->sAuthenticationDetails2 = $sNewValue; }
112 112
113 - /**  
114 - * Delete the current object from the database  
115 - *  
116 - * @return boolean true on successful deletion, false otherwise and set $_SESSION["errorMessage"]  
117 - *  
118 - */  
119 - function deleteFromSystem() {  
120 - global $default, $lang_err_database, $lang_err_object_key;  
121 - //only delete the object if it exists in the database  
122 - if ($this->iId >= 0) {  
123 - $sql = $default->db;  
124 - $result = $sql->query("DELETE FROM $default->users_groups_table WHERE user_id = $this->iId");  
125 - if ($result) {  
126 - return true;  
127 - }  
128 - $_SESSION["errorMessage"] = $lang_err_database;  
129 - return false;  
130 - }  
131 - $_SESSION["errorMessage"] = $lang_err_object_key;  
132 - return false;  
133 - }  
134 -  
135 function &get($iId) { 113 function &get($iId) {
136 return KTEntityUtil::get('User', $iId); 114 return KTEntityUtil::get('User', $iId);
137 } 115 }
@@ -195,49 +173,19 @@ class User extends KTEntity { @@ -195,49 +173,19 @@ class User extends KTEntity {
195 173
196 /** 174 /**
197 * Static function 175 * Static function
198 - * Return the unitIDs of the specified user  
199 - *  
200 - * @param int the id the user to lookup the unit for  
201 - * @return array the unitIDs, false otherwise  
202 - */  
203 - function getUnitIDs($userID) {  
204 - global $default, $lang_err_database;  
205 -  
206 - $sql = $default->db;  
207 - /*ok*/$result = $sql->query(array("SELECT DISTINCT gul.unit_id FROM $default->users_groups_table ugl " .  
208 - "INNER JOIN $default->groups_units_table gul ON ugl.group_id = gul.group_id ".  
209 - "WHERE ugl.user_id = ?", $userID));  
210 - if ($result) {  
211 - $aUnitIDs = array();  
212 - while ($sql->next_record()) {  
213 - $aUnitIDs[] = $sql->f("unit_id");  
214 - }  
215 - return $aUnitIDs;  
216 - }  
217 - return false;  
218 - }  
219 -  
220 - /**  
221 - * Static function  
222 * Return the useID for the specified user 176 * Return the useID for the specified user
223 * 177 *
224 * @param int the id the user to lookup the unit for 178 * @param int the id the user to lookup the unit for
225 * @return int the unitID, false otherwise and $_SESSION["errorMessage"] set 179 * @return int the unitID, false otherwise and $_SESSION["errorMessage"] set
226 */ 180 */
227 - function getUnitID($userID) {  
228 - global $default, $lang_err_database;  
229 -  
230 - $sql = $default->db;  
231 - /*ok*/$result = $sql->query(array("SELECT DISTINCT gul.unit_id FROM $default->users_groups_table ugl " .  
232 - "INNER JOIN $default->groups_units_table gul ON ugl.group_id = gul.group_id ".  
233 - "WHERE ugl.user_id = ?", $userID));  
234 - if ($result) {  
235 - if ($sql->next_record()) {  
236 - return $sql->f("unit_id");  
237 - }  
238 - }  
239 - $_SESSION["errorMessage"] = $lang_err_database;  
240 - return false; 181 + function getUnitId() {
  182 + $ugl = KTUtil::getTableName("users_groups");
  183 + $g = KTUtil::getTableName("groups");
  184 + $aQuery = array(
  185 + "SELECT DISTINCT g.unit_id AS unit_id FROM $ugl AS ugl INNER JOIN $g AS g ON ugl.group_id = g.id WHERE ugl.user_id = ?",
  186 + array($this->iId),
  187 + );
  188 + return DBUtil::getOneResultKey($aQuery, 'unit_id');
241 } 189 }
242 190
243 /** 191 /**
@@ -258,71 +206,16 @@ class User extends KTEntity { @@ -258,71 +206,16 @@ class User extends KTEntity {
258 /** Static function 206 /** Static function
259 * Gets the user's default top level folder for the current user 207 * Gets the user's default top level folder for the current user
260 */ 208 */
261 - function getUserRootFolderID() {  
262 - global $default;  
263 -  
264 - $unitID = User::getUnitID($_SESSION["userID"]);  
265 - $iFolderID;  
266 -  
267 - if ($unitID) {  
268 - // if the user is in a unit, start at the unit's root folder  
269 -  
270 - // lookup the unit name  
271 - $unitName = lookupField($default->units_table, "name", "id", $unitID); 209 + function getHomeFolderID() {
  210 + $iUnitId = $this->getUnitId();
272 211
273 - // the unit root folder has the same name as the unit  
274 - // FIXME: dodgy i know, but its easy  
275 - $unitRootFolderName = $unitName;  
276 -  
277 - // now lookup the folderID  
278 - $aFolders = Folder::getList(array("name = ? and parent_id = 1", $unitRootFolderName));/*ok*/  
279 -  
280 - if (!$aFolders) {  
281 - // no folder exists with this name, so start at the root  
282 - $iFolderID = lookupID($default->folders_table, "parent_id", 0);  
283 - } else {  
284 - $iFolderID = $aFolders[0]->getID();  
285 - }  
286 - } else {  
287 - $iFolderID = lookupID($default->folders_table, "parent_id", 0); 212 + if (empty($iUnitId)) {
  213 + return false;
288 } 214 }
289 - return $iFolderID;  
290 - }  
291 -  
292 215
293 - /**  
294 - * Returns a unit administrator for the current user  
295 - */  
296 - function getUnitAdminUser() {  
297 - global $default;  
298 - // find out what unit we're in  
299 - $iUnitID = User::getUnitID($_SESSION["userID"]);  
300 - if ($iUnitID) {  
301 - // then find the group that is unit_admin  
302 - $sql = $default->db;  
303 - $sEmail = "";  
304 - if ($sql->query(array("SELECT group_id FROM $default->groups_units_table GUL " . /*ok*/  
305 - "INNER JOIN $default->groups_table GL on GUL.group_id=GL.id " .  
306 - "WHERE GL.is_unit_admin=1 " .  
307 - "AND unit_id = ?", $iUnitID))) {  
308 - // get the first record  
309 - if ($sql->next_record()) {  
310 - $iGroupID = $sql->f("group_id");  
311 - // then find the first user in this group that has an email address  
312 - if ($sql->query(array("SELECT U.id, U.email FROM $default->users_table U " . /*ok*/  
313 - "INNER JOIN $default->users_groups_table UGL on UGL.user_id=U.id " .  
314 - "WHERE group_id = ?", $iGroupID))) {  
315 - while ($sql->next_record()) {  
316 - if (strlen($sql->f("email")) > 0) {  
317 - return User::get($sql->f("id"));  
318 - }  
319 - }  
320 - }  
321 - }  
322 - }  
323 - }  
324 - return false;  
325 - } 216 + $oUnit =& Unit::get($iUnitId);
  217 + return $oUnit->getFolderId();
  218 + }
326 219
327 function &createFromArray($aOptions) { return KTEntityUtil::createFromArray('User', $aOptions); } 220 function &createFromArray($aOptions) { return KTEntityUtil::createFromArray('User', $aOptions); }
328 function &getByUserName($sUserName, $aOptions = null) { 221 function &getByUserName($sUserName, $aOptions = null) {