Example #1
0
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&amp;op=defpoint&amp;idTest=' . $idTest . '&amp;back_url=' . $url_coded, $lang->def('_BACK')) . '<form method="post" action="index.php?modname=test&amp;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 : '&nbsp;';
            if ($difficult) {
                $content[] = $score_assign[$idQuest] != $_POST['new_score_quest'][$idQuest] ? $score_assign[$idQuest] . '&nbsp;<span class="font_red">*</span>' : $score_assign[$idQuest];
            } else {
                $content[] = '&nbsp;';
            }
        } 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, '') : '&nbsp;';
            $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') . '" />' : '&nbsp;';
        }
        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');
}