function _agents_checklist_display($agents_subset, $role_basis, $all_agents, $id_prefix, $stored_assignments, $args, &$key, &$action_links)
 {
     $defaults = array('eligible_ids' => '', 'locked_ids' => '', 'suppress_extra_prefix' => false, 'check_for_incomplete_submission' => false, 'checkall_threshold' => 6, 'filter_threshold' => 10, 'default_hide_threshold' => 20, 'caption_length_limit' => 20, 'emsize_threshold' => 4, 'objtype_display_name' => '', 'objtype_display_name_plural' => '', 'propagation' => false, 'for_children_ids' => '', 'for_entity_ids' => '', 'via_other_scope_ids' => '', 'via_other_scope_prefix' => '/', 'via_other_scope_suffix' => '/', 'via_other_role_ids' => '', 'via_other_role_prefix' => '(', 'via_other_role_suffix' => ')', 'via_other_basis_ids' => '', 'via_other_basis_prefix' => "|", 'via_other_basis_suffix' => '|', 'inherited_prefix' => '{', 'inherited_suffix' => '}', 'suppress_last_agents' => false);
     $args = array_merge($defaults, (array) $args);
     extract($args);
     $ie_checkbox_style = !empty($GLOBALS['is_IE']) ? "style='height:1em'" : '';
     if (ELIGIBLE_ITEMS_RS == $agents_subset && scoper_get_option("{$role_basis}_role_assignment_csv")) {
         return ScoperAgentsChecklist::eligible_agents_input_box($role_basis, $id_prefix, $propagation);
     }
     if (is_array($eligible_ids) && empty($eligible_ids)) {
         $eligible_ids = array(-1);
     } else {
         if (!is_array($eligible_ids)) {
             $eligible_ids = array();
         } else {
             $eligible_ids = array_flip($eligible_ids);
         }
     }
     if (!is_array($stored_assignments)) {
         $stored_assignments = array();
     }
     if (!is_array($locked_ids)) {
         $locked_ids = array();
     } else {
         $locked_ids = array_flip($locked_ids);
     }
     if (!is_array($for_children_ids)) {
         $for_children_ids = array();
     } else {
         $for_children_ids = array_flip($for_children_ids);
     }
     if (is_array($for_entity_ids) && !empty($for_entity_ids)) {
         $for_entity_ids = array_flip($for_entity_ids);
     }
     if (!$via_other_scope_ids || !is_array($via_other_scope_ids)) {
         $via_other_scope_ids = array();
     } else {
         $via_other_scope_ids = array_flip($via_other_scope_ids);
     }
     if (!is_array($via_other_role_ids)) {
         $via_other_role_ids = array();
     } else {
         $via_other_role_ids = array_flip($via_other_role_ids);
     }
     if (!is_array($via_other_basis_ids)) {
         $via_other_basis_ids = array();
     } else {
         $via_other_basis_ids = array_flip($via_other_basis_ids);
     }
     if (!$suppress_extra_prefix) {
         $id_prefix .= "_{$role_basis}";
     }
     $any_inherited = $any_other_scope = $any_other_role = $any_other_basis = $any_date_limits = false;
     $agent_count = array();
     $agent_count[CURRENT_ITEMS_RS] = count($stored_assignments);
     if (empty($eligible_ids)) {
         $agent_count[ELIGIBLE_ITEMS_RS] = count($all_agents) - count($stored_assignments);
     } elseif ($eligible_ids != array(-1)) {
         foreach (array_keys($all_agents) as $_key) {
             $all_agent_ids[$all_agents[$_key]->ID] = true;
         }
         $eligible_ids = array_intersect_key($eligible_ids, $all_agent_ids);
         $agent_count[ELIGIBLE_ITEMS_RS] = count(array_diff_key($eligible_ids, $stored_assignments));
     } else {
         $agent_count[ELIGIBLE_ITEMS_RS] = 0;
     }
     $default_hide_filtered_list = $default_hide_threshold && $agent_count[$agents_subset] > $default_hide_threshold;
     $checked = $agents_subset == CURRENT_ITEMS_RS ? $checked = "checked='checked'" : '';
     // determine whether to show caption, show/hide checkbox and filter textbox
     $any_display_filtering = $agent_count[CURRENT_ITEMS_RS] > $filter_threshold || $agent_count[ELIGIBLE_ITEMS_RS] > $filter_threshold;
     if ($agent_count[$agents_subset] > $filter_threshold) {
         if (ROLE_BASIS_GROUPS == $role_basis) {
             $caption = CURRENT_ITEMS_RS == $agents_subset ? __('show current groups (%d)', 'scoper') : __('show eligible groups (%d)', 'scoper');
         } else {
             $caption = CURRENT_ITEMS_RS == $agents_subset ? __('show current users (%d)', 'scoper') : __('show eligible users (%d)', 'scoper');
         }
         $js_call = "agp_display_if('div_{$agents_subset}_{$id_prefix}', this.id);" . "agp_display_if('chk-links_{$agents_subset}_{$id_prefix}', this.id);";
         $flt_checked = !$default_hide_filtered_list ? "checked='checked'" : '';
         $ul_class = 'rs-agents-ul';
         echo "<ul class='rs-list_horiz {$ul_class}'><li>";
         // IE6 (at least) does not render label reliably without this
         echo "<input type='checkbox' name='rs-jscheck[]' value='validate_me_{$agents_subset}_{$id_prefix}' id='chk_{$agents_subset}_{$id_prefix}' {$flt_checked} onclick=\"{$js_call}\" {$ie_checkbox_style} /> ";
         echo "<strong><label for='chk_{$agents_subset}_{$id_prefix}'>";
         printf($caption, $agent_count[$agents_subset]);
         echo '</label></strong>';
         echo '</li>';
         $class = $default_hide_filtered_list ? '' : 'class="agp_js_show"';
         echo "\r\n" . "<li style='clear:both;'>&nbsp;&nbsp;<label for='flt_{$agents_subset}_{$id_prefix}' id='lbl_flt_{$id_prefix}'>";
         _e('filter:', 'scoper');
         $js_call = "agp_filter_ul('list_{$agents_subset}_{$id_prefix}', this.value, 'chk_{$agents_subset}_{$id_prefix}', 'chk-links_{$agents_subset}_{$id_prefix}');";
         echo " <input type='text' id='flt_{$agents_subset}_{$id_prefix}' size='10' onkeyup=\"{$js_call}\" />";
         echo "</label></li>";
         echo "<li {$class} style='display:none;' id='chk-links_{$agents_subset}_{$id_prefix}'>";
         $js_call = "agp_check_by_name('{$id_prefix}[]', true, true, false, 'list_{$agents_subset}_{$id_prefix}', 1);";
         echo "\r\n" . "&nbsp;&nbsp;" . "<a href='javascript:void(0)' onclick=\"{$js_call}\">";
         _e('select', 'scoper');
         echo '</a>&nbsp;&nbsp;';
         $js_call = "agp_check_by_name('{$id_prefix}[]', '', true, false, 'list_{$agents_subset}_{$id_prefix}', 1);";
         echo "\r\n" . "<a href='javascript:void(0)' onclick=\"{$js_call}\">";
         _e('unselect', 'scoper');
         echo "</a>";
         if ($propagation) {
             $js_call = "agp_check_by_name('p_{$id_prefix}[]', true, true, false, 'list_{$agents_subset}_{$id_prefix}', 1);";
             echo "\r\n" . "&nbsp;&nbsp;" . "<a href='javascript:void(0)' onclick=\"{$js_call}\">";
             _e('propagate', 'scoper');
             echo '</a>&nbsp;&nbsp;';
             $js_call = "agp_check_by_name('p_{$id_prefix}[]', '', true, false, 'list_{$agents_subset}_{$id_prefix}', 1);";
             echo "\r\n" . "<a href='javascript:void(0)' onclick=\"{$js_call}\">";
             _e('unpropagate', 'scoper');
             echo "</a>";
         }
         echo '</li></ul>';
     } else {
         $ul_class = '';
         if ($agent_count[$agents_subset]) {
             echo "<ul class='rs-list_horiz rs-agents_filter {$ul_class}'><li>";
             if (ROLE_BASIS_GROUPS == $role_basis) {
                 $caption = CURRENT_ITEMS_RS == $agents_subset ? __('current groups (%d):', 'scoper') : __('eligible groups (%d):', 'scoper');
             } else {
                 $caption = CURRENT_ITEMS_RS == $agents_subset ? __('current users (%d):', 'scoper') : __('eligible users (%d):', 'scoper');
             }
             printf("<div class='rs-agents_caption'><strong>{$caption}</strong></div>", $agent_count[$agents_subset]);
             echo '</li></ul>';
         }
     }
     $title = '';
     if ($propagation) {
         if (!$otype_label_singular) {
             $otype_label_singular = __('object', 'scoper');
         }
         if (!$otype_label) {
             $otype_label = __('objects', 'scoper');
         }
     }
     if ($any_display_filtering || $agent_count[$agents_subset] > $emsize_threshold) {
         global $wp_locale;
         $rtl = isset($wp_locale) && 'rtl' == $wp_locale->text_direction;
         // -------- determine required list item width -----------
         if ($caption_length_limit > 40) {
             $caption_length_limit = 40;
         }
         if ($caption_length_limit < 10) {
             $caption_length_limit = 10;
         }
         $longest_caption_length = 0;
         foreach ($all_agents as $agent) {
             $id = $agent->ID;
             if (is_array($for_entity_ids)) {
                 $role_assigned = isset($for_entity_ids[$id]) || isset($for_children_ids[$id]);
             } else {
                 $role_assigned = isset($stored_assignments[$id]);
             }
             switch ($agents_subset) {
                 case CURRENT_ITEMS_RS:
                     if (!$role_assigned) {
                         continue 2;
                     }
                     break;
                 default:
                     //ELIGIBLE_ITEMS_RS
                     if ($role_assigned) {
                         continue 2;
                     }
                     if ($eligible_ids && !isset($eligible_ids[$id])) {
                         continue 2;
                     }
             }
             $caption = ROLE_BASIS_GROUPS == $role_basis && $agent->meta_id ? ScoperAdminLib::get_metagroup_name($agent->meta_id) : $agent->display_name;
             if ($role_assigned && !empty($stored_assignments[$id]['inherited_from'])) {
                 $caption = $inherited_prefix . $caption . $inherited_suffix;
             } elseif (!$role_assigned && isset($via_other_basis_ids[$id])) {
                 $caption = $via_other_basis_prefix . $caption . $via_other_basis_suffix;
             } elseif (isset($via_other_role_ids[$id])) {
                 $caption = $via_other_role_prefix . $caption . $via_other_role_suffix;
             } elseif (isset($via_other_scope_ids[$id])) {
                 $caption = $via_other_scope_prefix . $caption . $via_other_scope_suffix;
             }
             if (strlen($caption) > $longest_caption_length) {
                 if (strlen($caption) >= $caption_length_limit) {
                     $longest_caption_length = $caption_length_limit + 2;
                 } else {
                     $longest_caption_length = strlen($caption);
                 }
             }
         }
         if ($longest_caption_length < 10) {
             $longest_caption_length = 10;
         }
         //if ( ! $ems_per_character = scoper_get_option('ems_per_character') )
         if (defined('UI_EMS_PER_CHARACTER')) {
             $ems_per_character = UI_EMS_PER_CHARACTER;
         } else {
             $ems_per_character = 0.85;
         }
         $list_width_ems = $ems_per_character * $longest_caption_length;
         if ($propagation) {
             $list_width_ems = $list_width_ems + 1.0;
         }
         $ems_integer = intval($list_width_ems);
         $ems_half = $list_width_ems - $ems_integer >= 0.5 ? '_5' : '';
         $ul_class = "rs-agents_list_{$ems_integer}{$ems_half}";
         $hide_class = $default_hide_filtered_list && $agent_count[$agents_subset] > $filter_threshold ? 'class="agp_js_hide"' : '';
         echo "\r\n" . "<div id='div_{$agents_subset}_{$id_prefix}' {$hide_class}>" . "<div class='rs-agents_emsized'>" . "<ul class='{$ul_class}' id='list_{$agents_subset}_{$id_prefix}'>";
     } else {
         $ul_class = "rs-agents_list_auto";
         echo "\r\n<ul class='{$ul_class}' id='list_{$agents_subset}_{$id_prefix}'>";
     }
     //-------- end list item width determination --------------
     $last_agents = array();
     $last_agents_prop = array();
     foreach ($all_agents as $agent) {
         $id = $agent->ID;
         $agent_display_name = ROLE_BASIS_GROUPS == $role_basis && $agent->meta_id ? ScoperAdminLib::get_metagroup_name($agent->meta_id) : $agent->display_name;
         if (is_array($for_entity_ids)) {
             $role_assigned = isset($for_entity_ids[$id]) || isset($for_children_ids[$id]);
         } else {
             $role_assigned = isset($stored_assignments[$id]);
         }
         switch ($agents_subset) {
             case CURRENT_ITEMS_RS:
                 if (!$role_assigned) {
                     continue 2;
                 }
                 break;
             default:
                 //ELIGIBLE_ITEMS_RS
                 if ($role_assigned) {
                     continue 2;
                 }
                 if ($eligible_ids && !isset($eligible_ids[$id])) {
                     continue 2;
                 }
         }
         // markup for role duration / content date limits
         $title = '';
         // we can't set the title because it's used by JS for onkey filtering
         $limit_class = '';
         $link_class = '';
         $limit_style = '';
         if (isset($stored_assignments[$id])) {
             ScoperAdminUI::set_agent_formatting($stored_assignments[$id], $title, $limit_class, $link_class, $limit_style);
         }
         if ($title) {
             $any_date_limits = true;
             $label_title = " title='{$title}'";
         } else {
             $label_title = '';
         }
         $disabled = $locked_ids && isset($locked_ids[$id]) ? " disabled='disabled'" : '';
         $li_title = "title=' " . agp_strtolower($agent_display_name) . " '";
         if ($check_for_incomplete_submission && isset($_POST['scoper_error']) && isset($_POST[$id_prefix])) {
             $this_checked = in_array($id, $_POST[$id_prefix]) ? ' checked="checked"' : '';
         } else {
             if ($role_assigned && (!is_array($for_entity_ids) || isset($for_entity_ids[$id]))) {
                 $this_checked = ' checked="checked"';
             } else {
                 $this_checked = '';
             }
         }
         if ($this_checked && !$suppress_last_agents) {
             $last_agents[] = $id;
         }
         if (isset($via_other_role_ids[$id])) {
             $label_class = " class='rs-via-r{$limit_class}'";
         } elseif (!$role_assigned && isset($via_other_basis_ids[$id])) {
             $label_class = " class='rs-via-b{$limit_class}'";
         } elseif (isset($via_other_scope_ids[$id])) {
             $label_class = " class='rs-via-s{$limit_class}'";
         } elseif ($limit_class) {
             $label_class = " class='" . trim($limit_class) . "'";
         } else {
             $label_class = '';
         }
         echo "\r\n<li {$li_title}>" . "<input type='checkbox' name='{$id_prefix}[]'{$disabled}{$this_checked} value='{$id}' id='{$id_prefix}{$id}' {$ie_checkbox_style} />";
         if ($propagation) {
             if ($check_for_incomplete_submission && isset($_POST['scoper_error']) && isset($_POST["p_{$id_prefix}"])) {
                 $this_checked_prop = in_array($id, $_POST["p_{$id_prefix}"]) ? ' checked="checked"' : '';
             } else {
                 if (isset($for_children_ids[$id])) {
                     $this_checked_prop = " checked='checked'";
                 } else {
                     $this_checked_prop = '';
                 }
             }
             if ($this_checked_prop && !$suppress_last_agents) {
                 $last_agents_prop[] = $id;
             }
             echo "{" . "<input type='checkbox' name='p_{$id_prefix}[]'{$disabled}{$this_checked_prop} value='{$id}' id='p_{$id_prefix}{$id}' {$ie_checkbox_style} />" . "}";
         }
         echo "<label {$title} {$limit_style} for='{$id_prefix}{$id}'{$label_class}{$label_title}>";
         $caption = $agent_display_name;
         if (strlen($caption) > $caption_length_limit) {
             if (!empty($rtl)) {
                 $caption = '...' . substr($caption, strlen($caption) - $caption_length_limit);
             } else {
                 $caption = substr($caption, 0, $caption_length_limit) . '...';
             }
         }
         if ($role_assigned && !empty($stored_assignments[$id]['inherited_from'])) {
             $caption = $inherited_prefix . $caption . $inherited_suffix;
             $any_inherited = true;
         } elseif (isset($via_other_role_ids[$id])) {
             $caption = $via_other_role_prefix . $caption . $via_other_role_suffix;
             $any_other_role = true;
         } elseif (!$role_assigned && isset($via_other_basis_ids[$id])) {
             $caption = $via_other_basis_prefix . $caption . $via_other_basis_suffix;
             $any_other_basis = true;
         } elseif (isset($via_other_scope_ids[$id])) {
             $caption = $via_other_scope_prefix . $caption . $via_other_scope_suffix;
             $any_other_scope = true;
         }
         $caption = ' ' . $caption;
         echo $caption;
         // str_replace(' ', '&nbsp;', $caption);
         echo '</label></li>';
     }
     //foreach agent
     echo "\r\n<li></li></ul>";
     // prevent invalid markup if no other li's
     if (CURRENT_ITEMS_RS == $agents_subset) {
         $last_agents = implode("~", $last_agents);
         $last_agents_prop = implode("~", $last_agents_prop);
         echo "<input type=\"hidden\" id=\"last_{$id_prefix}\" name=\"last_{$id_prefix}\" value=\"{$last_agents}\" />";
         echo "<input type=\"hidden\" id=\"last_p_{$id_prefix}\" name=\"last_p_{$id_prefix}\" value=\"{$last_agents_prop}\" />";
     }
     if ($any_display_filtering || $agent_count[$agents_subset] > $emsize_threshold) {
         echo '</div></div>';
     }
     // display key
     if ($any_inherited && $inherited_prefix) {
         $key['inherited'] = "{$inherited_prefix} {$inherited_suffix}" . '<span class="rs-keytext">' . sprintf(__('inherited from parent %s', 'scoper'), agp_strtolower($otype_label_singular)) . '</span>';
     }
     if ($any_other_role && $via_other_role_prefix) {
         $key['other_role'] = "<span class='rs-via-r'>{$via_other_role_prefix}&nbsp;{$via_other_role_suffix}" . '<span class="rs-keytext">' . str_replace(' ', '&nbsp;', __('has via other role', 'scoper')) . '</span></span>';
     }
     if ($any_other_basis && $via_other_basis_prefix) {
         $key['other_basis'] = "<span class='rs-via-b'>{$via_other_basis_prefix}&nbsp;{$via_other_basis_suffix}" . '<span class="rs-keytext">' . str_replace(' ', '&nbsp;', __('has via group', 'scoper')) . '</span></span>';
     }
     if ($any_other_scope && $via_other_scope_prefix) {
         $key['other_scope'] = "<span class='rs-via-s'>{$via_other_scope_prefix}&nbsp;{$via_other_scope_suffix}" . '<span class="rs-keytext">' . str_replace(' ', '&nbsp;', __('has via other scope', 'scoper')) . '</span></span>';
     }
     if ($propagation) {
         $key['propagation'] = "{<input type='checkbox' disabled='disabled' name='rs-prop_key_{$agents_subset}_{$id_prefix}' id='rs-prop_key_{$agents_subset}_{$id_prefix}' style='vertical-align:middle' />}" . '<span class="rs-keytext">' . sprintf(__('propagate to sub-%s', 'scoper'), agp_strtolower($otype_label)) . '</span>';
     }
     if ($any_date_limits && !empty($object_id)) {
         if (empty($GLOBALS['post']) || 'auto-draft' != $GLOBALS['post']->post_status) {
             //don't display link for auto-drafts
             $action_links['limits'] = sprintf(__('%1$sEdit date limits%2$s', 'scoper'), "<a href='admin.php?page=rs-{$object_type}-roles#item-{$object_id}'>", '</a>');
         }
     }
 }
