Commit 04f365f9150c1eba1a14d943a5e590c15bdba029

Authored by bryndivey
1 parent 0d8e9832

These fixes bring us to 3.0.3rc1


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@5422 c91229c3-7414-0410-bfa2-8a42b809f60b
browse.php
@@ -418,7 +418,7 @@ class BrowseDispatcher extends KTStandardDispatcher { @@ -418,7 +418,7 @@ class BrowseDispatcher extends KTStandardDispatcher {
418 $_SESSION["KTErrorMessage"][] = _kt("The following folders can not be moved") . ": " . $folderStr; 418 $_SESSION["KTErrorMessage"][] = _kt("The following folders can not be moved") . ": " . $folderStr;
419 } 419 }
420 if (!empty($documentStr)) { 420 if (!empty($documentStr)) {
421 - $_SESSION["KTErrorMessage"][] = _kt("The following documents can not be moved") . ": " . $documentStr; 421 + $_SESSION["KTErrorMessage"][] = _kt("The following documents can not be moved as they are either checked out, or controlled by a workflow") . ": " . $documentStr;
422 } 422 }
423 } 423 }
424 424
lib/subscriptions/subscriptions.inc.php
@@ -424,81 +424,82 @@ class SubscriptionEvent { @@ -424,81 +424,82 @@ class SubscriptionEvent {
424 } 424 }
425 } 425 }
426 } 426 }
  427 +
427 function MoveDocument($oMovedDocument, $oToFolder, $oFromFolder) { 428 function MoveDocument($oMovedDocument, $oToFolder, $oFromFolder) {
428 $content = new SubscriptionContent(); // needed for i18n 429 $content = new SubscriptionContent(); // needed for i18n
429 - // OK: two actions: document registrants, folder registrants. 430 + // OK: two actions: document registrants, folder registrants.
430 $aUsers = $this->_getSubscribers($oMovedDocument->getId(), $this->subscriptionTypes["Document"]); 431 $aUsers = $this->_getSubscribers($oMovedDocument->getId(), $this->subscriptionTypes["Document"]);
431 - $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton.  
432 - foreach ($aUsers as $oSubscriber) {  
433 -  
434 - // notification object first.  
435 - $aNotificationOptions = array();  
436 - $aNotificationOptions['target_user'] = $oSubscriber->getID();  
437 - $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null.  
438 - $aNotificationOptions['target_name'] = $oMovedDocument->getName();  
439 - $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oParentFolder->getId());  
440 - $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case.  
441 - $aNotificationOptions['event_type'] = "MovedDocument";  
442 - $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions); 432 + $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton.
  433 +
  434 + foreach ($aUsers as $oSubscriber) {
  435 + // notification object first.
  436 + $aNotificationOptions = array();
  437 + $aNotificationOptions['target_user'] = $oSubscriber->getID();
  438 + $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null.
  439 + $aNotificationOptions['target_name'] = $oMovedDocument->getName();
  440 + $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oToFolder->getId());
  441 + $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case.
  442 + $aNotificationOptions['event_type'] = "MovedDocument";
  443 + $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions);
443 444
444 - // now the email content.  
445 - // FIXME this needs to be handled entirely within notifications from now on.  
446 - if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) {  
447 - $emailContent = $content->getEmailAlertContent($oNotification);  
448 - $emailSubject = $content->getEmailAlertSubject($oNotification);  
449 - $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent);  
450 - $oEmail->send();  
451 - }  
452 - } 445 + // now the email content.
  446 + // FIXME this needs to be handled entirely within notifications from now on.
  447 + if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) {
  448 + $emailContent = $content->getEmailAlertContent($oNotification);
  449 + $emailSubject = $content->getEmailAlertSubject($oNotification);
  450 + $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent);
  451 + $oEmail->send();
  452 + }
  453 + }
