Esempio n. 1
0
 public static function insert_role_assignments($role_name, $agent_type, $agents, $args = array())
 {
     //$defaults = array( );  // auto_insertion arg set for role propagation from parent objects
     //$args = array_merge( $defaults, (array) $args );
     //extract($args, EXTR_SKIP);
     if (!$agents) {
         return;
     }
     global $wpdb, $current_user;
     $assigner_id = $current_user->ID;
     $insert_data = compact('role_name', 'agent_type', 'assigner_id');
     // Before inserting a role, delete any overlooked old assignment.
     foreach (array_keys($agents) as $agent_id) {
         if (!$agent_id) {
             continue;
         }
         if ($ass_ids = $wpdb->get_col($wpdb->prepare("SELECT assignment_id FROM {$wpdb->ppc_roles} WHERE role_name = %s AND agent_id = %d", $role_name, $agent_id))) {
             PP_RoleAssigner::remove_roles_by_id($ass_ids);
         }
         // insert role for specified object and group(s)
         $insert_data['agent_id'] = $agent_id;
         $wpdb->insert($wpdb->ppc_roles, $insert_data);
         $assignment_id = $wpdb->insert_id;
         do_action('pp_assigned_sitewide_role', $assignment_id, compact('role_name', 'agent_type', 'agent_id', 'assigner_id'));
     }
 }
Esempio n. 2
0
     if (!current_user_can('pp_assign_roles') || !pp_bulk_roles_enabled()) {
         exit;
     }
     $deleted_ass_ids = array();
     $input_vals = explode('|', pp_sanitize_csv($_GET['pp_ass_ids']));
     foreach ($input_vals as $id_csv) {
         $ass_ids = _pp_editable_assignment_ids(explode(',', $id_csv));
         $deleted_ass_ids = array_merge($deleted_ass_ids, $ass_ids);
     }
     if ($deleted_ass_ids) {
         require_once dirname(__FILE__) . '/role_assigner_pp.php';
         $results = $wpdb->get_results("SELECT agent_type, agent_id, role_name FROM {$wpdb->ppc_roles} WHERE {$agent_clause} assignment_id IN ('" . implode("','", $deleted_ass_ids) . "')");
         foreach ($results as $row) {
             $this_group_clase = $agent_clause ? $agent_clause : "agent_type = '{$row->agent_type}' AND agent_id = '{$row->agent_id}' AND";
             if ($_ass_ids = $wpdb->get_col("SELECT assignment_id FROM {$wpdb->ppc_roles} WHERE {$this_group_clase} role_name='{$row->role_name}'")) {
                 PP_RoleAssigner::remove_roles_by_id($_ass_ids);
             }
         }
     }
     echo '<!--ppResponse-->' . implode('|', $input_vals) . '<--ppResponse-->';
     break;
 case 'exceptions_remove':
     if (empty($_GET['pp_eitem_ids'])) {
         exit;
     }
     if (!current_user_can('pp_assign_roles') || !pp_bulk_roles_enabled()) {
         exit;
     }
     $deleted_eitem_ids = array();
     $input_vals = explode('|', pp_sanitize_csv($_GET['pp_eitem_ids']));
     foreach ($input_vals as $id_csv) {