Esempio n. 1
0
/**
 * Maps HR capabilities to employee or HR manager
 *
 * @param array $caps Capabilities for meta capability
 * @param string $cap Capability name
 * @param int $user_id User id
 * @param mixed $args Arguments
 *
 * @return array Actual capabilities for meta capability
 */
function erp_hr_map_meta_caps($caps = array(), $cap = '', $user_id = 0, $args = array())
{
    // What capability is being checked?
    switch ($cap) {
        case 'erp_view_employee':
        case 'erp_edit_employee':
            $employee_id = isset($args[0]) ? $args[0] : false;
            if ($user_id == $employee_id) {
                $caps = [$cap];
            } else {
                $hr_manager_role = erp_hr_get_manager_role();
                // HR manager can read any employee
                if (user_can($user_id, $hr_manager_role)) {
                    $caps = array($hr_manager_role);
                } else {
                    $caps = ['do_not_allow'];
                }
            }
            break;
        case 'erp_create_review':
            $employee_id = isset($args[0]) ? $args[0] : false;
            $employee = new \WeDevs\ERP\HRM\Employee($employee_id);
            if ($employee->get_reporting_to() && $employee->get_reporting_to()->ID == $user_id) {
                $caps = ['employee'];
            } else {
                $caps = [$cap];
            }
            break;
    }
    return apply_filters('erp_hr_map_meta_caps', $caps, $cap, $user_id, $args);
}