/** * 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()); }
$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 = [];