function bogo_set_accessible_locales($profileuser)
{
    $available_languages = bogo_available_languages('orderby=value');
    $accessible_locales = bogo_get_user_accessible_locales($profileuser->ID);
    if (empty($accessible_locales)) {
        $accessible_locales = array_keys($available_languages);
    } else {
        $accessible_locales = bogo_filter_locales($accessible_locales);
    }
    ?>

<!-- Bogo plugin -->
<tr>
<th scope="row"><?php 
    echo esc_html(__('Locale', 'bogo'));
    ?>
</th>
<td>
<input type="hidden" name="setting_bogo_accessible_locales" value="1" />
<span class="description"><?php 
    echo esc_html(__('This user is allowed to access the following locales:', 'bogo'));
    ?>
</span><br />
<fieldset class="bogo-locale-options">

<?php 
    foreach ($available_languages as $locale => $language) {
        $checked = in_array($locale, $accessible_locales);
        $id_attr = 'bogo_accessible_locale-' . $locale;
        ?>
<label class="bogo-locale-option<?php 
        echo $checked ? ' checked' : '';
        ?>
" for="<?php 
        echo $id_attr;
        ?>
">
<input type="checkbox" id="<?php 
        echo $id_attr;
        ?>
" name="bogo_accessible_locales[]" value="<?php 
        echo esc_attr($locale);
        ?>
"<?php 
        echo $checked ? ' checked="checked"' : '';
        ?>
 /><?php 
        echo esc_html($language);
        ?>
</label>
<?php 
    }
    ?>
</fieldset>
</td>
</tr>

<?php 
}
function bogo_map_meta_cap($caps, $cap, $user_id, $args)
{
    $meta_caps = array('bogo_access_all_locales' => 'manage_options', 'bogo_access_locale' => 'read');
    $meta_caps = apply_filters('bogo_map_meta_cap', $meta_caps);
    $caps = array_diff($caps, array_keys($meta_caps));
    if (isset($meta_caps[$cap])) {
        $caps[] = $meta_caps[$cap];
    }
    if ('bogo_access_locale' == $cap && !user_can($user_id, 'bogo_access_all_locales')) {
        $accessible_locales = bogo_get_user_accessible_locales($user_id);
        if (!empty($accessible_locales)) {
            $accessible_locales = bogo_filter_locales($accessible_locales);
            $locale = $args[0];
            if (!in_array($locale, $accessible_locales)) {
                $caps[] = 'do_not_allow';
            }
        }
    }
    return $caps;
}