Exemple #1
0
    /**
     * Custom roles form.
     *
     * @param type $roles
     * @return string
     */
    public static function wpcf_access_admin_set_custom_roles_level_form($roles, $enabled = true)
    {
        $levels = Access_Helper::wpcf_access_role_to_level_map();
        $builtin_roles = array();
        $default_roles = Access_Helper::wpcf_get_default_roles();
        $custom_roles = array();
        $output = '';
        foreach ($roles as $role => $details) {
            if (!in_array($role, $default_roles)) {
                $compare = 'init';
                foreach ($details['capabilities'] as $capability => $true) {
                    if (strpos($capability, 'level_') !== false && $true) {
                        $current_level = intval(substr($capability, 6));
                        if ($compare === 'init' || $current_level > intval($compare)) {
                            $compare = $current_level;
                        }
                    }
                }
                $level = $compare !== 'init' ? $compare : 'not_set';
                $custom_roles[$level][$role] = $details;
                //$custom_roles[$level][$role]['name'] = taccess_t($details['name'], $details['name']);
                $custom_roles[$level][$role]['level'] = $compare !== 'init' ? $compare : 'not_set';
            } else {
                if (isset($levels[$role])) {
                    $level = intval(substr($levels[$role], 6));
                    $builtin_roles[$level][$role] = $details;
                    $builtin_roles[$level][$role]['name'] = translate_user_role($details['name']);
                    $builtin_roles[$level][$role]['level'] = $level;
                }
            }
        }
        if (empty($custom_roles)) {
            return '<div id="wpcf-access-custom-roles-wrapper">' . __('No custom roles defined', 'wpcf-access') . '</div>';
        }
        $output .= '<div id="wpcf-access-custom-roles-wrapper">';
        $output .= '<p>' . __('The user level determines which actions can be performed by each user in the WordPress admin.', 'wpcf-access') . '</p>';
        $output .= '<div id="wpcf-access-custom-roles-table-wrapper">';
        $output .= '<table class="wpcf-access-custom-roles-table"><tbody>';
        for ($index = 10; $index >= 0; $index--) {
            $level_empty = true;
            $row = '<tr>
					<td>
						<div class="wpcf-access-roles-level">' . sprintf(__('Level %d', 'wpcf-access'), $index) . '</div>
					</td>
					<td>';
            if (isset($builtin_roles[$index])) {
                $level_empty = false;
                foreach ($builtin_roles[$index] as $role => $details) {
                    $row .= '<div class="wpcf-access-roles wpcf-access-roles-builtin">';
                    $row .= '<span>' . $details['name'] . '</span>';
                    $row .= '<span>: : <a href="#" class="wpcf-access-view-caps" data-role="' . sanitize_title($role) . '">' . __('View permissions', 'wpcf-access') . '</a></span>';
                    $row .= '</div>';
                }
            }
            if (isset($custom_roles[$index])) {
                $level_empty = false;
                foreach ($custom_roles[$index] as $role => $details) {
                    $dropdown = '<div class="wpcf-access-custom-roles-select-wrapper js-access-custom-roles-selection">' . '<select name="roles[' . $role . ']" class="wpcf-access-custom-roles-select">';
                    for ($index2 = 10; $index2 > -1; $index2--) {
                        $dropdown .= '<option value="' . $index2 . '"';
                        if ($index == $index2) {
                            $dropdown .= ' selected="selected"';
                        }
                        if (!$enabled) {
                            $dropdown .= ' disabled="disabled"';
                        }
                        $dropdown .= '>' . sprintf(__('Level %d', 'wpcf-access'), $index2);
                        $dropdown .= '</option>';
                    }
                    $dropdown .= '</select>';
                    $dropdown .= '<div class="button-group">
								<button ' . 'class="wpcf-access-change-level-cancel button button-secondary">' . __('Cancel') . '</button>
								<button ' . 'class="wpcf-access-change-level-apply button button-primary" data-message="' . __('By changing the level, you will reset the capabilities. Are you sure you want to do this?', 'wpcf-access') . '">' . __('Apply', 'wpcf-access') . '</button>
							</div>' . '</div>';
                    $row .= '<div class="wpcf-access-roles wpcf-access-roles-custom">
							<span>' . taccess_t($details['name'], $details['name']) . '</span> ';
                    if (isset($details['capabilities']['wpcf_access_role']) || defined('WP_ACCESS_ADVANCED') && WP_ACCESS_ADVANCED == true) {
                        $row .= '<span>: : <a href="javascript:;" class="wpcf-access-change-level">' . __('Change level', 'wpcf-access') . '</a></span>';
                        $row .= $dropdown;
                        //Change Caps link
                        $row .= ' <span>: : <a href="#" class="wpcf-access-change-caps" data-role="' . sanitize_title($role) . '">' . __('Change permissions', 'wpcf-access') . '</a></span> ';
                        $row .= ' <span>: : <a ';
                        if ($enabled) {
                            $row .= 'href="#" data-role="' . sanitize_title($role) . '" class="wpcf-access-delete-role js-wpcf-access-delete-role"';
                        } else {
                            $row .= 'href="javascript:;"';
                        }
                        $row .= '>' . __('Delete role', 'wpcf-access') . '</a></span> ';
                    } else {
                        $row .= ' <span>: : <a href="#" class="wpcf-access-view-caps" data-role="' . sanitize_title($role) . '">' . __('View permissions', 'wpcf-access') . '</a></span> ';
                    }
                    $row .= '</div>';
                }
            }
            $row .= '</td></tr>';
            if (!$level_empty) {
                $output .= $row;
            }
        }
        if (isset($custom_roles['not_set'])) {
            $output .= '<tr><td><div class="wpcf-access-roles-level">' . __('Undefined', 'wpcf-access') . '</div></td><td>';
            foreach ($custom_roles['not_set'] as $role => $details) {
                $dropdown = '<div class="wpcf-access-custom-roles-select-wrapper js-access-custom-roles-selection">' . '<select name="roles[' . $role . ']" class="wpcf-access-custom-roles-select">';
                for ($index2 = 10; $index2 >= 0; $index2--) {
                    $dropdown .= '<option value="' . $index2 . '"';
                    if ($index2 == 1) {
                        $dropdown .= ' selected="selected"';
                    }
                    if (!$enabled) {
                        $dropdown .= ' disabled="disabled"';
                    }
                    $dropdown .= '>' . sprintf(__('Level %d', 'wpcf-access'), $index2) . '</option>';
                }
                $dropdown .= '</select>
							<button class="wpcf-access-change-level-apply button-primary">' . __('Apply', 'wpcf-access') . '</button>
							<button class="wpcf-access-change-level-cancel button-secondary">' . __('Cancel') . '</button>' . '</div>';
                $output .= '<div class="wpcf-access-roles wpcf-access-roles-custom"><span>' . $details['name'] . '</span>' . ' <span>: : <a href="javascript:;"';
                if ($enabled) {
                    $output .= ' class="wpcf-access-change-level"';
                }
                $output .= '>' . __('Change level', 'wpcf-access') . '</a></span>' . '';
                if ($enabled) {
                    $output .= $dropdown;
                }
                $output .= ' <span>: : <a ';
                if ($enabled) {
                    $output .= 'href="#" data-role="' . $role . '" class="wpcf-access-delete-role js-wpcf-access-delete-role"';
                } else {
                    $output .= 'href="javascript:;"';
                }
                $output .= '>' . __('Delete role', 'wpcf-access') . '</a></span>';
            }
            $output .= '</div></td></tr>';
        }
        $output .= '</tbody></table>';
        $output .= '</div>';
        $output .= '</div>';
        return $output;
    }