Esempio n. 1
0
$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);
        $gmt_offset = (int) $gmt_split[0];
    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' => '');
    }