function modassignpoint() { checkPerm('view', false, 'storage'); $lang =& DoceboLanguage::createInstance('test'); require_once _base_ . '/lib/lib.table.php'; require_once _base_ . '/lib/lib.form.php'; $idTest = importVar('idTest', true, 0); $back_url = urldecode(importVar('back_url')); $url_coded = htmlentities(urlencode($back_url)); //jump back if (isset($_POST['back_to_home'])) { Util::jump_to('index.php?modname=test&op=modtestgui&idTest=' . $idTest . '&back_url=' . $url_coded); } //save new score ------------------------------------------------ if (isset($_POST['saveandexit'])) { $query_question = "\r\n\t\tSELECT q.idQuest, q.type_quest, t.type_file, t.type_class \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_testquest AS q JOIN " . $GLOBALS['prefix_lms'] . "_quest_type AS t \r\n\t\tWHERE q.idTest = '" . (int) $idTest . "' AND q.type_quest = t.type_quest"; $query_question .= " ORDER BY q.sequence"; $re_quest = sql_query($query_question); $score_assign = array(); while (list($idQuest, $type_quest, $type_file, $type_class) = sql_fetch_row($re_quest)) { sql_query("\r\n\t\t\tUPDATE " . $GLOBALS['prefix_lms'] . "_testquest \r\n\t\t\tSET difficult = '" . (int) $_POST['new_difficult_quest'][$idQuest] . "' \r\n\t\t\tWHERE idTest = '" . $idTest . "' AND idQuest = '" . (int) $idQuest . "'"); require_once dirname(__FILE__) . '/../question/' . $type_file; $quest_obj = eval("return new {$type_class}( {$idQuest} );"); $score_assign[$idQuest] = $quest_obj->setMaxScore($_POST['new_score_quest'][$idQuest]); } } list($test_title) = sql_fetch_row(sql_query("\r\n\tSELECT title \r\n\tFROM " . $GLOBALS['prefix_lms'] . "_test \r\n\tWHERE idTest = '" . $idTest . "'")); list($tot_quest, $tot_difficult) = sql_fetch_row(sql_query("\r\n\tSELECT COUNT(*), SUM(difficult) \r\n\tFROM " . $GLOBALS['prefix_lms'] . "_testquest \r\n\tWHERE idTest = '{$idTest}' AND type_quest <> 'break_page' AND type_quest <> 'title'")); $query_question = "\r\n\tSELECT q.idQuest, q.type_quest, t.type_file, t.type_class, q.title_quest, q.difficult \r\n\tFROM " . $GLOBALS['prefix_lms'] . "_testquest AS q JOIN " . $GLOBALS['prefix_lms'] . "_quest_type AS t \r\n\tWHERE q.idTest = '" . (int) $idTest . "' AND q.type_quest = t.type_quest"; $query_question .= " ORDER BY q.sequence"; $re_quest = sql_query($query_question); $GLOBALS['page']->add(getTitleArea($lang->def('_TEST_SECTION'), 'test') . '<div class="std_block">' . getBackUi('index.php?modname=test&op=defpoint&idTest=' . $idTest . '&back_url=' . $url_coded, $lang->def('_BACK')) . '<form method="post" action="index.php?modname=test&op=modassignpoint">' . '<input type="hidden" id="authentic_request_test" name="authentic_request" value="' . Util::getSignature() . '" />' . '<fieldset class="fieldset_std">' . '<legend>' . $lang->def('_TEST_TM2_CAPTIONSETTIME') . '</legend>' . '<input type="hidden" name="idTest" value="' . $idTest . '" />' . '<input type="hidden" name="back_url" value="' . $url_coded . '" />', 'content'); //table header--------------------------------------------------- $tab_quest = new Table(0, $lang->def('_TEST_SUMMARY'), $lang->def('_TEST_SUMMARY')); $tab_quest->setColsStyle(array('image', 'image', '', 'image', 'image')); $tab_quest->addHead(array($lang->def('_TEST_QUEST_ORDER'), $lang->def('_TYPE'), $lang->def('_QUESTION'), $lang->def('_DIFFICULTY'), $lang->def('_SCORE'))); $i = 1; $effective_tot_score = $effective_difficult = 0; //table body-------------------------------------------------------- while (list($idQuest, $type_quest, $type_file, $type_class, $title_quest, $difficult) = sql_fetch_row($re_quest)) { require_once dirname(__FILE__) . '/../question/' . $type_file; $quest_obj = eval("return new {$type_class}( {$idQuest} );"); if (isset($_POST['new_score_quest'][$idQuest])) { //loading new time form previous page $difficult = $_POST['new_difficult_quest'][$idQuest]; $quest_score = $quest_obj->getRealMaxScore($_POST['new_score_quest'][$idQuest], true); } elseif (isset($_POST['point_assignement'])) { //calculate new time from deftime page switch ($_POST['point_assignement']) { case "0": $quest_score = $quest_obj->getRealMaxScore(round(round($_POST['new_assigned_score'] / $tot_difficult, 2) * $difficult), 2); //$quest_score = (( $_POST['new_assigned_score'] / $tot_difficult ) * $difficult ), 2; break; case "1": $quest_score = $quest_obj->getRealMaxScore(round($_POST['new_assigned_score'] / $tot_quest, 2)); //$quest_score = round(( $_POST['new_assigned_score'] / $tot_quest ), 2); break; case "2": $quest_score = $quest_obj->getMaxScore(); break; } } $content = array($i++, $lang->def('_QUEST_ACRN_' . strtoupper($type_quest)), $title_quest); if (isset($score_assign)) { $content[] = $difficult ? $difficult : ' '; if ($difficult) { $content[] = $score_assign[$idQuest] != $_POST['new_score_quest'][$idQuest] ? $score_assign[$idQuest] . ' <span class="font_red">*</span>' : $score_assign[$idQuest]; } else { $content[] = ' '; } } else { $content[] = $difficult ? '<label for="new_difficult_quest_' . $idQuest . '">' . $lang->def('_QUEST_TM2_SETDIFFICULT') . '</label>' . Form::getInputDropdown('', 'new_difficult_quest_' . $idQuest, 'new_difficult_quest[' . $idQuest . ']', array(1 => 1, 2, 3, 4, 5), $difficult, '') : ' '; $content[] = $difficult ? '<label for="new_difficult_quest_' . $idQuest . '">' . $lang->def('_QUEST_TM2_SETSCORE') . '</label>' . '<input type="text" id="new_score_quest_' . $idQuest . '" name="new_score_quest[' . $idQuest . ']" value="' . $quest_score . '" size="5" maxlength="200" alt="' . $lang->def('_QUEST_TM2_SETSCORE') . '" />' : ' '; } if ($difficult != 0) { $effective_difficult += $difficult; if (isset($score_assign)) { $effective_tot_score = round($effective_tot_score + $score_assign[$idQuest], 2); } else { $effective_tot_score = round($effective_tot_score + $quest_score, 2); } } $tab_quest->addBody($content); } $tab_quest->addBodyCustom('<tr class="line-top-bordered">' . '<td colspan="3" class="align_right">' . $lang->def('TOTAL') . '</td>' . '<td class="align_center">' . $effective_difficult . '</td>' . '<td class="align_center">' . $effective_tot_score . '</td>' . '</tr>'); $GLOBALS['page']->add($tab_quest->getTable(), 'content'); //command for this page--------------------------------------------- if (isset($_POST['new_assigned_score'])) { $previous_score = $_POST['new_assigned_score']; } else { $previous_score = $_POST['previous_score']; } $score_difference = round($effective_tot_score - $previous_score, 2); if ($score_difference < 0) { $score_difference = '<strong class="font_red">' . $score_difference . '<strong>'; } else { $score_difference = '<strong>' . $score_difference . '<strong>'; } $GLOBALS['page']->add('</fieldset>', 'content'); if (!isset($score_assign)) { $GLOBALS['page']->add('<div class="set_time_row">' . Form::getHidden('previous_score', 'previous_score', $effective_tot_score) . str_replace('[score_difference]', $score_difference, $lang->def('_QUEST_TM2_SCORE_DIFFERENCE_FROM_PREVIOUS')) . Form::getButton('setpoint', 'setpoint', $lang->def('_PREVIEW'), 'button_nowh') . '</div>' . Form::openButtonSpace() . Form::getButton('saveandexit', 'saveandexit', $lang->def('_SAVE'), 'button') . Form::getButton('back_to_home', 'back_to_home', $lang->def('_UNDO'), 'button') . Form::closeButtonSpace() . '</form>', 'content'); } else { $GLOBALS['page']->add('<div class="set_time_row">' . Form::getHidden('previous_score', 'previous_score', $effective_tot_score) . str_replace('[score_difference]', $score_difference, $lang->def('_QUEST_TM2_SCORE_DIFFERENCE_FROM_PREVIOUS')) . '</div>' . Form::openButtonSpace() . Form::getHidden('point_manual', 'point_assignement', 2) . Form::getButton('setpoint', 'setpoint', $lang->def('_TEST_BACK_TO_SETTIME'), 'button') . Form::getButton('back_to_home', 'back_to_home', $lang->def('_SAVE'), 'button') . Form::closeButtonSpace(), 'content'); } $GLOBALS['page']->add('</div>', 'content'); }