Esempio n. 1
0
function getInteractionsTable($id_user, $idtrack)
{
    require_once _base_ . '/lib/lib.domxml.php';
    require_once _base_ . '/lib/lib.table.php';
    $tb = new Table(Get::sett('visu_course'));
    $lang = DoceboLanguage::CreateInstance('organization', 'lms');
    $id_org = Get::req('id_org', DOTY_INT, 0);
    $h_type = array('', '', '');
    $h_content = array($lang->def('_DESCRIPTION'), $lang->def('_TYPE'), $lang->def('_RESULT'));
    $tb->setColsStyle($h_type);
    $tb->addHead($h_content);
    $qry = "SELECT xmldata FROM " . $GLOBALS['prefix_lms'] . "_scorm_tracking WHERE idscorm_tracking={$idtrack} AND idUser={$id_user}";
    $res = sql_query($qry);
    $row = mysql_fetch_array($res);
    $doc = new DoceboDOMDocument();
    $doc->loadXML($row['xmldata']);
    $context = new DoceboDOMXPath($doc);
    $root = $doc->documentElement;
    $temp = $context->query('//interactions');
    $lines = array();
    for ($i = 0; $i < $temp->length; $i++) {
        $arr = array();
        $node =& $temp->item($i);
        //interaction index
        //$arr['index'] = $node->getAttribute('index');
        //get description
        $elem = $context->query('description/text()', $node);
        $elemNode =& $elem->item(0);
        if ($elemNode && isset($elemNode->textContent)) {
            $arr['description'] = $elemNode->textContent;
            //get type
            $elem = $context->query('type/text()', $node);
            $elemNode =& $elem->item(0);
            $arr['type'] = $elemNode->textContent;
            //get result
            $elem = $context->query('result/text()', $node);
            $elemNode =& $elem->item(0);
            $arr['result'] = $elemNode->textContent;
            //get id
            $elem = $context->query('id/text()', $node);
            $elemNode =& $elem->item(0);
            $id = $elemNode->textContent;
            if ($arr['result'] == '1') {
                $arr['result'] = 'true';
            } else {
                $arr['result'] = 'false';
            }
            $lines[$id] = array($arr['description'], $arr['type'], $arr['result']);
        }
    }
    foreach ($lines as $key => $line) {
        $tb->addBody($line);
    }
    //title
    cout(getTitleArea($lang->def('_SCORM_INTERACTIONS_TABLE')), 'content');
    cout('<div class="std_block">', 'content');
    //back button, back to treeview
    $back = getBackUi('index.php?modname=organization&amp;op=scorm_track&amp;id_user='******'&amp;id_org=' . $id_org, $lang->def('_BACK_TO_TRACK'));
    //'index.php?modname=organization&amp;op=history&amp;id_user='******'&amp;id_org='.$org , $lang->def('_BACK_TO_TRACK') );
    //back button, back to treeview
    cout($back, 'content');
    cout($tb->getTable(), 'content');
    cout($back, 'content');
    cout('</div>', 'content');
}
Esempio n. 2
0
$xml_answer = false;
$xml_answer = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : false;
//Test di richiesta
/*$xml_answer =	'<?xml version="1.0" encoding="utf-8"?'.'>'
		.'<ews>'
		.'<errorcode>0</errorcode>'
		.'<errormessage></errormessage>'
		.'<sessions>'
		.'<session sid="1" roomid="1" uid="1039" role="2" date="2008-09-30 11:00:13" duration="3565"/>'
		.'</sessions>'
		.'</ews>';*/
