function permission_member_form_parameters($member = null) { if ($member) { $dim = $member->getDimension(); } elseif (array_var($_REQUEST, 'dim_id')) { $dim = Dimensions::getDimensionById(array_var($_REQUEST, 'dim_id')); } if (logged_user()->isMemberOfOwnerCompany()) { $companies = Contacts::findAll(array("conditions" => "is_company = 1", 'order' => 'name')); } else { $companies = array(owner_company()); if (logged_user()->getCompany() instanceof Contact) { $companies[] = logged_user()->getCompany(); } } $allowed_object_types = array(); $dim_obj_types = $dim->getAllowedObjectTypeContents(); foreach ($dim_obj_types as $dim_obj_type) { // To draw a row for each object type of the dimension if (!array_key_exists($dim_obj_type->getContentObjectTypeId(), $allowed_object_types) && (!$member || $dim_obj_type->getDimensionObjectTypeId() == $member->getObjectTypeId())) { $allowed_object_types[$dim_obj_type->getContentObjectTypeId()] = ObjectTypes::findById($dim_obj_type->getContentObjectTypeId()); $allowed_object_types_json[] = $dim_obj_type->getContentObjectTypeId(); } } $permission_groups = array(); foreach ($companies as $company) { $users = $company->getUsersByCompany(); foreach ($users as $u) { $permission_groups[] = $u->getPermissionGroupId(); } } $no_company_users = Contacts::getAllUsers("AND `company_id` = 0", true); foreach ($no_company_users as $noc_user) { $permission_groups[] = $noc_user->getPermissionGroupId(); } $non_personal_groups = PermissionGroups::getNonRolePermissionGroups(); foreach ($non_personal_groups as $group) { $permission_groups[] = $group->getId(); } foreach ($permission_groups as $pg_id) { if ($dim->hasAllowAllForContact($pg_id)) { $member_permissions[$pg_id] = array(); foreach ($dim_obj_types as $dim_obj_type) { if ($member && $dim_obj_type->getDimensionObjectTypeId() == $member->getObjectTypeId()) { $member_permissions[$pg_id][] = array('o' => $dim_obj_type->getContentObjectTypeId(), 'w' => 1, 'd' => 1, 'r' => 1); } elseif (!$member) { // WHEN CREATING a new member dont allow any user $member_permissions[$pg_id][] = array('o' => $dim_obj_type->getContentObjectTypeId(), 'w' => 0, 'd' => 0, 'r' => 0); } } } else { if (!$dim->deniesAllForContact($pg_id)) { $member_permissions[$pg_id] = array(); if ($member) { $mpgs = ContactMemberPermissions::findAll(array("conditions" => array("`permission_group_id` = ? AND `member_id` = ?", $pg_id, $member->getId()))); if (is_array($mpgs)) { foreach ($mpgs as $mpg) { $member_permissions[$mpg->getPermissionGroupId()][] = array('o' => $mpg->getObjectTypeId(), 'w' => $mpg->getCanWrite() ? 1 : 0, 'd' => $mpg->getCanDelete() ? 1 : 0, 'r' => 1); } } } } } } return array('member' => $member, 'allowed_object_types' => $allowed_object_types, 'allowed_object_types_json' => $allowed_object_types_json, 'permission_groups' => $permission_groups, 'member_permissions' => $member_permissions); }
function permission_member_form_parameters($member = null, $dimension_id = null) { if ( $member ) { $dim = $member->getDimension(); }elseif (array_var( $_REQUEST,'dim_id')) { $dim = Dimensions::getDimensionById(array_var( $_REQUEST,'dim_id')); }elseif (!is_null($dimension_id)) { $dim = Dimensions::getDimensionById($dimension_id); } if (!$dim instanceof Dimension) { Logger::log("Invalid dimension: " . ($member instanceof Member ? " for member ".$member->getId() : "request: ".print_r($_REQUEST, 1))); throw new Exception("Invalid dimension"); } if (logged_user()->isMemberOfOwnerCompany()) { $companies = Contacts::findAll(array("conditions" => "is_company = 1 AND object_id IN (SELECT company_id FROM ".TABLE_PREFIX."contacts WHERE user_type>0 AND disabled=0)", 'order' => 'first_name')); } else { $companies = array(owner_company()); if (logged_user()->getCompany() instanceof Contact) $companies[] = logged_user()->getCompany(); } $allowed_object_types = array(); $dim_obj_types = $dim->getAllowedObjectTypeContents(); foreach ($dim_obj_types as $dim_obj_type) { // To draw a row for each object type of the dimension if ( !array_key_exists($dim_obj_type->getContentObjectTypeId(), $allowed_object_types) && (!$member || $dim_obj_type->getDimensionObjectTypeId() == $member->getObjectTypeId()) ) { $allowed_object_types[$dim_obj_type->getContentObjectTypeId()] = ObjectTypes::findById($dim_obj_type->getContentObjectTypeId()); $allowed_object_types_json[] = $dim_obj_type->getContentObjectTypeId(); } } $permission_groups = array(); foreach ($companies as $company) { $users = $company->getUsersByCompany(); foreach ($users as $u) $permission_groups[] = $u->getPermissionGroupId(); } $no_company_users = Contacts::getAllUsers("AND `company_id` = 0", true); foreach ($no_company_users as $noc_user) { $permission_groups[] = $noc_user->getPermissionGroupId(); } $non_personal_groups = PermissionGroups::getNonRolePermissionGroups(); foreach ($non_personal_groups as $group) { $permission_groups[] = $group->getId(); } foreach ($permission_groups as $pg_id) { if ($dim->hasAllowAllForContact($pg_id)) { $member_permissions[$pg_id] = array(); foreach ($dim_obj_types as $dim_obj_type) { if ($member && $dim_obj_type->getDimensionObjectTypeId() == $member->getObjectTypeId()) { $member_permissions[$pg_id][] = array( 'o' => $dim_obj_type->getContentObjectTypeId(), 'w' => 1, 'd' => 1, 'r' => 1 ); }elseif(!$member){ // WHEN CREATING a new member dont allow any user $member_permissions[$pg_id][] = array( 'o' => $dim_obj_type->getContentObjectTypeId(), 'w' => 0, 'd' => 0, 'r' => 0 ); } } } else if (!$dim->deniesAllForContact($pg_id)) { $member_permissions[$pg_id] = array(); if ($member) { $mpgs = ContactMemberPermissions::findAll(array("conditions" => array("`permission_group_id` = ? AND `member_id` = ?", $pg_id, $member->getId()))); if (is_array($mpgs)) { foreach ($mpgs as $mpg) { $member_permissions[$mpg->getPermissionGroupId()][] = array( 'o' => $mpg->getObjectTypeId(), 'w' => $mpg->getCanWrite() ? 1 : 0, 'd' => $mpg->getCanDelete() ? 1 : 0, 'r' => 1 ); } } } } } return array( 'member' => $member, 'allowed_object_types' => $allowed_object_types, 'allowed_object_types_json' => $allowed_object_types_json, 'permission_groups' => $permission_groups, 'member_permissions' => $member_permissions, ); }