From 600fca2c41da0d8109434016a5bb6bdeca0e6ad8 Mon Sep 17 00:00:00 2001 From: hugosolar Date: Thu, 18 Oct 2018 01:00:05 -0300 Subject: [PATCH] Add new user role sub_admin to see but not edit applications data --- .../admin/assets/js/script.js | 13 +++-- .../cc-global-network/admin/list-members.php | 2 +- .../admin/user-application-page.php | 6 +-- .../cc-global-network/cc-global-network.php | 3 +- .../includes/buddypress-integration.php | 49 ++++++++++++++++++- 5 files changed, 63 insertions(+), 10 deletions(-) diff --git a/plugins/cc-global-network/admin/assets/js/script.js b/plugins/cc-global-network/admin/assets/js/script.js index 51a189e..a1a8b7b 100644 --- a/plugins/cc-global-network/admin/assets/js/script.js +++ b/plugins/cc-global-network/admin/assets/js/script.js @@ -208,10 +208,15 @@ jQuery(document).ready(function($){ { 'targets': 7, 'render' : function(data, type, row, meta) { - var output = ''; - output += ''; - output += ''; - output += ''; + var output = ''; + if (wpApiSettings.is_sub_admin != 'yes') { + output += ''; + output += ''; + output += ''; + output += ''; + } else { + output += 'No actions'; + } return output; } } diff --git a/plugins/cc-global-network/admin/list-members.php b/plugins/cc-global-network/admin/list-members.php index 46eaaf7..a97b135 100644 --- a/plugins/cc-global-network/admin/list-members.php +++ b/plugins/cc-global-network/admin/list-members.php @@ -282,7 +282,7 @@ function ccgn_application_list_members_menu () { 'global-network-application-approval', 'List Members', 'List Members', - 'ccgn_pre_approve', + 'ccgn_sub_admin_view', 'global-network-list-users', 'ccgn_list_members_admin_page' ); diff --git a/plugins/cc-global-network/admin/user-application-page.php b/plugins/cc-global-network/admin/user-application-page.php index 7208c64..2183419 100644 --- a/plugins/cc-global-network/admin/user-application-page.php +++ b/plugins/cc-global-network/admin/user-application-page.php @@ -436,9 +436,9 @@ function ccgn_application_users_page_render_state ( $applicant_id, $state ) { echo _('

Pre-Approve

'); ccgn_application_users_page_pre_form ( $applicant_id ); } elseif ( $state == CCGN_APPLICATION_STATE_VOUCHING ) { - echo _('

Vote

'); - ccgn_application_users_page_vote_form ( $applicant_id ); - if ( ccgn_current_user_is_final_approver() ) { + if (ccgn_current_user_is_final_approver()) { + echo _('

Vote

'); + ccgn_application_users_page_vote_form ( $applicant_id ); echo _('

Final Approval

'); ccgn_application_users_page_final_approval_form( $applicant_id ); } diff --git a/plugins/cc-global-network/cc-global-network.php b/plugins/cc-global-network/cc-global-network.php index 72a5389..50caa58 100644 --- a/plugins/cc-global-network/cc-global-network.php +++ b/plugins/cc-global-network/cc-global-network.php @@ -365,7 +365,8 @@ function ccgn_admin_enqueue_scripts($hook_suffix) { 'current_user' => get_current_user_id(), 'site_epoch' => CCGN_SITE_EPOCH, 'date_now' => date("Y-m-d"), - 'ajax_url' => admin_url('admin-ajax.php') + 'ajax_url' => admin_url('admin-ajax.php'), + 'is_sub_admin' => (ccgn_current_user_is_sub_admin()) ? 'yes' : 'no' )); } } diff --git a/plugins/cc-global-network/includes/buddypress-integration.php b/plugins/cc-global-network/includes/buddypress-integration.php index 5d307fb..99f737a 100644 --- a/plugins/cc-global-network/includes/buddypress-integration.php +++ b/plugins/cc-global-network/includes/buddypress-integration.php @@ -73,6 +73,12 @@ define( 'CCGN_USER_ROLE_CC_LEGAL_TEAM', 'membership-cc-legal' ); +// User is a sub admin. new profile added on Octobre, 2018 +// The purpose is a rol that can only see some applications data on the admin screens +// the sub-admin can't make any action + +define('CCGN_USER_ROLE_SUB_ADMIN', 'membership-cc-sub-admin'); + // Which Field Groups different levels of registration/vouching can see // Admin users are handled separately @@ -135,6 +141,10 @@ function ccgn_add_roles_on_plugin_activation () { $approver->add_cap( 'ccgn_view_applications' ); $legal->add_cap( 'ccgn_view_applications' ); + $council->add_cap('ccgn_sub_admin_view'); + $approver->add_cap('ccgn_sub_admin_view'); + $legal->add_cap('ccgn_sub_admin_view'); + $council->add_cap( 'ccgn_list_applications' ); $approver->add_cap( 'ccgn_list_applications' ); $legal->add_cap( 'ccgn_list_applications' ); @@ -144,8 +154,34 @@ function ccgn_add_roles_on_plugin_activation () { $legal->add_cap( 'ccgn_list_applications_legal' ); // The Final Approver can list but not approve legal-stage applications $approver->add_cap( 'ccgn_list_applications_legal' ); + //Create sub_admin role + add_sub_admin_role(); } +// The subadmin function have the permission to see the application list +// but can not make any actions + +function add_sub_admin_role() { + $result = add_role( + CCGN_USER_ROLE_SUB_ADMIN, + 'CC Sub Administrator', + array() + ); + if (null !== $result ) { + $sub_admin = get_role(CCGN_USER_ROLE_SUB_ADMIN); + $sub_admin->add_cap('ccgn_view_applications'); + $sub_admin->add_cap('ccgn_list_applications'); + $sub_admin->add_cap('ccgn_sub_admin_view'); + $sub_admin->add_cap('ccgn_list_applications_legal'); + } + $council = get_role(CCGN_USER_ROLE_MEMBERSHIP_COUNCIL); + $approver = get_role(CCGN_USER_ROLE_FINAL_APPROVER); + $legal = get_role(CCGN_USER_ROLE_CC_LEGAL_TEAM); + + $council->add_cap('ccgn_sub_admin_view'); + $approver->add_cap('ccgn_sub_admin_view'); + $legal->add_cap('ccgn_sub_admin_view'); +} function ccgn_user_is_new ( $user_id ) { $new = true; $user = get_user_by( 'ID', $user_id ); @@ -227,11 +263,22 @@ function ccgn_current_user_is_legal_team () { } return $is; } +function ccgn_current_user_is_sub_admin() +{ + $is = false; + if (is_user_logged_in()) { + $user_id = get_current_user_id(); + $data = get_userdata($user_id); + $is = in_array(CCGN_USER_ROLE_SUB_ADMIN, $data->roles); + } + return $is; +} function ccgn_current_user_can_see_user_application_page () { return ccgn_current_user_is_membership_council () || ccgn_current_user_is_final_approver () - || ccgn_current_user_is_legal_team (); + || ccgn_current_user_is_legal_team () + || ccgn_current_user_is_sub_admin(); } ////////////////////////////////////////////////////////////////////////////////