Ejemplo n.º 1
0
/**
 * Check if a user can answer a question
 *
 * @param ElggQuestion $question the question that needs answer
 * @param ElggUser     $user     the user askting the question (default: current user)
 *
 * @return bool
 */
function questions_can_answer_question(ElggQuestion $question, ElggUser $user = null)
{
    static $general_experts_only;
    // default to page owner
    if (!$question instanceof ElggQuestion) {
        return false;
    }
    // default to current user
    if (!$user instanceof ElggUser) {
        $user = elgg_get_logged_in_user_entity();
    }
    if (empty($user)) {
        // not logged in
        return false;
    }
    $container = $question->getContainerEntity();
    if (!questions_experts_enabled()) {
        return questions_can_ask_question($container, $user);
    }
    // get plugin setting
    if (!isset($general_experts_only)) {
        $general_experts_only = questions_experts_only_answer();
    }
    $is_expert = questions_is_expert($container, $user);
    // check general setting
    if ($general_experts_only && !$is_expert) {
        return false;
    }
    if (!$container instanceof ElggGroup) {
        return true;
    }
    // check group settings
    $group_experts_only = false;
    if ($container->getPrivateSetting('questions_who_can_answer') === 'experts') {
        $group_experts_only = true;
    }
    if ($group_experts_only && !$is_expert) {
        return false;
    }
    // are you a group member or can you edit the group
    return $container->isMember($user) || $container->canEdit($user->getGUID());
}
Ejemplo n.º 2
0
    $solution = [];
    $solution[] = elgg_echo('questions:settings:general:solution_time');
    $solution[] = elgg_view('input/select', ['name' => 'solution_time', 'value' => $solution_time, 'options' => range(0, 30), 'class' => 'mls']);
    $solution[] = elgg_format_element('div', ['class' => 'elgg-subtext'], elgg_echo('questions:group_settings:solution_time:description'));
    $content .= elgg_format_element('div', [], implode('', $solution));
}
if (questions_experts_enabled()) {
    $expert_options = ['members' => elgg_echo('questions:group_settings:who_can_ask:members'), 'experts' => elgg_echo('questions:group_settings:who_can_ask:experts')];
    $noyes_options = ['no' => elgg_echo('option:no'), 'yes' => elgg_echo('option:yes')];
    // who can ask?
    $who_can_ask = [];
    $who_can_ask[] = elgg_echo('questions:group_settings:who_can_ask');
    $who_can_ask[] = elgg_view('input/select', ['name' => 'who_can_ask', 'value' => $group->getPrivateSetting('questions_who_can_ask'), 'options_values' => $expert_options, 'class' => 'mls']);
    $content .= elgg_format_element('div', [], implode('', $who_can_ask));
    $who_can_answer = [];
    if (!questions_experts_only_answer()) {
        // who can answer
        $who_can_answer[] = elgg_echo('questions:group_settings:who_can_answer');
        $who_can_answer[] = elgg_view('input/select', ['name' => 'who_can_answer', 'value' => $group->getPrivateSetting('questions_who_can_answer'), 'options_values' => $expert_options, 'class' => 'mls']);
    } else {
        $who_can_answer[] = elgg_view('output/longtext', ['value' => elgg_echo('questions:group_settings:who_can_answer:experts_only')]);
    }
    $content .= elgg_format_element('div', [], implode('', $who_can_answer));
    // auto mark answer
    $auto_mark = [];
    $auto_mark[] = elgg_echo('questions:group_settings:auto_mark_correct');
    $auto_mark[] = elgg_view('input/select', ['name' => 'auto_mark_correct', 'value' => $group->getPrivateSetting('questions_auto_mark_correct'), 'options_values' => $noyes_options, 'class' => 'mls']);
    $content .= elgg_format_element('div', [], implode('', $auto_mark));
}
// form footer
$footer = [];