From e26f9ec54f9a4739e78062b2edbdb7f596fa50e8 Mon Sep 17 00:00:00 2001 From: Ruben Ramirez Date: Thu, 3 Apr 2025 22:27:11 -0500 Subject: [PATCH] feat: Add CPT capabilities to roles --- src/Includes/roles.php | 84 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 73 insertions(+), 11 deletions(-) diff --git a/src/Includes/roles.php b/src/Includes/roles.php index 2baa4bc..2ad1506 100644 --- a/src/Includes/roles.php +++ b/src/Includes/roles.php @@ -10,7 +10,7 @@ namespace Quiztech\AssessmentPlatform\Includes; // If this file is called directly, abort. if ( ! \defined( 'WPINC' ) ) { - \die; + die; } /** @@ -25,23 +25,85 @@ function quiztech_add_roles_and_capabilities() { 'quiz_manager', \__( 'Quiz Manager', 'quiztech' ), array( - 'read' => true, // Basic read access + 'read' => true, // Basic read access - // Add specific capabilities for Quiztech CPTs later - // 'edit_questions' => true, - // 'publish_questions' => true, - // 'delete_questions' => true, - // ... etc for assessments, jobs, evaluations + // Question CPT Capabilities + 'edit_question' => true, + 'read_question' => true, + 'delete_question' => true, + 'edit_questions' => true, + 'edit_others_questions' => true, + 'publish_questions' => true, + 'read_private_questions' => true, + 'delete_questions' => true, + 'delete_private_questions' => true, + 'delete_published_questions'=> true, + 'delete_others_questions' => true, + 'edit_private_questions' => true, + 'edit_published_questions' => true, + + // Assessment CPT Capabilities + 'edit_assessment' => true, + 'read_assessment' => true, + 'delete_assessment' => true, + 'edit_assessments' => true, + 'edit_others_assessments' => true, + 'publish_assessments' => true, + 'read_private_assessments' => true, + 'delete_assessments' => true, + 'delete_private_assessments'=> true, + 'delete_published_assessments'=> true, + 'delete_others_assessments' => true, + 'edit_private_assessments' => true, + 'edit_published_assessments'=> true, + + // Job CPT Capabilities (Placeholder - Add as needed) + 'edit_job' => true, + 'read_job' => true, + 'delete_job' => true, + 'edit_jobs' => true, + 'edit_others_jobs' => true, + 'publish_jobs' => true, + 'read_private_jobs' => true, + 'delete_jobs' => true, + 'delete_private_jobs' => true, + 'delete_published_jobs' => true, + 'delete_others_jobs' => true, + 'edit_private_jobs' => true, + 'edit_published_jobs' => true, + + // User Evaluation CPT Capabilities (Placeholder - Add as needed) + 'edit_user_evaluation' => true, + 'read_user_evaluation' => true, + 'delete_user_evaluation' => true, + 'edit_user_evaluations' => true, + 'edit_others_user_evaluations' => true, + 'publish_user_evaluations' => true, // Maybe restrict this? + 'read_private_user_evaluations' => true, + 'delete_user_evaluations' => true, + 'delete_private_user_evaluations' => true, + 'delete_published_user_evaluations' => true, + 'delete_others_user_evaluations' => true, + 'edit_private_user_evaluations' => true, + 'edit_published_user_evaluations' => true, + + // Custom Capabilities + 'manage_quiztech_settings' => true, // For accessing settings page ) ); // Add capabilities to Administrator role as well $admin_role = \get_role( 'administrator' ); if ( $admin_role ) { - // Add specific capabilities later - // $admin_role->add_cap( 'manage_quiztech_settings' ); - // $admin_role->add_cap( 'edit_questions' ); - // ... etc + // Add all the same capabilities as quiz_manager + $quiz_manager_role = \get_role('quiz_manager'); + if ($quiz_manager_role) { + foreach ($quiz_manager_role->capabilities as $cap => $grant) { + if ($grant) { // Only add granted capabilities + $admin_role->add_cap($cap); + } + } + } } }