Commit a46e0c7dafa26d5b8e08dea4308431286e8d718e

Authored by jjordaan
1 parent 7b3e1cd5

KTS-4145: Copied Workflows contain Workflow Effects of original

Committed by: Jarrett Jordaan

Reviewed by: Megan Watson
lib/workflow/workflowtriggerinstance.inc.php
... ... @@ -70,8 +70,11 @@ class KTWorkflowTriggerInstance extends KTEntity {
70 70  
71 71 // STATIC
72 72 function &get($iId) { return KTEntityUtil::get('KTWorkflowTriggerInstance', $iId); }
73   - function &createFromArray($aOptions) {
74   - $aOptions['configarraytext'] = serialize($aOptions['config']);
  73 +
  74 + function &createFromArray($aOptions) {
  75 + // Modified : Jarrett Jordaan
  76 + // Removed Serialize, since the original is serialized already
  77 + $aOptions['configarraytext'] = $aOptions['config'];
75 78 unset($aOptions['config']);
76 79 return KTEntityUtil::createFromArray('KTWorkflowTriggerInstance', $aOptions);
77 80 }
... ...
plugins/ktcore/admin/workflowsv2.php
... ... @@ -195,6 +195,26 @@ class KTWorkflowAdminV2 extends KTAdminDispatcher {
195 195 return $oTemplate;
196 196 }
197 197  
  198 + /*
  199 + * Copies state notifications
  200 + *
  201 + * @params KTWorkflowState $oldState to copy from
  202 + * KTWorkflowState $newState to copy to
  203 + *
  204 + * @return true on success or PEAR error
  205 + */
  206 + function copyStateNotifications ($oldState, $newState) {
  207 + // we need the old one
  208 + $aAllowed = KTWorkflowUtil::getInformedForState($oldState);
  209 + // FIXME check that these are all users.
  210 + $res = KTWorkflowUtil::setInformedForState($newState, $aAllowed);
  211 + if (PEAR::isError($res)) {
  212 + return $oForm->handleError($res->getMessage());
  213 + }
  214 +
  215 + return true;
  216 + }
  217 +
198 218 function do_confirmCopy(){
199 219 $oSelWorkflow = KTWorkflow::get(KTUtil::arrayGet($_REQUEST, 'workflowId' , array()));
200 220 $sWorkflowName = KTUtil::arrayGet($_REQUEST, 'workflowName' , array());
... ... @@ -232,7 +252,8 @@ class KTWorkflowAdminV2 extends KTAdminDispatcher {
232 252 $oForm->errorRedirectToMain(sprintf(_kt("Unexpected failure cloning state: %s"), $oNewState->getMessage()));
233 253 }
234 254  
235   - // Get all state permission assignments for old workflow transitions and copy for copied workflow state permission assignments
  255 + // Get all state permission assignments for old workflow transitions
  256 + // and copy for copied workflow state permission assignments
236 257 $aPermissionAssignments = KTWorkflowStatePermissionAssignment::getByState($oOldState);
237 258 if(count($aPermissionAssignments) > 0){
238 259 foreach ($aPermissionAssignments as $oPermAssign) {
... ... @@ -265,6 +286,8 @@ class KTWorkflowAdminV2 extends KTAdminDispatcher {
265 286 if (PEAR::isError($res)) {
266 287 return $this->errorRedirectToMain(sprintf(_kt("Unable to copy disabled state actions: %s"), $res->getMessage()));
267 288 }
  289 +
  290 + $this->copyStateNotifications ($oOldState, $oNewState);
268 291 }
269 292  
270 293 // update workflow and set initial state
... ... @@ -332,7 +355,8 @@ class KTWorkflowAdminV2 extends KTAdminDispatcher {
332 355 $this->errorRedirectToMain(sprintf(_kt("Failed to set transition origins: %s"), $res->getMessage()));
333 356 }
334 357  
335   - // Get all triggers for old workflow transitions and copy for copied workflow transitions
  358 + // Get all triggers for old workflow transitions and
  359 + // copy for copied workflow transitions
336 360 $aTriggers = KTWorkflowTriggerInstance::getByTransition($oOldTransition);
337 361 if(count($aTriggers) > 0){
338 362 foreach ($aTriggers as $oTrigger) {
... ... @@ -354,6 +378,7 @@ class KTWorkflowAdminV2 extends KTAdminDispatcher {
354 378 }
355 379 }
356 380 }
  381 +
357 382 return $this->successRedirectToMain(sprintf(_kt("%s successfully copied as %s"), $oSelWorkflow->getName(), $oNewWorkflow->getName()));
358 383 }
359 384  
... ... @@ -2340,7 +2365,8 @@ class KTWorkflowAdminV2 extends KTAdminDispatcher {
2340 2365  
2341 2366 if (!empty($sFilter)) {
2342 2367 $allowed = array();
2343   - $q = sprintf('name like "%%%s%%"', DBUtil::escapeSimple($sFilter));
  2368 + // Modified Jarrett Jordaan Only notify enabled users
  2369 + $q = sprintf('name like "%%%s%%" AND disabled = 0', DBUtil::escapeSimple($sFilter));
2344 2370  
2345 2371 $aUsers = User::getList($q);
2346 2372 $aGroups = Group::getList($q);
... ...