Commit 621262a752de7e44c9fd0247550f00bd64987bc3

Authored by bshuttle
1 parent 304aa1d8

- Improvements to move and delete


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4933 c91229c3-7414-0410-bfa2-8a42b809f60b
browse.php
@@ -563,6 +563,12 @@ class BrowseDispatcher extends KTStandardDispatcher { @@ -563,6 +563,12 @@ class BrowseDispatcher extends KTStandardDispatcher {
563 $move_code = KTUtil::arrayGet($_REQUEST, 'fMoveCode'); 563 $move_code = KTUtil::arrayGet($_REQUEST, 'fMoveCode');
564 $target_folder = KTUtil::arrayGet($_REQUEST, 'fFolderId'); 564 $target_folder = KTUtil::arrayGet($_REQUEST, 'fFolderId');
565 $reason = KTUtil::arrayGet($_REQUEST, 'sReason'); 565 $reason = KTUtil::arrayGet($_REQUEST, 'sReason');
  566 + if (empty($reason)) {
  567 + $_SESSION['KTErrorMessage'][] = _('You must supply a reason.');
  568 + return $this->do_finaliseMove();
  569 + }
  570 +
  571 +
566 572
567 // FIXME check perms? or will that happen "lower" in the stack. 573 // FIXME check perms? or will that happen "lower" in the stack.
568 574
@@ -725,10 +731,14 @@ class BrowseDispatcher extends KTStandardDispatcher { @@ -725,10 +731,14 @@ class BrowseDispatcher extends KTStandardDispatcher {
725 731
726 $fFolderId = KTUtil::arrayGet($_REQUEST, 'fFolderId', 1); 732 $fFolderId = KTUtil::arrayGet($_REQUEST, 'fFolderId', 1);
727 733
728 - $aErrorOptions = array('message' => _('You must supply a reason')); 734 +
729 735
730 $res = KTUtil::arrayGet($_REQUEST,'sReason'); 736 $res = KTUtil::arrayGet($_REQUEST,'sReason');
731 - $sReason = $this->oValidator->notEmpty($res, $aErrorOptions); 737 + $sReason = $res;
  738 + if (empty($res)) {
  739 + $_SESSION['KTErrorMessage'][] = _('You must supply a reason.');
  740 + return $this->do_startDelete();
  741 + }
732 742
733 743
734 744
lib/groups/GroupUtil.php
@@ -325,6 +325,41 @@ class GroupUtil { @@ -325,6 +325,41 @@ class GroupUtil {
325 return $aExpandedGroups; 325 return $aExpandedGroups;
326 } 326 }
327 // }}} 327 // }}}
  328 +
  329 + // {{{ getMembershipReason
  330 + function getMembershipReason($oUser, $oGroup) {
  331 + $aGroupArray = GroupUtil::buildGroupArray();
  332 +
  333 + // short circuit
  334 +
  335 + if ($oGroup->hasMember($oUser)) { return sprintf(_('%s is a direct member.'), $oUser->getName()); }
  336 +
  337 +
  338 + $aSubgroups = (array) $aGroupArray[$oGroup->getId()];
  339 + if (empty($aSubgroups)) {
  340 + return null; // not a member, no subgroups.
  341 + }
  342 +
  343 + $sTable = KTUtil::getTableName('users_groups');
  344 + $sQuery = 'SELECT group_id FROM ' . $sTable . ' WHERE user_id = ? AND group_id IN (' . DBUtil::paramArray($aSubgroups) . ')';
  345 + $aParams = array($oUser->getId());
  346 + $aParams = array_merge($aParams, $aSubgroups);
  347 +
  348 + $res = DBUtil::getOneResult(array($sQuery, $aParams));
  349 + if (PEAR::isError($res)) {
  350 + return $res;
  351 + } else if (is_null($res)) {
  352 + return null; // not a member
  353 + } // else {
  354 +
  355 + $oSubgroup = Group::get($res['group_id']);
  356 + if (PEAR::isError($oSubgroup)) { return $oSubgroup; }
  357 +
  358 + return sprintf(_('%s is a member of %s'), $oUser->getName(), $oSubgroup->getName()); // could be error, but errors are caught.
  359 +
  360 + // }
  361 + }
  362 + // }}}
328 } 363 }
329 // }}} 364 // }}}
330 365
plugins/ktcore/admin/groupManagement.php
@@ -230,9 +230,17 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher { @@ -230,9 +230,17 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
230 $usersAdded = array(); 230 $usersAdded = array();
231 $usersRemoved = array(); 231 $usersRemoved = array();
232 232
  233 + $addWarnings = array();
  234 + $removeWarnings = array();
  235 +
233 foreach ($aUserToAddIDs as $iUserId ) { 236 foreach ($aUserToAddIDs as $iUserId ) {
234 if ($iUserId > 0) { 237 if ($iUserId > 0) {
235 $oUser= User::Get($iUserId); 238 $oUser= User::Get($iUserId);
  239 + $memberReason = GroupUtil::getMembershipReason($oUser, $oGroup);
  240 + //var_dump($memberReason);
  241 + if (!(PEAR::isError($memberReason) || is_null($memberReason))) {
  242 + $addWarnings[] = $memberReason;
  243 + }
236 $res = $oGroup->addMember($oUser); 244 $res = $oGroup->addMember($oUser);
237 if (PEAR::isError($res) || $res == false) { 245 if (PEAR::isError($res) || $res == false) {
238 $this->errorRedirectToMain(sprintf(_('Unable to add user "%s" to group "%s"'), $oUser->getName(), $oGroup->getName())); 246 $this->errorRedirectToMain(sprintf(_('Unable to add user "%s" to group "%s"'), $oUser->getName(), $oGroup->getName()));
@@ -247,10 +255,29 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher { @@ -247,10 +255,29 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
247 $res = $oGroup->removeMember($oUser); 255 $res = $oGroup->removeMember($oUser);
248 if (PEAR::isError($res) || $res == false) { 256 if (PEAR::isError($res) || $res == false) {
249 $this->errorRedirectToMain(sprintf(_('Unable to remove user "%s" from group "%s"'), $oUser->getName(), $oGroup->getName())); 257 $this->errorRedirectToMain(sprintf(_('Unable to remove user "%s" from group "%s"'), $oUser->getName(), $oGroup->getName()));
250 - } else { $usersRemoved[] = $oUser->getName(); } 258 + } else {
  259 + $usersRemoved[] = $oUser->getName();
  260 + $memberReason = GroupUtil::getMembershipReason($oUser, $oGroup);
  261 + //var_dump($memberReason);
  262 + if (!(PEAR::isError($memberReason) || is_null($memberReason))) {
  263 + $removeWarnings[] = $memberReason;
  264 + }
  265 + }
251 } 266 }
252 } 267 }
253 268
  269 + if (!empty($addWarnings)) {
  270 + $sWarnStr = _('Warning: some users were already members of some subgroups') . ' — ';
  271 + $sWarnStr .= implode(', ', $addWarnings);
  272 + $_SESSION['KTInfoMessage'][] = $sWarnStr;
  273 + }
  274 +
  275 + if (!empty($removeWarnings)) {
  276 + $sWarnStr = _('Warning: some users are still members of some subgroups') . ' — ';
  277 + $sWarnStr .= implode(', ', $removeWarnings);
  278 + $_SESSION['KTInfoMessage'][] = $sWarnStr;
  279 + }
  280 +
254 $msg = ''; 281 $msg = '';
255 if (!empty($usersAdded)) { $msg .= ' ' . _('Added') . ': ' . join(', ', $usersAdded) . ', <br />'; } 282 if (!empty($usersAdded)) { $msg .= ' ' . _('Added') . ': ' . join(', ', $usersAdded) . ', <br />'; }
256 if (!empty($usersRemoved)) { $msg .= ' ' . _('Removed') . ': ' . join(', ',$usersRemoved) . '.'; } 283 if (!empty($usersRemoved)) { $msg .= ' ' . _('Removed') . ': ' . join(', ',$usersRemoved) . '.'; }
plugins/ktcore/admin/userManagement.php
@@ -463,14 +463,25 @@ class KTUserAdminDispatcher extends KTAdminDispatcher { @@ -463,14 +463,25 @@ class KTUserAdminDispatcher extends KTAdminDispatcher {
463 $this->startTransaction(); 463 $this->startTransaction();
464 $groupsAdded = array(); 464 $groupsAdded = array();
465 $groupsRemoved = array(); 465 $groupsRemoved = array();
  466 +
  467 + $addWarnings = array();
  468 + $removeWarnings = array();
466 469
467 foreach ($aGroupToAddIDs as $iGroupID ) { 470 foreach ($aGroupToAddIDs as $iGroupID ) {
468 if ($iGroupID > 0) { 471 if ($iGroupID > 0) {
469 $oGroup = Group::get($iGroupID); 472 $oGroup = Group::get($iGroupID);
  473 + $memberReason = GroupUtil::getMembershipReason($oUser, $oGroup);
  474 + //var_dump($memberReason);
  475 + if (!(PEAR::isError($memberReason) || is_null($memberReason))) {
  476 + $addWarnings[] = $memberReason;
  477 + }
470 $res = $oGroup->addMember($oUser); 478 $res = $oGroup->addMember($oUser);
471 if (PEAR::isError($res) || $res == false) { 479 if (PEAR::isError($res) || $res == false) {
472 $this->errorRedirectToMain(sprintf(_('Unable to add user to group "%s"'), $oGroup->getName())); 480 $this->errorRedirectToMain(sprintf(_('Unable to add user to group "%s"'), $oGroup->getName()));
473 - } else { $groupsAdded[] = $oGroup->getName(); } 481 + } else {
  482 + $groupsAdded[] = $oGroup->getName();
  483 +
  484 + }
474 } 485 }
475 } 486 }
476 487
@@ -481,13 +492,32 @@ class KTUserAdminDispatcher extends KTAdminDispatcher { @@ -481,13 +492,32 @@ class KTUserAdminDispatcher extends KTAdminDispatcher {
481 $res = $oGroup->removeMember($oUser); 492 $res = $oGroup->removeMember($oUser);
482 if (PEAR::isError($res) || $res == false) { 493 if (PEAR::isError($res) || $res == false) {
483 $this->errorRedirectToMain(sprintf(_('Unable to remove user from group "%s"'), $oGroup->getName())); 494 $this->errorRedirectToMain(sprintf(_('Unable to remove user from group "%s"'), $oGroup->getName()));
484 - } else { $groupsRemoved[] = $oGroup->getName(); } 495 + } else {
  496 + $groupsRemoved[] = $oGroup->getName();
  497 + $memberReason = GroupUtil::getMembershipReason($oUser, $oGroup);
  498 + //var_dump($memberReason);
  499 + if (!(PEAR::isError($memberReason) || is_null($memberReason))) {
  500 + $removeWarnings[] = $memberReason;
  501 + }
  502 + }
485 } 503 }
486 - } 504 + }
  505 +
  506 + if (!empty($addWarnings)) {
  507 + $sWarnStr = _('Warning: the user was already a member of some subgroups') . ' &mdash; ';
  508 + $sWarnStr .= implode(', ', $addWarnings);
  509 + $_SESSION['KTInfoMessage'][] = $sWarnStr;
  510 + }
  511 +
  512 + if (!empty($removeWarnings)) {
  513 + $sWarnStr = _('Warning: the user is still a member of some subgroups') . ' &mdash; ';
  514 + $sWarnStr .= implode(', ', $removeWarnings);
  515 + $_SESSION['KTInfoMessage'][] = $sWarnStr;
  516 + }
487 517
488 $msg = ''; 518 $msg = '';
489 - if (!empty($groupsAdded)) { $msg .= ' ' . _('Added to groups') . ': ' . join(', ', $groupsAdded) . ', <br />'; }  
490 - if (!empty($groupsRemoved)) { $msg .= ' ' . _('Removed from groups') . ': ' . join(', ',$groupsRemoved) . '.'; } 519 + if (!empty($groupsAdded)) { $msg .= ' ' . _('Added to groups') . ': ' . implode(', ', $groupsAdded) . ' <br />'; }
  520 + if (!empty($groupsRemoved)) { $msg .= ' ' . _('Removed from groups') . ': ' . implode(', ',$groupsRemoved) . '.'; }
491 521
492 $this->commitTransaction(); 522 $this->commitTransaction();
493 $this->successRedirectToMain($msg); 523 $this->successRedirectToMain($msg);
templates/ktcore/folder/mass_delete.smarty
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <fieldset> 4 <fieldset>
5 <legend>{i18n}Specify Reason for Delete{/i18n}</legend> 5 <legend>{i18n}Specify Reason for Delete{/i18n}</legend>
6 <p class="descriptiveText">{i18n}Please give a reason for deleting these files. This 6 <p class="descriptiveText">{i18n}Please give a reason for deleting these files. This
7 -will be recorded in the documents' "Transaction History"{/i18n}</p> 7 +will be recorded in the documents' "Transaction History"{/i18n}.</p>
8 <input type="hidden" name="action" value="doDelete" /> 8 <input type="hidden" name="action" value="doDelete" />
9 <input type="hidden" name="fFolderId" value="{$folder_id}" /> 9 <input type="hidden" name="fFolderId" value="{$folder_id}" />
10 10
@@ -35,6 +35,7 @@ will be recorded in the documents&#39; &quot;Transaction History&quot;{/i18n}&lt;/p&gt; @@ -35,6 +35,7 @@ will be recorded in the documents&#39; &quot;Transaction History&quot;{/i18n}&lt;/p&gt;
35 35
36 <div class="form_actions"> 36 <div class="form_actions">
37 <input type="submit" value="Delete" /> 37 <input type="submit" value="Delete" />
  38 + <a href="{addQS}fFolderId={$folder_id}{/addQS}" class="ktCancelLink">{i18n}Cancel{/i18n}</a>
38 </div> 39 </div>
39 40
40 </fieldset> 41 </fieldset>