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>
99 lines
3.0 KiB
PHP
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' );
|
|
}
|
|
}
|
|
}
|