/** * Set erp_hr_manager role for admin user * * @since 0.1 * * @return void */ public function set_role() { $admins = get_users(array('role' => 'administrator')); if ($admins) { foreach ($admins as $user) { $user->add_role(erp_hr_get_manager_role()); } } }
<div class="permission-tab-wrap"> <h3><?php _e('Permission Management', 'wp-erp'); ?> </h3> <form action="" class="permission-form erp-form" method="post"> <?php $is_manager = user_can($employee->id, erp_hr_get_manager_role()) ? 'on' : 'off'; erp_html_form_input(array('label' => __('Manager', 'wp-erp'), 'name' => 'enable_manager', 'type' => 'checkbox', 'tag' => 'div', 'value' => $is_manager, 'help' => __('This Employee is Manager', 'wp-erp'))); ?> <input type="hidden" name="employee_id" value="<?php echo $employee->id; ?> "> <input type="hidden" name="erp-action" id="erp-employee-action" value="erp-hr-employee-permission"> <?php wp_nonce_field('wp-erp-hr-employee-permission-nonce'); ?> <?php submit_button(__('Update Permission', 'wp-erp'), 'primary'); ?> </form> </div>
/** * Employee Permission Management * * @since 0.1 * * @return void */ public function employee_permission() { if (!wp_verify_nonce($_POST['_wpnonce'], 'wp-erp-hr-employee-permission-nonce')) { return; } $hr_manager_role = erp_hr_get_manager_role(); if (!current_user_can($hr_manager_role)) { wp_die(__('Permission Denied!', 'wp-erp')); } $employee_id = isset($_POST['employee_id']) ? intval($_POST['employee_id']) : 0; $enable_manager = isset($_POST['enable_manager']) ? sanitize_text_field($_POST['enable_manager']) : 'off'; if (!in_array($enable_manager, ['on', 'off'])) { return; } $user = get_user_by('id', $employee_id); if ('on' == $enable_manager && !user_can($user, $hr_manager_role)) { $user->add_role($hr_manager_role); } else { if ('off' == $enable_manager && user_can($user, $hr_manager_role)) { $user->remove_role($hr_manager_role); } } }
/** * When a new administrator is created, make him HR Manager by default * * @param int $user_id * * @return void */ function erp_hr_new_admin_as_manager($user_id) { $user = get_user_by('id', $user_id); $role = reset($user->roles); if ('administrator' == $role) { $user->add_role(erp_hr_get_manager_role()); } }