/** * 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()); } } } }
$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();