예제 #1
0
 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;
 }