Example #1
0
 function do_setcontrolledpermissions()
 {
     $active = (array) KTUtil::arrayGet($_REQUEST, 'fControlled');
     $aUsefulPerms = KTPermission::getDocumentRelevantList();
     $aStatePermAssigns = KTWorkflowStatePermissionAssignment::getByState($this->oState);
     $aStatePermAssigns = KTUtil::keyArray($aStatePermAssigns, 'getPermissionId');
     $assigns = array();
     $this->startTransaction();
     // delete those who don't know want
     // create those we don't have.
     foreach ($aStatePermAssigns as $perm_id => $assign) {
         if (!$active[$perm_id]) {
             $assign->delete();
         }
     }
     $emptydescriptor = KTPermissionUtil::getOrCreateDescriptor(array());
     if (PEAR::isError($emptydescriptor)) {
         $this->errorRedirectTo("managepermissions", sprintf(_kt("Failed to create assignment: %s"), $emptydescriptor->getMessage()));
     }
     foreach ($active as $perm_id => $discard) {
         if (!$aStatePermAssigns[$perm_id]) {
             $assign = KTWorkflowStatePermissionAssignment::createFromArray(array("iStateId" => $this->oState->getId(), "iPermissionId" => $perm_id, "iDescriptorId" => $emptydescriptor->getId()));
             if (PEAR::isError($assign)) {
                 $this->errorRedirectTo("managepermissions", sprintf(_kt("Failed to create assignment: %s"), $assign->getMessage()));
             }
         }
     }
     $this->successRedirectTo("managepermissions", _kt("Controlled permission updated."));
 }