protected function getSubcategoryTitle($category, $subcategory)
 {
     $subcategories = $this->getSubcategories();
     if (isset($subcategories[$category]) and isset($subcategories[$category][$subcategory])) {
         return CMA_Settings::__($subcategories[$category][$subcategory]);
     } else {
         return CMA_Settings::__($subcategory);
     }
 }
 /**
  * Create an HTML select box.
  * 
  * @param string $name
  * @param array $options
  * @param string $current Value to select.
  * @return string
  */
 public static function getSelectBox($name, array $options, $current = null)
 {
     $content = '';
     foreach ($options as $value => $label) {
         $content .= sprintf('<option value="%s"%s>%s</option>', esc_attr($value), $current == $value ? ' selected="selected"' : '', esc_html(CMA_Settings::__($label)));
     }
     return sprintf('<select name="%s">%s</select>', esc_attr($name), $content);
 }
$options = '';
foreach ($roles as $roleName => $roleInfo) {
    $options .= sprintf('<option value="%s"%s>%s</option>', esc_attr($roleName), in_array($roleName, $categoryRoles) ? ' selected="selected"' : '', esc_html($roleName));
}
$label = CMA_Settings::__('Restrict access to chosen roles');
$content = <<<HTML
\t<fieldset class="cma-access-restriction-enable">
\t\t<label><input type="radio" name="cma_roles_enable" value="0"%s> %s</label>
\t\t<label><input type="radio" name="cma_roles_enable" value="1"%s> %s</label>
\t</fieldset>
\t<div class="roles">
\t\t<select name="cma_roles[]" multiple="multiple" style="min-width:200px">%s</select>
\t\t<p class="description">%s</p>
\t</div>
HTML;
printf($template, $label, sprintf($content, checked(0, intval(!empty($categoryRoles)), false), CMA_Settings::__('No'), checked(1, intval(!empty($categoryRoles)), false), CMA_Settings::__('Yes'), $options, CMA_Settings::__('Choose roles which will have access to the category. If no roles selected, then every user can view it.')));
?>

<style type="text/css">
.cma-access-restriction-enable input {width: auto !important;;}
</style>

<script type="text/javascript">
jQuery(function($) {

	function rolesVisible(obj) {
		if (obj.val() == '1') {
			obj.parents('.form-field').find('.roles').show();
		} else {
			obj.parents('.form-field').find('.roles').hide();
		}
 protected function renderMultiCheckboxItem($name, $value, $label, $currentValue = null)
 {
     if (is_null($currentValue)) {
         $currentValue = CMA_Settings::getOption($name);
     }
     if (!is_array($currentValue)) {
         $currentValue = array();
     }
     return sprintf('<div><label><input type="checkbox" name="%s[]" value="%s"%s /> %s</label></div>', esc_attr($name), esc_attr($value), in_array($value, $currentValue) ? ' checked="checked"' : '', esc_html(CMA_Settings::__($label)));
 }
 public static function adminCommentRowActionsFilter($actions, $comment)
 {
     if ($comment->comment_type == CMA_Answer::COMMENT_TYPE and $answer = CMA_Answer::getById($comment->comment_ID)) {
         if ($answer->canUnmarkSpam()) {
             $url = sprintf('./?page=%s&answer_id=%d&nonce=%s&backlink=%s', urlencode(self::ADMIN_UNMARK_SPAM), $answer->getId(), urlencode(wp_create_nonce(self::ADMIN_UNMARK_SPAM)), urlencode(base64_encode($_SERVER['REQUEST_URI'])));
             $actions['unmark_cma_spam'] = sprintf('<a href="%s" title="%s">%s</a>', esc_attr($url), esc_attr(CMA_Settings::__('Unmark this answer as possibly spam.')), esc_html(CMA_Settings::__('Unmark spam')));
         }
         $page = CMA_BaseController::ADMIN_PRIVATE_ANSWER;
         $url = sprintf('./?page=%s&%s=%d&nonce=%s&private=%d&backlink=%s', urlencode($page), 'answer_id', urlencode($answer->getId()), urlencode(wp_create_nonce($page)), intval(!$answer->isPrivate()), urlencode(base64_encode($_SERVER['REQUEST_URI'])));
         $actions['private_answer'] = sprintf('<a href="%s" title="%s">%s</a>', esc_attr($url), esc_attr($answer->isPrivate() ? CMA_Settings::__('Show private answer to all users.') : CMA_Settings::__('Make answer available only for the question author.')), esc_html($answer->isPrivate() ? CMA_Settings::__('Unmark as private') : CMA_Settings::__('Mark as private')));
     }
     return $actions;
 }
 public static function registerAdminColumns($columns)
 {
     $updatedSortUrl = add_query_arg(array('orderby' => 'updated', 'order' => (isset($_GET['order']) and $_GET['order'] == 'asc') ? 'desc' : 'asc'), $_SERVER['REQUEST_URI']);
     $columns['modified'] = 'Updated';
     $columns['author'] = CMA_Settings::__('Author');
     $columns['views'] = CMA_Labels::getLocalized('views_col');
     $columns['status'] = CMA_Labels::getLocalized('status_col');
     $columns['comments'] = CMA_Labels::getLocalized('Answers');
     return $columns;
 }