/**
 * @param int $gid
 * @param int $fid
 *
 * @return string
 */
function retrieve_single_permissions_row($gid, $fid)
{
    global $mybb, $lang, $cache, $db;
    $query = $db->simple_select("usergroups", "*", "gid='{$gid}'");
    $usergroup = $db->fetch_array($query);
    $query = $db->simple_select("forums", "*", "fid='{$fid}'");
    $forum_data = $db->fetch_array($query);
    $query = $db->simple_select("forumpermissions", "*", "fid='{$fid}'");
    while ($existing = $db->fetch_array($query)) {
        $existing_permissions[$existing['gid']] = $existing;
    }
    $cached_forum_perms = $cache->read("forumpermissions");
    $field_list = array('canview' => $lang->permissions_canview, 'canpostthreads' => $lang->permissions_canpostthreads, 'canpostreplys' => $lang->permissions_canpostreplys, 'canpostpolls' => $lang->permissions_canpostpolls);
    $field_list2 = array('canview' => $lang->perm_drag_canview, 'canpostthreads' => $lang->perm_drag_canpostthreads, 'canpostreplys' => $lang->perm_drag_canpostreplys, 'canpostpolls' => $lang->perm_drag_canpostpolls);
    $form = new Form('', '', "", 0, "", true);
    $form_container = new FormContainer();
    $perms = array();
    if (is_array($existing_permissions) && $existing_permissions[$usergroup['gid']]) {
        $perms = $existing_permissions[$usergroup['gid']];
        $default_checked = false;
    } elseif (is_array($cached_forum_perms) && $cached_forum_perms[$forum_data['fid']][$usergroup['gid']]) {
        $perms = $cached_forum_perms[$forum_data['fid']][$usergroup['gid']];
        $default_checked = true;
    } else {
        if (is_array($cached_forum_perms) && $cached_forum_perms[$forum_data['pid']][$usergroup['gid']]) {
            $perms = $cached_forum_perms[$forum_data['pid']][$usergroup['gid']];
            $default_checked = true;
        }
    }
    if (!$perms) {
        $perms = $usergroup;
        $default_checked = true;
    }
    foreach ($field_list as $forum_permission => $forum_perm_title) {
        if ($perms[$forum_permission] == 1) {
            $perms_checked[$forum_permission] = 1;
        } else {
            $perms_checked[$forum_permission] = 0;
        }
    }
    $usergroup['title'] = htmlspecialchars_uni($usergroup['title']);
    if ($default_checked == 1) {
        $inherited_text = $lang->inherited_permission;
    } else {
        $inherited_text = $lang->custom_permission;
    }
    $form_container->output_cell("<strong>{$usergroup['title']}</strong> <small style=\"vertical-align: middle;\">({$inherited_text})</small>");
    $field_select = "<div class=\"quick_perm_fields\">\n";
    $field_select .= "<div class=\"enabled\"><div class=\"fields_title\">{$lang->enabled}</div><ul id=\"fields_enabled_{$usergroup['gid']}\">\n";
    foreach ($perms_checked as $perm => $value) {
        if ($value == 1) {
            $field_select .= "<li id=\"field-{$perm}\">{$field_list2[$perm]}</li>";
        }
    }
    $field_select .= "</ul></div>\n";
    $field_select .= "<div class=\"disabled\"><div class=\"fields_title\">{$lang->disabled}</div><ul id=\"fields_disabled_{$usergroup['gid']}\">\n";
    foreach ($perms_checked as $perm => $value) {
        if ($value == 0) {
            $field_select .= "<li id=\"field-{$perm}\">{$field_list2[$perm]}</li>";
        }
    }
    $field_select .= "</ul></div></div>\n";
    $field_select .= $form->generate_hidden_field("fields_" . $usergroup['gid'], @implode(",", @array_keys($perms_checked, 1)), array('id' => 'fields_' . $usergroup['gid']));
    $field_select = str_replace("\n", "", $field_select);
    foreach ($field_list as $forum_permission => $permission_title) {
        $field_options[$forum_permission] = $permission_title;
    }
    $form_container->output_cell($field_select, array('colspan' => 2));
    if (!$default_checked) {
        $form_container->output_cell("<a href=\"index.php?module=forum-management&amp;action=permissions&amp;pid={$perms['pid']}\" onclick=\"MyBB.popupWindow('index.php?module=forum-management&action=permissions&pid={$perms['pid']}&ajax=1', null, true); return false;\">{$lang->edit_permissions}</a>", array("class" => "align_center"));
        $form_container->output_cell("<a href=\"index.php?module=forum-management&amp;action=clear_permission&amp;pid={$perms['pid']}&amp;my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_clear_custom_permission}')\">{$lang->clear_custom_perms}</a>", array("class" => "align_center"));
    } else {
        $form_container->output_cell("<a href=\"index.php?module=forum-management&amp;action=permissions&amp;gid={$usergroup['gid']}&amp;fid={$fid}\"  onclick=\"MyBB.popupWindow('index.php?module=forum-management&action=permissions&gid={$usergroup['gid']}&fid={$fid}&ajax=1', null, true); return false;\">{$lang->set_custom_perms}</a>", array("class" => "align_center", "colspan" => 2));
    }
    $form_container->construct_row();
    return $form_container->output_row_cells(0, true);
}