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,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') . ' — '; | ||
| 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 | $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' "Transaction History"{/i18n}</p> | @@ -35,6 +35,7 @@ will be recorded in the documents' "Transaction History"{/i18n}</p> | ||
| 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> |