453 454
454 455
455 $aUsers = $this->_getSubscribers($oFromFolder->getId(), $this->subscriptionTypes["Folder"]); 456 $aUsers = $this->_getSubscribers($oFromFolder->getId(), $this->subscriptionTypes["Folder"]);
456 - $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton.  
457 - foreach ($aUsers as $oSubscriber) {  
458 -  
459 - // notification object first.  
460 - $aNotificationOptions = array();  
461 - $aNotificationOptions['target_user'] = $oSubscriber->getID();  
462 - $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null.  
463 - $aNotificationOptions['target_name'] = $oMovedDocument->getName();  
464 - $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oParentFolder->getId());  
465 - $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case.  
466 - $aNotificationOptions['event_type'] = "MovedDocument";  
467 - $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions);  
468 -  
469 - // now the email content.  
470 - // FIXME this needs to be handled entirely within notifications from now on.  
471 - if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) {  
472 - $emailContent = $content->getEmailAlertContent($oNotification);  
473 - $emailSubject = $content->getEmailAlertSubject($oNotification);  
474 - $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent);  
475 - $oEmail->send();  
476 - }  
477 - }  
478 - 457 + $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton.
  458 + foreach ($aUsers as $oSubscriber) {
  459 +
  460 + // notification object first.
  461 + $aNotificationOptions = array();
  462 + $aNotificationOptions['target_user'] = $oSubscriber->getID();
  463 + $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null.
  464 + $aNotificationOptions['target_name'] = $oMovedDocument->getName();
  465 + $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oParentFolder->getId());
  466 + $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case.
  467 + $aNotificationOptions['event_type'] = "MovedDocument";
  468 + $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions);
  469 +
  470 + // now the email content.
  471 + // FIXME this needs to be handled entirely within notifications from now on.
  472 + if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) {
  473 + $emailContent = $content->getEmailAlertContent($oNotification);
  474 + $emailSubject = $content->getEmailAlertSubject($oNotification);
  475 + $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent);
  476 + $oEmail->send();
  477 + }
  478 + }
  479 +
479 $aUsers = $this->_getSubscribers($oToFolder->getId(), $this->subscriptionTypes["Folder"]); 480 $aUsers = $this->_getSubscribers($oToFolder->getId(), $this->subscriptionTypes["Folder"]);
480 - $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton.  
481 - foreach ($aUsers as $oSubscriber) {  
482 -  
483 - // notification object first.  
484 - $aNotificationOptions = array();  
485 - $aNotificationOptions['target_user'] = $oSubscriber->getID();  
486 - $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null.  
487 - $aNotificationOptions['target_name'] = $oMovedDocument->getName();  
488 - $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oParentFolder->getId());  
489 - $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case.  
490 - $aNotificationOptions['event_type'] = "MovedDocument";  
491 - $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions);  
492 -  
493 - // now the email content.  
494 - // FIXME this needs to be handled entirely within notifications from now on.  
495 - if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) {  
496 - $emailContent = $content->getEmailAlertContent($oNotification);  
497 - $emailSubject = $content->getEmailAlertSubject($oNotification);  
498 - $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent);  
499 - $oEmail->send();  
500 - }  
501 - } 481 + $aUsers = $this->_pruneAlertedUsers($aUsers); // setup the alerted users. _might_ be a singleton.
  482 + foreach ($aUsers as $oSubscriber) {
  483 +
  484 + // notification object first.
  485 + $aNotificationOptions = array();
  486 + $aNotificationOptions['target_user'] = $oSubscriber->getID();
  487 + $aNotificationOptions['actor_id'] = KTUtil::arrayGet($_SESSION,"userID", null); // _won't_ be null.
  488 + $aNotificationOptions['target_name'] = $oMovedDocument->getName();
  489 + $aNotificationOptions['location_name'] = Folder::generateFullFolderPath($oParentFolder->getId());
  490 + $aNotificationOptions['object_id'] = $oToFolder->getId(); // parent folder_id, in this case.
  491 + $aNotificationOptions['event_type'] = "MovedDocument";
  492 + $oNotification =& KTSubscriptionNotification::generateSubscriptionNotification($aNotificationOptions);
  493 +
  494 + // now the email content.
  495 + // FIXME this needs to be handled entirely within notifications from now on.
  496 + if ($oSubscriber->getEmailNotification() && (strlen($oSubscriber->getEmail()) > 0)) {
  497 + $emailContent = $content->getEmailAlertContent($oNotification);
  498 + $emailSubject = $content->getEmailAlertSubject($oNotification);
  499 + $oEmail = new EmailAlert($oSubscriber->getEmail(), $emailSubject, $emailContent);
  500 + $oEmail->send();
  501 + }
  502 + }
