';
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 '
';
// 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;
}
function get_objects_info($object_ids, &$object_names, &$object_status, &$unlisted_objects, $src, $otype, $ignore_hierarchy) {
global $wpdb;
// buffer titles in case they are translated
if ( 'page' == $otype->name ) // todo: other hierarchical types?
$titles = ScoperAdminBulkParent::get_page_titles();
$col_id = $src->cols->id;
$col_name = $src->cols->name;
$cols = "$col_name, $col_id";
if ( isset($src->cols->parent) && ! $ignore_hierarchy ) {
$col_parent = $src->cols->parent;
$cols .= ", $col_parent";
} else
$col_parent = '';
$col_status = ( ! empty($src->cols->status) ) ? $src->cols->status : '';
if ( $col_status )
$cols .= ", $col_status";
$unroled_count = 0;
$unroled_limit = ( ! empty($otype->admin_max_unroled_objects) ) ? $otype->admin_max_unroled_objects : 999999;
if ( ! empty($src->cols->type) ) {
$otype_clause = "AND {$src->cols->type} = '$otype->name'";
if ( 'post' == $src->name )
$otype_clause .= "AND {$src->cols->status} != 'auto-draft'";
} else
$otype_clause = '';
$obj = '';
if ( $results = scoper_get_results("SELECT $cols FROM $src->table WHERE 1=1 $otype_clause ORDER BY $col_id DESC") ) {
foreach ( $results as $row ) {
if ( isset($titles[$row->$col_id]) )
$object_names[$row->$col_id] = $titles[$row->$col_id];
elseif ( 'post' == $src->name )
$object_names[$row->$col_id] = apply_filters( 'the_title', $row->$col_name, $row->$col_id );
else
$object_names[$row->$col_id] = $row->$col_name;
if ( $col_status )
$object_status[$row->$col_id] = $row->$col_status;
unset($obj);
if ( $col_parent ) // temporarily key by name for alpha sort of additional items prior to hierarchy sort
$obj = (object) array($col_id => $row->$col_id, $col_name => $row->$col_name, $col_parent => $row->$col_parent);
else
$obj = (object) array($col_id => $row->$col_id, $col_name => $row->$col_name);
// List only a limited number of unroled objects
if ( ($unroled_limit >= 0) && ! isset($object_ids[$row->$col_id]) ) {
if ( $unroled_count >= $unroled_limit ) {
$unlisted_objects[$row->$col_id] = $obj;
continue;
}
$unroled_count++;
}
$listed_objects[$row->$col_id] = $obj;
}
}
// restore buffered page titles in case they were filtered previously
if ( 'page' == $otype->name ) {
scoper_restore_property_array( $listed_objects, $titles, 'ID', 'post_title' );
scoper_restore_property_array( $unlisted_objects, $titles, 'ID', 'post_title' );
}
return $listed_objects;
}
function filter_objects_listing($mode, &$role_settings, $src, $object_type) {
global $wpdb;
$filter_args = array();
// only list role assignments which the logged-in user can administer
$filter_args['required_operation'] = OP_EDIT_RS;
// Possible TODO: re-implement OP_ADMIN distinction with admin-specific capabilities
/* global $scoper;
if ( cr_get_reqd_caps( $src->name, OP_ADMIN_RS, $object_type ) ) {
$filter_args['required_operation'] = OP_ADMIN_RS;
} else {
$reqd_caps = array();
foreach (array_keys($src->statuses) as $status_name) {
$admin_caps = $scoper->cap_defs->get_matching($src->name, $object_type, OP_ADMIN_RS, $status_name);
$delete_caps = $scoper->cap_defs->get_matching($src->name, $object_type, OP_DELETE_RS, $status_name);
$reqd_caps[$object_type][$status_name] = array_merge(array_keys($admin_caps), array_keys($delete_caps));
}
$filter_args['force_reqd_caps'] = $reqd_caps;
}
*/
$qry = "SELECT $src->table.{$src->cols->id} FROM $src->table WHERE 1=1 AND {$src->cols->type} = '$object_type'";
//$filter_args['require_full_object_role'] = true;
$qry_flt = apply_filters('objects_request_rs', $qry, $src->name, $object_type, $filter_args);
if ( $cu_admin_results = scoper_get_col( $qry_flt ) )
$cu_admin_results = array_fill_keys( $cu_admin_results, true );
if ( ROLE_ASSIGNMENT_RS == $mode ) {
foreach ( array_keys($role_settings) as $role_basis )
foreach ( array_keys($role_settings[$role_basis]) as $obj_id )
if ( ! isset($cu_admin_results[$obj_id]) )
unset($role_settings[$role_basis][$obj_id]);
} else {
$setting_types = array('restrictions', 'unrestrictions');
foreach ($setting_types as $setting_type)
if ( isset($role_settings[$setting_type]) )
foreach ( array_keys($role_settings[$setting_type]) as $role_handle )
foreach ( array_keys($role_settings[$setting_type][$role_handle]) as $obj_id )
if ( ! isset($cu_admin_results[$obj_id]) )
unset($role_settings[$setting_type][$role_handle][$obj_id]);
}
return $cu_admin_results;
}
function item_tree_jslinks($mode, $args='') {
$defaults = array ( 'role_bases' => '', 'default_hide_empty' => false, 'hide_roles' => false, 'scope' => '', 'src' => '', 'otype' => '' );
$args = array_merge($defaults, (array) $args);
extract($args);
if ( (ROLE_ASSIGNMENT_RS == $mode) && empty($role_bases) )
$role_bases = array(ROLE_BASIS_USER, ROLE_BASIS_GROUPS);
$tr_display = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) ? 'block' : 'table-row';
/* // this is problematic because some roles are mutually exclusive for assignment
echo "";
_e('select all roles', 'scoper');
echo " | ";
*/
echo "";
_e('unselect all roles', 'scoper');
echo ' | ';
if ( $role_bases && in_array(ROLE_BASIS_USER, $role_bases) ) {
echo "";
_e('hide users', 'scoper');
echo '';
echo "";
_e('show users', 'scoper');
echo ' | ';
}
if ( $role_bases && in_array(ROLE_BASIS_GROUPS, $role_bases) ) {
echo "";
_e('hide groups', 'scoper');
echo '';
echo "";
_e('show groups', 'scoper');
echo ' | ';
}
if ( $hide_roles ) {
echo "";
_e('hide roles', 'scoper');
echo '';
echo "";
_e('show roles', 'scoper');
echo ' | ';
}
// Hide Empty
$hide_tr_sfx = ( $default_hide_empty ) ? '-hide' : '';
$hide_li_sfx = ( $default_hide_empty ) ? '-hide' : '';
$js_call = "
agp_set_display('rs-show_empty','inline',this.id);
agp_display_marked_elements('li','no-rol-li{$hide_li_sfx}','none');
agp_setcss('.no-rol{$hide_tr_sfx}','display','none');
agp_set_display('max_unroled_notice','none');
";
if ( $role_bases )
$js_call .= "
agp_setcss('.user-csv','display','inline');
agp_setcss('.groups-csv','display','inline');
agp_set_display('max_unroled_notice','none','');
";
$unroled_limit = ( ! empty($otype->max_unroled_objects) ) ? $otype->max_unroled_objects : 999999;
$style = ( $default_hide_empty ) ? ' style="display:none;"' : '';
$title = __('hide unmodified items', 'scoper');
echo "";
if ( ROLE_RESTRICTION_RS == $mode )
_e('hide defaulted', 'scoper');
else
_e('hide unassigned', 'scoper');
echo '';
$js_call = "
agp_set_display('rs-hide_empty','inline',this.id);
agp_display_marked_elements('li','no-rol-li{$hide_li_sfx}','block');
agp_setcss('.no-rol{$hide_tr_sfx}','display','$tr_display');
agp_set_display('max_unroled_notice','block');
";
$style = ( $default_hide_empty ) ? '' : ' style="display:none;"';
$src_label = ( ! empty($src->labels->name) ) ? agp_strtolower($src->labels->name) : __('items', 'scoper');
if ( ROLE_RESTRICTION_RS == $mode )
$title = sprintf(__('include the newest %s with default restrictions', 'scoper'), $src_label);
else
$title = sprintf(__('include the newest %s with no role assignments', 'scoper'), $src_label);
echo "";
if ( ROLE_RESTRICTION_RS == $mode )
_e('show defaulted', 'scoper');
else
_e('show unassigned', 'scoper');
// Collapse All
if ( empty($otype->ignore_object_hierarchy) ) {
echo ' | ';
$js_call = "
agp_set_display('rs-expand_all','inline',this.id);
agp_display_marked_elements('li','role-li','none');
agp_set_marked_elem_property('a','term-tgl','innerHTML','+');
agp_display_marked_elements('span','rs-termjump','none');
";
echo "";
_e('collapse all', 'scoper');
echo '';
}
$js_call = "
agp_set_display('rs-collapse_all','inline',this.id);
agp_display_marked_elements('li','role-li','block');
agp_set_marked_elem_property('a','term-tgl','innerHTML','-');
agp_display_marked_elements('span','rs-termjump','inline');
";
echo "";
_e('expand all', 'scoper');
echo '';
if ( ! empty($otype->admin_max_unroled_objects) ) {
$display_style = ( $default_hide_empty ) ? 'style="display:none;"' : '';
echo "
";
if ( ROLE_RESTRICTION_RS == $mode )
printf(__('Note: %1$s with default restrictions will not be listed here unless they are among the %2$s newest.', 'scoper'), $src_label, $otype->admin_max_unroled_objects);
else
printf(__('Note: %1$s with no role assignments will not be listed here unless they are among the %2$s newest.', 'scoper'), $src_label, $otype->admin_max_unroled_objects);
echo '
';
}
}
function item_tree($scope, $mode, $src, $otype_or_tx, $all_items, $assigned_roles, $strict_items, $role_defs_by_otype, $role_codes, $args = array()) {
$defaults = array ( 'admin_items' => '', 'editable_roles' => '',
'ul_class' => 'rs-termlist', 'ie_link_style' => '', 'object_names' => '',
'table_captions' => '', 'err' => '', 'object_status' => '',
'agent_caption_plural' => '', 'agent_list_prefix' => '', 'agent_names' => '',
'default_hide_empty' => false, 'role_bases' => array(ROLE_BASIS_USER, ROLE_BASIS_GROUPS),
'single_item' => false );
$args = array_merge($defaults, (array) $args);
extract($args);
global $scoper;
if ( ! is_object($src) )
$src = $scoper->data_sources->get($src);
$col_id = $src->cols->id;
$col_name = $src->cols->name;
$col_parent = ( isset($src->cols->parent) ) ? $src->cols->parent : '';
$item_label = $otype_or_tx->labels->singular_name;
if ( TERM_SCOPE_RS == $scope ) {
$src_or_tx_name = $otype_or_tx->name;
$edit_url_base = ( ! empty($otype_or_tx->edit_url) ) ? $otype_or_tx->edit_url : '';
} else {
$src_or_tx_name = $src->name;
$edit_url_base = ( ! empty($src->edit_url) ) ? $src->edit_url : '';
}
if ( $default_hide_empty ) {
$hide_tr_sfx = '-hide';
$hide_li_sfx = '-hide';
} else {
$hide_tr_sfx = '';
$hide_li_sfx = '';
}
$nextlink = '';
$prevlink = '';
if ( empty($admin_items) )
$admin_items = array();
if ( empty($agent_caption_plural) )
$agent_caption_plural = __('Users or Groups', 'scoper');
if ( empty($agent_list_prefix) ) {
$agent_list_prefix = array();
$agent_list_prefix[ROLE_BASIS_USER] = '';
$agent_list_prefix[ROLE_BASIS_GROUPS] = __('Groups') . ': ';
}
static $prevtext, $nexttext, $is_administrator, $role_header, $agents_header;
if ( empty($prevtext) ) {
// buffer prev/next caption for display with each term
//$prevtext = _ x('prev', '|abbreviated link to previous item', 'scoper');
//$nexttext = _ x('next', '|abbreviated link to next item', 'scoper');
$prevtext = __('prev', 'scoper');
$nexttext = __('next', 'scoper');
$is_administrator = is_administrator_rs($src, 'user');
$role_header = __awp('Role');
switch ( $mode ) {
case ROLE_ASSIGNMENT_RS:
//$agents_header = sprintf( _ x('Current %s', 'users or groups', 'scoper'), $agent_caption_plural);
$agents_header = sprintf( __('Current %s', 'scoper'), $agent_caption_plural);
break;
case ROLE_RESTRICTION_RS:
$agents_header = __('Current Restrictions', 'scoper');
break;
default:
return;
}
}
// disregard roles that don't apply to this scope
foreach ( $role_defs_by_otype as $object_type => $role_defs )
foreach ( $role_defs as $role_handle => $role )
if ( ! isset($role->valid_scopes[$scope]) )
unset( $role_defs_by_otype[$object_type][$role_handle] );
// for object scope, assign "private post reader" role, but label it as "post reader" to limit confusion
$role_display_name = array();
foreach ( $role_defs_by_otype as $role_defs )
foreach ( array_keys($role_defs) as $role_handle )
$role_display_name[$role_handle] = $scoper->role_defs->get_display_name( $role_handle, $scope . '_ui' );
// display a separate role assignment list for each individual term / object
$last_id = -1;
$last_name = '';
$last_parent_id = -1;
$parent_id = 0;
$parents = array();
$depth = 0;
$_top_link = "" . __('top', 'scoper') . '';
$tr_display = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) ? 'block' : 'table-row';
$show_all_caption = __('show all', 'scoper');
echo "
";
} // end foreach role
} // end foreach object_type
echo '
';
} // end foreach term
while($depth) {
echo '
';
$depth--;
}
echo '';
echo '
';
// now display "select all" checkboxes for all terms in this taxonomy
if ( empty( $single_item ) ) {
if ( defined('SCOPER_EXTRA_SUBMIT_BUTTON') ) {
echo '
';
}
?>
labels->name ) )?>
$col_id;
$all_items_ser = implode('-', $all_items_arr);
//display "check for every term" shortcuts for each individual role
global $scoper;
$style = ' class="rs-backwhite"';
foreach ( $role_defs_by_otype as $object_type => $roles ) {
foreach ( array_keys($roles) as $role_handle ) {
$style = ( ' class="alternate"' == $style ) ? ' class="rs-backwhite"' : ' class="alternate"';
// $check_shorcut was displayed in first