예제 #1
0
        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
        ?>

			
예제 #2
0
 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;
 }