Files
Digital-Dabei-Hamburg-Job-M…/includes/class-roles.php
Viktor Miller 737f3d6fe9 feat(07-01): implement complete job management workflow
Adds comprehensive job submission, editing, and deactivation functionality with proper form handling and permissions. Includes administrator capabilities for job_offer management and fixed dashboard navigation.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-17 19:49:21 +09:00

99 lines
3.0 KiB
PHP

<?php
/**
* User roles handler
*
* @package DDHH_Job_Manager
*/
// Exit if accessed directly.
defined( 'ABSPATH' ) || exit;
/**
* Handles custom user roles
*/
class DDHH_JM_Roles {
/**
* Add custom roles
* Called on plugin activation
*/
public static function add_roles() {
// Register ddhh_provider role
add_role(
'ddhh_provider',
__( 'Anbieter', 'ddhh-job-manager' ),
array(
// Basic WordPress access
'read' => true,
// Job offer capabilities (own only)
'edit_job_offers' => true,
'delete_job_offers' => true,
'upload_files' => true,
// Explicitly deny publishing (jobs go to pending for admin approval)
'publish_job_offers' => false,
// Explicitly deny editing others' content
'edit_others_job_offers' => false,
// Explicitly deny access to regular posts/pages
'edit_posts' => false,
'edit_pages' => false,
'edit_others_posts' => false,
'edit_others_pages' => false,
'publish_posts' => false,
'publish_pages' => false,
// Explicitly deny admin functions
'manage_categories' => false,
'manage_options' => false,
)
);
// Grant job_offer capabilities to administrator
$admin_role = get_role( 'administrator' );
if ( $admin_role ) {
$admin_role->add_cap( 'edit_job_offer' );
$admin_role->add_cap( 'read_job_offer' );
$admin_role->add_cap( 'delete_job_offer' );
$admin_role->add_cap( 'edit_job_offers' );
$admin_role->add_cap( 'edit_others_job_offers' );
$admin_role->add_cap( 'publish_job_offers' );
$admin_role->add_cap( 'read_private_job_offers' );
$admin_role->add_cap( 'delete_job_offers' );
$admin_role->add_cap( 'delete_private_job_offers' );
$admin_role->add_cap( 'delete_published_job_offers' );
$admin_role->add_cap( 'delete_others_job_offers' );
$admin_role->add_cap( 'edit_private_job_offers' );
$admin_role->add_cap( 'edit_published_job_offers' );
}
}
/**
* Remove custom roles
* Called on plugin deactivation
*/
public static function remove_roles() {
remove_role( 'ddhh_provider' );
// Remove job_offer capabilities from administrator
$admin_role = get_role( 'administrator' );
if ( $admin_role ) {
$admin_role->remove_cap( 'edit_job_offer' );
$admin_role->remove_cap( 'read_job_offer' );
$admin_role->remove_cap( 'delete_job_offer' );
$admin_role->remove_cap( 'edit_job_offers' );
$admin_role->remove_cap( 'edit_others_job_offers' );
$admin_role->remove_cap( 'publish_job_offers' );
$admin_role->remove_cap( 'read_private_job_offers' );
$admin_role->remove_cap( 'delete_job_offers' );
$admin_role->remove_cap( 'delete_private_job_offers' );
$admin_role->remove_cap( 'delete_published_job_offers' );
$admin_role->remove_cap( 'delete_others_job_offers' );
$admin_role->remove_cap( 'edit_private_job_offers' );
$admin_role->remove_cap( 'edit_published_job_offers' );
}
}
}