function _pp_editable_assignment_ids($ass_ids) { if (pp_is_user_administrator()) { return $ass_ids; } global $wpdb, $pp_admin; $results = $wpdb->get_results("SELECT assignment_id, role_name FROM {$wpdb->ppc_roles} WHERE assignment_id IN ('" . implode("','", $ass_ids) . "')"); $remove_ids = array(); foreach ($results as $row) { if (!($role_attrib = pp_get_role_attributes($row->role_name))) { continue; } if (!pp_user_can_admin_role($role_attrib->base_role_name, $role_attrib->object_type)) { $remove_ids[] = $row->assignment_id; } } $ass_ids = array_diff($ass_ids, $remove_ids); return $ass_ids; }
$role_name = isset($_GET['pp_role_name']) ? pp_sanitize_csv($_GET['pp_role_name']) : ''; if ($force_vars = apply_filters('pp_ajax_role_ui_vars', array(), compact('for_item_source', 'for_item_type', 'role_name'))) { extract($force_vars); } $html = ''; switch ($_GET['pp_ajax_ui']) { case 'get_role_options': if (!is_user_logged_in()) { echo '<option>' . __('(login timed out)', 'pp') . '</option>'; exit; } global $pp_admin, $wp_roles, $pp_role_defs; //$is_tx_management = ( 'term' == $for_item_source ); if ($roles = _pp_get_type_roles($for_item_source, $for_item_type)) { foreach ($roles as $_role_name => $role_title) { if (pp_user_can_admin_role($_role_name, $for_item_type)) { $selected = $_role_name == $role_name ? "selected='selected'" : ''; $html .= "<option value='{$_role_name}' {$selected}>{$role_title}</option>"; } } } else { $caption = __('(invalid role definition)', 'pp'); $html .= "<option value='' {$selected}>{$caption}</option>"; } break; case 'get_conditions_ui': if (!is_user_logged_in()) { echo '<p>' . __('(login timed out)', 'pp') . '</p><div class="pp-checkbox"><input type="checkbox" name="pp_select_for_item" style="display:none"><input type="checkbox" name="pp_select_for_item" style="display:none"></div>'; exit; } global $pp_role_defs;