if ($xml_answer === false) {
    aout('<?xml version="1.0" encoding="UTF-8"?><ews><errorcode>1</errorcode><errormessage>No data found</errormessage></ews>');
}
$dom_answer = new DoceboDOMDocument();
$dom_answer->loadXML(trim($xml_answer));
$dlist_code = $dom_answer->getElementsByTagName('errorcode');
$dlist_msg = $dom_answer->getElementsByTagName('errormessage');
$dnode_code = $dlist_code->item(0);
$dnode_msg = $dlist_msg->item(0);
$e_code = $dnode_code->textContent;
$e_msg = $dnode_msg->textContent;
if ($e_code == 0) {
    require_once $GLOBALS['where_scs'] . '/lib/lib.teleskill.php';
    $teleskill = new Teleskill_Management();
    $teleskill->clearRoomLog($roomid);
    $dlist_sessions = $dom_answer->getElementsByTagName('session');
    $dlist_sessions = $dlist_sessions->item(0);
    if ((int) $dlist_sessions->getAttribute('uid') != 0 && $dlist_sessions->getAttribute('uid') !== '') {
        $gmt = date('P', fromDatetimeToTimestamp($dlist_sessions->getAttribute('date')));
        $gmt_split = explode(':', $gmt);
    function updateRoomLog($roomid)
    {
        $xml_answer = false;
        $bw_code = Get::user_acceptlang();
        $request = '<?xml version="1.0" encoding="utf-8"?' . '>
		<ews type="10" lang="' . $bw_code . '">
			<clientcode>' . Get::sett('code_teleskill') . '</clientcode>
			<roomid>' . $roomid . '</roomid>
			<complete>1</complete>
			</ews>';
        $xml_answer = $this->_sendXmlRequest($request);
        if ($xml_answer === false || $xml_answer === '') {
            return array('errorcode' => -1, 'errormessage' => '', 'roomid' => '');
        }
        //Test Answer
        /*$xml_answer =	'<?xml version="1.0" encoding="utf-8"?'.'>'
        		 .'<ews>'
        		.'<errorcode>0</errorcode>'
        		.'<errormessage></errormessage>'
        		.'<sessions>'
        		.'<session sid="1" uid="1039" role="2" date="2008-09-30 11:00:13" duration="3565"/>'
        		.'<session sid="2" uid="1097" role="1" date="2008-09-30 11:05:54" duration="3254"/>'
        		.'<session sid="3" uid="1098" role="1" date="2008-09-30 11:01:18" duration="3148"/>'
        		.'<session sid="4" uid="1099" role="1" date="2008-09-30 11:07:25" duration="3297"/>'
        		.'</sessions>'
        		.'</ews>';*/
        $dom_answer = new DoceboDOMDocument();
        $dom_answer->loadXML(trim($xml_answer));
        $dlist_code = $dom_answer->getElementsByTagName('errorcode');
        $dlist_msg = $dom_answer->getElementsByTagName('errormessage');
        $dnode_code = $dlist_code->item(0);
        $dnode_msg = $dlist_msg->item(0);
        $e_code = $dnode_code->textContent;
        $e_msg = $dnode_msg->textContent;
        if ($e_code == 0) {
            $this->clearRoomLog($roomid);
            $dlist_sessions = $dom_answer->getElementsByTagName('session');
            if ($dlist_sessions->length > 0) {
                $array_element = array();
                for ($i = 0; $i < $dlist_sessions->length; $i++) {
                    $node = $dlist_sessions->item($i);
                    if ((int) $node->getAttribute('uid') != 0) {
                        $gmt = date('P', fromDatetimeToTimestamp($node->getAttribute('date')));
                        $gmt_split = explode(':', $gmt);
                        $gmt_offset = (int) $gmt_split[0];
                        if (isset($array_element[$node->getAttribute('uid')])) {
                            $array_element[$node->getAttribute('uid')]['duration'] += $node->getAttribute('duration');
                            $array_element[$node->getAttribute('uid')]['role'] = $node->getAttribute('role');
                            $array_element[$node->getAttribute('uid')]['access']++;
                        } else {
                            $array_element[$node->getAttribute('uid')]['role'] = $node->getAttribute('role');
                            $array_element[$node->getAttribute('uid')]['date'] = date('Y-m-d H:i:s', fromDatetimeToTimestamp($node->getAttribute('date')) + $gmt_offset * 3600);
                            $array_element[$node->getAttribute('uid')]['duration'] = $node->getAttribute('duration');
                            $array_element[$node->getAttribute('uid')]['access'] = 1;
                        }
                    }
                }
                $query = "INSERT INTO " . $GLOBALS['prefix_scs'] . "_teleskill_log (roomid, idUser, role, date, duration, access)" . " VALUES";
                $first = true;
                foreach ($array_element as $id_user => $values) {
                    if (!$first) {
                        $query .= ", ";
                    } else {
                        $first = false;
                    }
                    $query .= " ('" . $roomid . "',\r\n\t\t\t\t\t\t\t\t'" . (int) $id_user . "',\r\n\t\t\t\t\t\t\t\t'" . $values['role'] . "',\r\n\t\t\t\t\t\t\t\t'" . $values['date'] . "',\r\n\t\t\t\t\t\t\t\t'" . $values['duration'] . "',\r\n\t\t\t\t\t\t\t\t'" . $values['access'] . "')";
                }
                $result = sql_query($query);
                return $result;
            }
            return true;
        }
        return array('errorcode' => $e_code, 'errormessage' => $e_msg, 'roomid' => '');
    }