function createUserPermission($user_id, $preset_id) { if (isset($this->permission_presets[$preset_id])) { $pclf = new PermissionControlListFactory(); $pclf->getById($this->permission_presets[$preset_id]); if ($pclf->getRecordCount() > 0) { $pc_obj = $pclf->getCurrent(); $puf = new PermissionUserFactory(); $puf->setPermissionControl($pc_obj->getId()); $puf->setUser($user_id); if ($puf->isValid()) { Debug::Text('Assigning User ID: ' . $user_id . ' To Permission Control: ' . $this->permission_presets[$preset_id] . ' Preset: ' . $preset_id, __FILE__, __LINE__, __METHOD__, 10); $puf->Save(); return TRUE; } } } Debug::Text('Failed Assigning User to Permission Control! User ID: ' . $user_id . ' Preset: ' . $preset_id, __FILE__, __LINE__, __METHOD__, 10); return FALSE; }
function applyPreset($permission_control_id, $preset, $preset_flags) { $preset_permissions = $this->getPresetPermissions($preset, $preset_flags); if (!is_array($preset_permissions)) { return FALSE; } $this->setPermissionControl($permission_control_id); $pf = new PermissionFactory(); $pf->StartTransaction(); //Delete all previous permissions for this user. $this->deletePermissions($this->getCompany(), $permission_control_id); foreach ($preset_permissions as $section => $permissions) { foreach ($permissions as $name => $value) { Debug::Text('Setting Permission - Section: ' . $section . ' Name: ' . $name . ' Value: ' . (int) $value, __FILE__, __LINE__, __METHOD__, 10); $pf->setPermissionControl($permission_control_id); $pf->setSection($section); $pf->setName($name); $pf->setValue((int) $value); if ($pf->isValid()) { $pf->save(); } } } //Clear cache for all users assigned to this permission_control_id $pclf = new PermissionControlListFactory(); $pclf->getById($permission_control_id); if ($pclf->getRecordCount() > 0) { $pc_obj = $pclf->getCurrent(); if (is_array($pc_obj->getUser())) { foreach ($pc_obj->getUser() as $user_id) { $pf->clearCache($user_id, $this->getCompany()); } } } unset($pclf, $pc_obj, $user_id); //$pf->FailTransaction(); $pf->CommitTransaction(); return TRUE; }