foreach (array_keys($selected_agents) as $role_basis) { foreach ($selected_agents[$role_basis] as $agent_id) { foreach ($selected_roles as $role_code) { if ($role_handle = array_search($role_code, $role_codes)) { $blog_roles[$role_basis][$role_handle][$agent_id] = $assign_for; } } } if (ROLE_BASIS_USER == $role_basis) { $agents_msg[] = sprintf(_n("%d user", "%d users", count($selected_agents[$role_basis]), 'scoper'), count($selected_agents[$role_basis])); } else { $agents_msg[] = sprintf(_n("%d group", "%d groups", count($selected_agents[$role_basis]), 'scoper'), count($selected_agents[$role_basis])); } $args = array(); if (!empty($_POST['set_role_duration']) || !empty($_POST['set_content_date_limits'])) { $date_entries_gmt = ScoperAdminBulkLib::process_role_date_entries(); } if ($duration_limits_enabled && !empty($_POST['set_role_duration'])) { $is_limited = $date_entries_gmt->start_date_gmt || $date_entries_gmt->end_date_gmt != SCOPER_MAX_DATE_STRING || !empty($_POST['start_date_gmt_keep-timestamp']) || !empty($_POST['end_date_gmt_keep-timestamp']); $args['set_role_duration'] = (object) array('date_limited' => $is_limited, 'start_date_gmt' => $date_entries_gmt->start_date_gmt, 'end_date_gmt' => $date_entries_gmt->end_date_gmt); } if ($content_date_limits_enabled && !empty($_POST['set_content_date_limits'])) { $is_limited = $date_entries_gmt->content_min_date_gmt || $date_entries_gmt->content_max_date_gmt != SCOPER_MAX_DATE_STRING || !empty($_POST['content_min_date_gmt_keep-timestamp']) || !empty($_POST['content_max_date_gmt_keep-timestamp']); $args['set_content_date_limits'] = (object) array('content_date_limited' => $is_limited, 'content_min_date_gmt' => $date_entries_gmt->content_min_date_gmt, 'content_max_date_gmt' => $date_entries_gmt->content_max_date_gmt); } $role_assigner->assign_roles(BLOG_SCOPE_RS, '', 0, $blog_roles[$role_basis], $role_basis, $args); } // end foreach role basis ?>
function role_submission($scope, $mode, $role_bases, $src_or_tx_name, $role_codes, $agent_caption_plural, $nonce_id) { global $scoper; $role_assigner = init_role_assigner(); $err = 0; $role_count = 0; check_admin_referer($nonce_id); $set_roles = array(); $selected_roles = isset($_POST['roles']) ? $_POST['roles'] : array(); if (OBJECT_SCOPE_RS == $scope) { $src = $scoper->data_sources->get($src_or_tx_name); $date_col_defined = !empty($src->cols->date); } elseif (TERM_SCOPE_RS == $scope) { $tx = $scoper->taxonomies->get($src_or_tx_name); $date_col_defined = $scoper->data_sources->member_property($tx->object_source, 'cols', 'date'); } else { $date_col_defined = true; } switch ($mode) { case ROLE_ASSIGNMENT_RS: $assign_for = $_POST['assign_for']; $selected_agents = array(); foreach ($role_bases as $role_basis) { if (!empty($_POST[$role_basis])) { $selected_agents[$role_basis] = $_POST[$role_basis]; } else { $csv_id = "{$role_basis}_csv"; if (!empty($_POST[$csv_id])) { $selected_agents[$role_basis] = ScoperAdminLib::agent_ids_from_csv($csv_id, $role_basis); } else { $role_bases = array_diff($role_bases, array($role_basis)); } } } $agents_msg = array(); $valid_role_selection = !empty($selected_roles); $duration_limits_enabled = $date_col_defined && scoper_get_option('role_duration_limits'); $content_date_limits_enabled = $date_col_defined && scoper_get_option('role_content_date_limits'); break; case ROLE_RESTRICTION_RS: $role_bases = array('n/a'); $default_restrictions = isset($_POST['default_restrictions']) ? $_POST['default_restrictions'] : array(); $max_scope = $_POST['max_scope']; $require_for = $_POST['require_for']; $selected_agents = array('n/a' => array(0)); $valid_role_selection = !empty($selected_roles) || !empty($default_restrictions); $modcount = 0; $duration_limits_enabled = $content_date_limits_enabled = false; break; } if (!$selected_agents) { $_POST['scoper_error'] = 1; echo '<div id="message" class="error"><p><strong>'; printf(__('Error: no %s were selected!', 'scoper'), $agent_caption_plural); echo '</strong></p></div>'; $err = 1; } elseif (!$valid_role_selection) { $_POST['scoper_error'] = 1; echo '<div id="message" class="error"><p><strong>'; _e('Error: no roles were selected!', 'scoper'); echo '</strong></p></div>'; $err = 2; } else { if (ROLE_ASSIGNMENT_RS == $mode) { if (!empty($_POST['set_role_duration']) || !empty($_POST['set_content_date_limits'])) { $date_entries_gmt = ScoperAdminBulkLib::process_role_date_entries(); } } foreach ($role_bases as $role_basis) { foreach ($selected_agents[$role_basis] as $agent_id) { // must set default restrictions first if (!empty($default_restrictions)) { $def_roles = array(); foreach ($default_restrictions as $role) { $keys = explode('-', $role); //keys[0]=role_code, 1=term_id or obj_id if (count($keys) < 2) { continue; } if (!($role_handle = array_search($keys[0], $role_codes))) { continue; } $def_roles[$keys[1]][$role_handle] = array('max_scope' => $max_scope, 'for_item' => false, 'for_children' => true); $modcount++; } $role_assigner->restrict_roles($scope, $src_or_tx_name, 0, $def_roles[0], array('force_flush' => true)); } if (!empty($selected_roles)) { foreach ($selected_roles as $role) { $keys = explode('-', $role); //keys[0]=role_code, 1=term_id or obj_id, 2=group_id or user_id if (count($keys) < 2) { continue; } if (!($role_handle = array_search($keys[0], $role_codes))) { continue; } switch ($mode) { case ROLE_ASSIGNMENT_RS: $set_roles[$role_basis][$keys[1]][$role_handle][$agent_id] = $keys[1] || !$assign_for ? $assign_for : ASSIGN_FOR_CHILDREN_RS; // always assign default category assignments as for_children break; case ROLE_RESTRICTION_RS: $for_item = ASSIGN_FOR_ENTITY_RS == $require_for || ASSIGN_FOR_BOTH_RS == $require_for; $for_children = ASSIGN_FOR_CHILDREN_RS == $require_for || ASSIGN_FOR_BOTH_RS == $require_for; $set_roles[$keys[1]][$role_handle] = array('max_scope' => $max_scope, 'for_item' => $for_item, 'for_children' => $for_children); $modcount++; break; } } } } // end foreach selected agents if (ROLE_ASSIGNMENT_RS == $mode) { $args = array('force_flush' => true, 'set_role_duration' => '', 'set_content_date_limits' => ''); if ($duration_limits_enabled && !empty($_POST['set_role_duration'])) { $is_limited = $date_entries_gmt->start_date_gmt || $date_entries_gmt->end_date_gmt != SCOPER_MAX_DATE_STRING || !empty($_POST['start_date_gmt_keep-timestamp']) || !empty($_POST['end_date_gmt_keep-timestamp']); $args['set_role_duration'] = (object) array('date_limited' => $is_limited, 'start_date_gmt' => $date_entries_gmt->start_date_gmt, 'end_date_gmt' => $date_entries_gmt->end_date_gmt); } if ($content_date_limits_enabled && !empty($_POST['set_content_date_limits'])) { $is_limited = $date_entries_gmt->content_min_date_gmt || $date_entries_gmt->content_max_date_gmt != SCOPER_MAX_DATE_STRING || !empty($_POST['content_min_date_gmt_keep-timestamp']) || !empty($_POST['content_max_date_gmt_keep-timestamp']); $args['set_content_date_limits'] = (object) array('content_date_limited' => $is_limited, 'content_min_date_gmt' => $date_entries_gmt->content_min_date_gmt, 'content_max_date_gmt' => $date_entries_gmt->content_max_date_gmt); } if (isset($set_roles[$role_basis])) { foreach ($set_roles[$role_basis] as $id => $item_roles) { $role_assigner->assign_roles($scope, $src_or_tx_name, $id, $item_roles, $role_basis, $args); } } } else { foreach ($set_roles as $id => $item_roles) { $role_assigner->restrict_roles($scope, $src_or_tx_name, $id, $item_roles, array('force_flush' => true)); } } if (!empty($selected_agents[$role_basis])) { if (ROLE_BASIS_USER == $role_basis) { $agents_msg[] = sprintf(_n("%d user", "%d users", count($selected_agents[$role_basis]), 'scoper'), count($selected_agents[$role_basis])); } else { $agents_msg[] = sprintf(_n("%d group", "%d groups", count($selected_agents[$role_basis]), 'scoper'), count($selected_agents[$role_basis])); } } } // end foreach role basis echo '<div id="message" class="updated fade"><p>'; switch ($mode) { case ROLE_ASSIGNMENT_RS: $roles_msg = sprintf(_n("%d role selection", "%d role selections", count($selected_roles), 'scoper'), count($selected_roles)); $agents_msg = implode(", ", $agents_msg); //printf( _ x('Role Assignments Updated: %1$s for %2$s', 'n role selections for x users, y groups', 'scoper'), $roles_msg, $agents_msg ); printf(__('Role Assignments Updated: %1$s for %2$s', 'scoper'), $roles_msg, $agents_msg); break; case ROLE_RESTRICTION_RS: printf(_n("Role Restrictions Updated: %d setting", "Role Restrictions Updated: %d settings", $modcount, 'scoper'), $modcount); break; } echo '</p></div>'; // allow the DB server a little time to refresh before querying what we just put in global $wpdb; $junk = scoper_get_col("SELECT assignment_id FROM {$wpdb->user2role2object_rs} LIMIT 10"); } //endif no input error return $err; }