Commit 621262a752de7e44c9fd0247550f00bd64987bc3
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
Showing
5 changed files
with
112 additions
and
9 deletions
browse.php
| ... | ... | @@ -563,6 +563,12 @@ class BrowseDispatcher extends KTStandardDispatcher { |
| 563 | 563 | $move_code = KTUtil::arrayGet($_REQUEST, 'fMoveCode'); |
| 564 | 564 | $target_folder = KTUtil::arrayGet($_REQUEST, 'fFolderId'); |
| 565 | 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 | 573 | // FIXME check perms? or will that happen "lower" in the stack. |
| 568 | 574 | |
| ... | ... | @@ -725,10 +731,14 @@ class BrowseDispatcher extends KTStandardDispatcher { |
| 725 | 731 | |
| 726 | 732 | $fFolderId = KTUtil::arrayGet($_REQUEST, 'fFolderId', 1); |
| 727 | 733 | |
| 728 | - $aErrorOptions = array('message' => _('You must supply a reason')); | |
| 734 | + | |
| 729 | 735 | |
| 730 | 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 | 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 | 230 | $usersAdded = array(); |
| 231 | 231 | $usersRemoved = array(); |
| 232 | 232 | |
| 233 | + $addWarnings = array(); | |
| 234 | + $removeWarnings = array(); | |
| 235 | + | |
| 233 | 236 | foreach ($aUserToAddIDs as $iUserId ) { |
| 234 | 237 | if ($iUserId > 0) { |
| 235 | 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 | 244 | $res = $oGroup->addMember($oUser); |
| 237 | 245 | if (PEAR::isError($res) || $res == false) { |
| 238 | 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 | 255 | $res = $oGroup->removeMember($oUser); |
| 248 | 256 | if (PEAR::isError($res) || $res == false) { |
| 249 | 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 | 281 | $msg = ''; |
| 255 | 282 | if (!empty($usersAdded)) { $msg .= ' ' . _('Added') . ': ' . join(', ', $usersAdded) . ', <br />'; } |
| 256 | 283 | if (!empty($usersRemoved)) { $msg .= ' ' . _('Removed') . ': ' . join(', ',$usersRemoved) . '.'; } | ... | ... |
plugins/ktcore/admin/userManagement.php
| ... | ... | @@ -463,14 +463,25 @@ class KTUserAdminDispatcher extends KTAdminDispatcher { |
| 463 | 463 | $this->startTransaction(); |
| 464 | 464 | $groupsAdded = array(); |
| 465 | 465 | $groupsRemoved = array(); |
| 466 | + | |
| 467 | + $addWarnings = array(); | |
| 468 | + $removeWarnings = array(); | |
| 466 | 469 | |
| 467 | 470 | foreach ($aGroupToAddIDs as $iGroupID ) { |
| 468 | 471 | if ($iGroupID > 0) { |
| 469 | 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 | 478 | $res = $oGroup->addMember($oUser); |
| 471 | 479 | if (PEAR::isError($res) || $res == false) { |
| 472 | 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 | 492 | $res = $oGroup->removeMember($oUser); |
| 482 | 493 | if (PEAR::isError($res) || $res == false) { |
| 483 | 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') . ' — '; | |
| 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') . ' — '; | |
| 514 | + $sWarnStr .= implode(', ', $removeWarnings); | |
| 515 | + $_SESSION['KTInfoMessage'][] = $sWarnStr; | |
| 516 | + } | |
| 487 | 517 | |
| 488 | 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 | 522 | $this->commitTransaction(); |
| 493 | 523 | $this->successRedirectToMain($msg); | ... | ... |
templates/ktcore/folder/mass_delete.smarty
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <fieldset> |
| 5 | 5 | <legend>{i18n}Specify Reason for Delete{/i18n}</legend> |
| 6 | 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 | 8 | <input type="hidden" name="action" value="doDelete" /> |
| 9 | 9 | <input type="hidden" name="fFolderId" value="{$folder_id}" /> |
| 10 | 10 | |
| ... | ... | @@ -35,6 +35,7 @@ will be recorded in the documents' "Transaction History"{/i18n}</p> |
| 35 | 35 | |
| 36 | 36 | <div class="form_actions"> |
| 37 | 37 | <input type="submit" value="Delete" /> |
| 38 | + <a href="{addQS}fFolderId={$folder_id}{/addQS}" class="ktCancelLink">{i18n}Cancel{/i18n}</a> | |
| 38 | 39 | </div> |
| 39 | 40 | |
| 40 | 41 | </fieldset> | ... | ... |