/** * Render form control * * @param string $control_name * @return string */ function render($control_name) { $groups = PermissionGroups::getNonRolePermissionGroups(); $selected = config_option('default_guest_user_group'); $options = array(); $attrs = $selected == 0 ? array('selected' => 'selected') : array(); $options[] = option_tag(lang('none'), 0, $attrs); foreach ($groups as $group) { $attrs = $selected == $group->getId() ? array('selected' => 'selected') : array(); $options[] = option_tag(clean($group->getName()), $group->getId(), $attrs); } echo select_box($control_name, $options); }
/** * List groups * * @access public * @param void * @return null */ function groups() { if (!can_manage_security(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $groups = PermissionGroups::getNonRolePermissionGroups(); $gr_lengths = array(); foreach ($groups as $gr) { $count = ContactPermissionGroups::count("`permission_group_id` = " . $gr->getId()); $gr_lengths[$gr->getId()] = $count; } tpl_assign('gr_lengths', $gr_lengths); tpl_assign('permission_groups', $groups); }
/** * Returns a control to select multiple users or groups * */ function select_users_or_groups($name = "", $selected = null, $id = null) { require_javascript('og/UserGroupPicker.js'); if (!isset($id)) $id = gen_id(); $selectedCSV = ""; $json = array(); $company_users = Contacts::getGroupedByCompany(false); foreach ($company_users as $company_row){ $company = $company_row['details']; $users = $company_row['users']; $comp_id = $company instanceof Contact ? $company->getId() : "0"; $comp_name = $company instanceof Contact ? $company->getObjectName() : lang('without company'); if (count($users) > 0) { $json[] = array( 'p' => 'users', 't' => 'company', 'id' => 'c' . $comp_id, 'n' => $comp_name, ); foreach ($users as $u) { $json[] = array( 'p' => 'c' . $comp_id, 't' => 'user', 'g' => $u->isGuest() ? 1 : 0, 'id' => $u->getPermissionGroupId(), 'n' => $u->getObjectName(), 'isg' => $u->isGuest() ); } } } $groups = PermissionGroups::getNonRolePermissionGroups(); foreach ($groups as $group) { $json[] = array( 'p' => 'groups', 't' => 'group', 'id' => $group->getId(), 'n' => $group->getName(), ); } $jsonUsers = json_encode($json); $output = "<div id=\"$id-user-picker\" style=\"box-shadow:2px 4px 5px 1px #CCCCCC; border-top:1px solid #ccc;\"></div> <input id=\"$id-field\" type=\"hidden\" value=\"$selectedCSV\" name=\"$name\"></input> <script> var userPicker = new og.UserPicker({ renderTo: '$id-user-picker', field: '$id-field', id: '$id', users: $jsonUsers, height: 320, width: 240 }); </script> "; return $output; } // select_users_or_groups
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, ); }
/** * Returns a control to select multiple users or groups * */ function select_users_or_groups($name = "", $selected = null, $id = null) { require_javascript('og/UserGroupPicker.js'); if (!isset($id)) { $id = gen_id(); } $selectedCSV = ""; $json = array(); $company_users = Contacts::getGroupedByCompany(false); foreach ($company_users as $company_row) { $company = $company_row['details']; $users = $company_row['users']; $comp_id = $company instanceof Contact ? $company->getId() : "0"; $comp_name = $company instanceof Contact ? $company->getObjectName() : lang('without company'); if (count($users) > 0) { $json[] = array('p' => 'users', 't' => 'company', 'id' => 'c' . $comp_id, 'n' => $comp_name); foreach ($users as $u) { $json[] = array('p' => 'c' . $comp_id, 't' => 'user', 'g' => $u->isGuest() ? 1 : 0, 'id' => $u->getPermissionGroupId(), 'n' => $u->getObjectName(), 'isg' => $u->isGuest()); } } } $groups = PermissionGroups::getNonRolePermissionGroups(); foreach ($groups as $group) { $json[] = array('p' => 'groups', 't' => 'group', 'id' => $group->getId(), 'n' => $group->getName()); } $jsonUsers = json_encode($json); $output = "<div id=\"{$id}-user-picker\"></div>\n\t\t\t<input id=\"{$id}-field\" type=\"hidden\" value=\"{$selectedCSV}\" name=\"{$name}\"></input>\n\t\t<script>\n\t\tvar userPicker = new og.UserPicker({\n\t\t\trenderTo: '{$id}-user-picker',\n\t\t\tfield: '{$id}-field',\n\t\t\tid: '{$id}',\n\t\t\tusers: {$jsonUsers},\n\t\t\theight: 320,\n\t\t\twidth: 210\n\t\t});\n\t\t</script>\n\t"; return $output; }
'}));"> <img src="public/assets/themes/default/images/16x16/add.png"> <?php echo lang('add user'); ?> </button> <div class="clear"></div> </div> </div> <?php } ?> <?php $groups = PermissionGroups::getNonRolePermissionGroups(); $gr_lengths = array(); foreach ($groups as $gr) { $count = ContactPermissionGroups::count("`permission_group_id` = " . $gr->getId()); $gr_lengths[$gr->getId()] = $count; } ?> <div class="user-groups-section"> <h1><?php echo lang('groups'); ?> </h1> <div class="section-description desc"><?php echo lang('groups desc', '<br />'); ?> </div>