502 } 503 }
503 function ArchivedDocument($oModifiedDocument, $oParentFolder) { 504 function ArchivedDocument($oModifiedDocument, $oParentFolder) {
504 $content = new SubscriptionContent(); // needed for i18n 505 $content = new SubscriptionContent(); // needed for i18n
plugins/ktcore/admin/groupManagement.php
@@ -151,12 +151,23 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher { @@ -151,12 +151,23 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
151 } else { 151 } else {
152 $oGroup->setUnitId($unit_id); 152 $oGroup->setUnitId($unit_id);
153 } 153 }
154 - 154 +
155 $res = $oGroup->update(); 155 $res = $oGroup->update();
156 if (($res == false) || (PEAR::isError($res))) { return $this->errorRedirectToMain(_kt('Failed to set group details.')); } 156 if (($res == false) || (PEAR::isError($res))) { return $this->errorRedirectToMain(_kt('Failed to set group details.')); }
  157 +
  158 + if (!Permission::userIsSystemAdministrator($_SESSION['userID'])) {
  159 + $this->rollbackTransaction();
  160 + $this->errorRedirectTo('editGroup', _kt('For security purposes, you cannot remove your own administration priviledges.'), sprintf('group_id=%d', $oGroup->getId()));
  161 + exit(0);
  162 + }
  163 +
157 164
158 $this->commitTransaction(); 165 $this->commitTransaction();
159 - $this->successRedirectToMain(_kt('Group details updated.')); 166 + if($unit_id == 0 && $is_unitadmin) {
  167 + $this->successRedirectToMain(_kt('Group details updated.') . _kt(' Note: group is set as unit administrator, but is not assigned to a unit.'));
  168 + } else {
  169 + $this->successRedirectToMain(_kt('Group details updated.'));
  170 + }
160 } 171 }
161 // }}} 172 // }}}
162 173
@@ -309,6 +320,12 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher { @@ -309,6 +320,12 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
309 $msg = ''; 320 $msg = '';
310 if (!empty($usersAdded)) { $msg .= ' ' . _kt('Added') . ': ' . join(', ', $usersAdded) . ', <br />'; } 321 if (!empty($usersAdded)) { $msg .= ' ' . _kt('Added') . ': ' . join(', ', $usersAdded) . ', <br />'; }
311 if (!empty($usersRemoved)) { $msg .= ' ' . _kt('Removed') . ': ' . join(', ',$usersRemoved) . '.'; } 322 if (!empty($usersRemoved)) { $msg .= ' ' . _kt('Removed') . ': ' . join(', ',$usersRemoved) . '.'; }
  323 +
  324 + if (!Permission::userIsSystemAdministrator($_SESSION['userID'])) {
  325 + $this->rollbackTransaction();
  326 + $this->errorRedirectTo('manageUsers', _kt('For security purposes, you cannot remove your own administration priviledges.'), sprintf('group_id=%d', $oGroup->getId()));
  327 + exit(0);
  328 + }
312 329
313 $this->commitTransaction(); 330 $this->commitTransaction();
314 $this->successRedirectToMain($msg); 331 $this->successRedirectToMain($msg);
@@ -504,7 +521,12 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher { @@ -504,7 +521,12 @@ class KTGroupAdminDispatcher extends KTAdminDispatcher {
504 //if (($res == false) || (PEAR::isError($res))) { return $this->errorRedirectToMain('Failed to create group "' . $group_name . '"'); } 521 //if (($res == false) || (PEAR::isError($res))) { return $this->errorRedirectToMain('Failed to create group "' . $group_name . '"'); }
505 // do i need to "create" 522 // do i need to "create"
506 $this->commitTransaction(); 523 $this->commitTransaction();
507 - $this->successRedirectToMain(sprintf(_kt('Group "%s" created.'), $group_name)); 524 +
  525 + if($unit_id == 0 && $is_unitadmin) {
  526 + $this->successRedirectToMain(sprintf(_kt('Group "%s" created.'), $group_name) . _kt(' Note: group is set as unit administrator, but is not assigned to a unit.'));
  527 + } else {
  528 + $this->successRedirectToMain(sprintf(_kt('Group "%s" created.'), $group_name));
  529 + }
508 } 530 }
509 // }}} 531 // }}}
510 532
plugins/ktcore/admin/userManagement.php
@@ -556,6 +556,13 @@ var $sHelpPage = &#39;ktcore/admin/manage users.html&#39;; @@ -556,6 +556,13 @@ var $sHelpPage = &#39;ktcore/admin/manage users.html&#39;;
556 $msg = ''; 556 $msg = '';
557 if (!empty($groupsAdded)) { $msg .= ' ' . _kt('Added to groups') . ': ' . implode(', ', $groupsAdded) . ' <br />'; } 557 if (!empty($groupsAdded)) { $msg .= ' ' . _kt('Added to groups') . ': ' . implode(', ', $groupsAdded) . ' <br />'; }
558 if (!empty($groupsRemoved)) { $msg .= ' ' . _kt('Removed from groups') . ': ' . implode(', ',$groupsRemoved) . '.'; } 558 if (!empty($groupsRemoved)) { $msg .= ' ' . _kt('Removed from groups') . ': ' . implode(', ',$groupsRemoved) . '.'; }
  559 +
  560 + if (!Permission::userIsSystemAdministrator($_SESSION['userID'])) {
  561 + $this->rollbackTransaction();
  562 + $this->errorRedirectTo('editgroups', _kt('For security purposes, you cannot remove your own administration priviledges.'), sprintf('user_id=%d', $oUser->getId()));
  563 + exit(0);
  564 + }
  565 +
559 566
560 $this->commitTransaction(); 567 $this->commitTransaction();
561 $this->successRedirectToMain($msg); 568 $this->successRedirectToMain($msg);
templates/ktcore/metadata/listFieldsets.smarty
@@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
43 {if $aFields} 43 {if $aFields}
44 44
45 {foreach from=$aFields item=oField name=fields} 45 {foreach from=$aFields item=oField name=fields}
46 -{$oField->getName()}{if (!$smarty.foreach.fields.last)}, {/if} 46 +{$oField->getName()}{if (!$smarty.foreach.fields.last)}<br/> {/if}
47 {/foreach} 47 {/foreach}
48 48
49 {else} 49 {else}
@@ -58,7 +58,7 @@ @@ -58,7 +58,7 @@
58 {foreach from=$aDocumentTypes item=oDocumentType name=doctypes} 58 {foreach from=$aDocumentTypes item=oDocumentType name=doctypes}
59 59
60 {capture assign=docid}{$oDocumentType->getId()}{/capture} 60 {capture assign=docid}{$oDocumentType->getId()}{/capture}
61 -<a href="{ktLink base="admin.php" subpath="/documents/typemanagement" query="action=edit&fDocumentTypeId=`$docid`"}">{$oDocumentType->getName()}</a>{if (!$smarty.foreach.doctypes.last)}, {/if} 61 +<a href="{ktLink base="admin.php" subpath="/documents/typemanagement" query="action=edit&fDocumentTypeId=`$docid`"}">{$oDocumentType->getName()}</a>{if (!$smarty.foreach.doctypes.last)}<br/> {/if}
62 62
63 {/foreach} 63 {/foreach}
64 64