/**
  * After drag and drop
  */
 function add_default_permissions()
 {
     ajx_current("empty");
     $mem_id = array_var($_REQUEST, 'member_id');
     $user_ids = explode(',', array_var($_REQUEST, 'user_ids'));
     foreach ($user_ids as $k => &$uid) {
         if (!is_numeric($uid)) {
             unset($user_ids[$k]);
         }
     }
     if (can_manage_security(logged_user()) && is_numeric($mem_id)) {
         $member = Members::findById($mem_id);
         $users = Contacts::findAll(array('conditions' => 'id IN (' . implode(',', $user_ids) . ')'));
         if ($member instanceof Member && is_array($users) && count($users) > 0) {
             $permissions_decoded = array();
             foreach ($users as $user) {
                 $role_perms = RoleObjectTypePermissions::findAll(array('conditions' => array("role_id=?", $user->getUserType())));
                 foreach ($role_perms as $role_perm) {
                     $pg_obj = new stdClass();
                     $pg_obj->pg = $user->getPermissionGroupId();
                     $pg_obj->o = $role_perm->getObjectTypeId();
                     $pg_obj->d = $role_perm->getCanDelete();
                     $pg_obj->w = $role_perm->getCanWrite();
                     $pg_obj->r = 1;
                     $permissions_decoded[] = $pg_obj;
                 }
             }
             $permissions = json_encode($permissions_decoded);
             Env::useHelper('permissions');
             try {
                 DB::beginWork();
                 save_member_permissions_background(logged_user(), $member, $permissions);
                 DB::commit();
             } catch (Exception $e) {
                 DB::rollback();
                 flash_error($e->getMessage());
             }
         }
     }
 }
Beispiel #2
0
 $user = new Contact();
 $user->setUserType($user_type);
 tpl_assign('user', $user);
 // root permissions for new user
 $root_permissions = array();
 if (config_option('let_users_create_objects_in_root') && ($user->isAdminGroup() || $user->isExecutive() || $user->isManager())) {
     $all_object_types = ObjectTypes::instance()->findAll(array('conditions' => "type IN ('content_object', 'located') AND type NOT IN ('comment') AND name <> 'file revision' AND name <> 'template_task' AND name <> 'template_milestone' AND `name` <> 'template' AND\r\n\t\t\t\t\t(plugin_id IS NULL OR plugin_id = 0 OR plugin_id IN (SELECT id FROM " . TABLE_PREFIX . "plugins WHERE is_activated > 0 AND is_installed > 0))"));
     foreach ($all_object_types as $ot) {
         $root_permissions[$ot->getId()] = array('w' => 1, 'd' => 1, 'r' => 1);
     }
 }
 // Set role permissions for active members
 $sel_members = array();
 $member_permissions = array();
 $allowed_user_type_ids = config_option('give_member_permissions_to_new_users');
 $role_ot_permissions = RoleObjectTypePermissions::findAll(array('conditions' => "role_id = '{$user_type}' AND object_type_id NOT IN (SELECT id FROM " . TABLE_PREFIX . "object_types WHERE name IN ('template','comment'))"));
 $members_with_permissions = array();
 if (in_array($user_type, $allowed_user_type_ids)) {
     $enabled_dimension_ids = config_option('enabled_dimensions');
     if (count($enabled_dimension_ids) > 0) {
         $dimension_ids = Dimensions::findAll(array('id' => true, 'conditions' => "id in (" . implode(',', $enabled_dimension_ids) . ") AND defines_permissions=1 AND is_manageable=1"));
         if (count($dimension_ids) > 0) {
             $members_with_permissions = Members::findAll(array('id' => true, 'conditions' => "dimension_id IN (" . implode(',', $dimension_ids) . ")"));
         }
     }
 }
 $active_context = active_context();
 if (is_array($active_context) && count($active_context) > 0) {
     foreach ($active_context as $selection) {
         if ($selection instanceof Member) {
             $members_with_permissions[] = $selection->getId();