Ejemplo n.º 2
0
                if ($result->meta_id == 'rv_pending_rev_notice_ed_nr_' || $result->meta_id == 'rv_scheduled_rev_notice_ed_nr_') {
                    continue;
                }
            }
            if ($i % 2 == 0) {
                $style = 'class=\'alternate\'';
            } else {
                $style = '';
            }
            ?>
		<tr <?php 
            echo $style;
            ?>
>
			<td><?php 
            $name = $result->meta_id ? ScoperAdminLib::get_metagroup_name($result->meta_id, $result->display_name) : $result->display_name;
            if ((!$result->meta_id || strpos($result->meta_id, '_ed_')) && (is_user_administrator_rs() || current_user_can('recommend_group_membership', $result->ID))) {
                $url = "admin.php?page=rs-groups&amp;mode=edit&amp;id={$result->ID}";
                echo "<a class='edit' href='{$url}'>{$name}</a>";
            } else {
                echo $name;
            }
            ?>
			</td>
			<td><?php 
            if ($result->meta_id) {
                echo ScoperAdminLib::get_metagroup_descript($result->meta_id, $result->descript);
            } else {
                echo $result->descript;
            }
            ?>
 function get_metagroup_descript($meta_id, $default_descript = '')
 {
     if (0 === strpos($meta_id, 'wp_role_')) {
         $role_display_name = ScoperAdminLib::get_metagroup_name($meta_id);
         $role_display_name = str_replace('[WP ', '', $role_display_name);
         $role_display_name = str_replace(']', '', $role_display_name);
         return sprintf(__('All users with the WordPress role of %s', 'scoper'), $role_display_name);
     } elseif ('wp_anon' == $meta_id) {
         return __('Anonymous users (not logged in)', 'scoper');
     } else {
         return $default_descript;
     }
 }