Exemple #1
0
function todelete_getelementbynameattrib($node, $name, $attribname = "", $attribvalue = "")
{
    /*	soap__dbgOut("+getelementbynameattrib( ".$node->tagName.", $name, $attribname , $attribvalue)");
    	$elem = $node->firstChild;
    	soap__dbgOut(" getelementbynameattrib class ".get_class($elem));
    	while( $elem ) {
    		soap__dbgOut(" getelementbynameattrib new step");
    		$elem->nodeType;
    		soap__dbgOut(" getelementbynameattrib process ".$elem->nodeType);
    		if( ($elem->nodeType == XML_ELEMENT_NODE) && ($elem->nodeName == $name) ) {
    			if( $attribname != "" ) {
    				if( $elem->getAttribute($attribname) == $attribvalue) 
    					break;	// trovato
    			} else 
    				break; // trovato
    		}
    		$nextelem = $elem->nextSibling;	// successivo elemento
    		soap__dbgOut(" getelementbynameattrib ".get_class($nextelem));
    		$elem = $nextelem;
    		soap__dbgOut(" getelementbynameattrib ".get_class($elem));
    	}
    	soap__dbgOut("-getelementbynameattrib");
    	return $elem;*/
    soap__dbgOut("+getelementbynameattrib node=" . print_r($node, true) . ", name={$name}, attribname=" . print_r($attribname, true) . ", attribvalue={$attribvalue}");
    $xpath = new DoceboDOMXPath($node->ownerDocument);
    $result = $xpath->query("*", $node);
    $elem = NULL;
    for ($iResult = 0; $iResult < $result->length; $iResult++) {
        soap__dbgOut(" getelementbynameattrib process:" . $iResult);
        $elem = $result->item($iResult);
        soap__dbgOut(" getelementbynameattrib process:" . print_r($elem, true));
        if ($elem->nodeName == $name) {
            soap__dbgOut(" getelementbynameattrib name ok:" . $elem->nodeName);
            if ($attribname != "") {
                soap__dbgOut(" getelementbynameattrib test for attribute: " . $attribname);
                if ($elem->getAttribute($attribname) == $attribvalue) {
                    soap__dbgOut(" getelementbynameattrib found:" . $elem->nodeName);
                    break;
                    // trovato
                }
            } else {
                soap__dbgOut(" getelementbynameattrib found:" . $elem->nodeName);
                break;
                // trovato
            }
        }
        $elem = NULL;
    }
    return $elem;
    soap__dbgOut("-getelementbynameattrib");
    /*$xpath = new DoceboDOMXPath($node->ownerDocument);
    	$query = "child::".$name;
    	if( $attribname != "" ) {
    		$query .= '[@'.$attribname.' = "'.$attribvalue.'"]';
    	}
    	if( $node->nodeType == XML_ELEMENT_NODE) {
    		$result = $xpath->query($query,$node);
    	} else {
    		$result = $xpath->query($query);
    	}
    
    	if( isset($result->length) && $result->length > 0 ) {
    		$return = $result->item(0);
    		return $return;
    	} 
    	
    	return NULL;*/
}
Exemple #2
0
 function getImportArrFromXml($filename)
 {
     $res = array();
     require_once _base_ . '/lib/lib.domxml.php';
     $xml_doc = new DoceboDOMDocument();
     if (!$xml_doc) {
         return FALSE;
     }
     if ($xml_doc->load($filename)) {
         $xpath = new DoceboDOMXPath($xml_doc);
         $cat_info = array();
         $category_node = $xpath->query('/FAQCATEGORY');
         for ($i = 0; $i < $category_node->length; $i++) {
             $item = $category_node->item($i);
             $elem = $xpath->query('TITLE/text()', $item);
             $elemNode = $elem->item(0);
             $cat_info["title"] = urldecode($elemNode->textContent);
             $item = $category_node->item($i);
             $elem = $xpath->query('DESCRIPTION/text()', $item);
             $elemNode = $elem->item(0);
             $cat_info["description"] = urldecode($elemNode->textContent);
             $cat_items = $xpath->query('CATEGORYITEMS/faq', $item);
             $faq_list = array();
             $arr_id = 0;
             for ($iFaq = 0; $iFaq < $cat_items->length; $iFaq++) {
                 $faq = $cat_items->item($iFaq);
                 $elem = $xpath->query('title/text()', $faq);
                 $elemNode = $elem->item(0);
                 $faq_list[$arr_id]["title"] = urldecode($elemNode->textContent);
                 $faq = $cat_items->item($iFaq);
                 $elem = $xpath->query('question/text()', $faq);
                 $elemNode = $elem->item(0);
                 $faq_list[$arr_id]["question"] = urldecode($elemNode->textContent);
                 $faq = $cat_items->item($iFaq);
                 $elem = $xpath->query('keyword/text()', $faq);
                 $elemNode = $elem->item(0);
                 $faq_list[$arr_id]["keyword"] = urldecode($elemNode->textContent);
                 $faq = $cat_items->item($iFaq);
                 $elem = $xpath->query('answer/text()', $faq);
                 $elemNode = $elem->item(0);
                 $faq_list[$arr_id]["answer"] = urldecode($elemNode->textContent);
                 $arr_id++;
             }
         }
     } else {
         return FALSE;
     }
     $res["cat_info"] = $cat_info;
     $res["faq_list"] = $faq_list;
     return $res;
 }
Exemple #3
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');
}
Exemple #4
0
 function importQuestionFromXml($filename)
 {
     require_once _base_ . '/lib/lib.domxml.php';
     // initialize DOM class
     $xml_doc = new DoceboDOMDocument();
     if (!$xml_doc) {
         return false;
     }
     if (!$xml_doc->load($filename)) {
         return false;
     }
     if (!($xpath = new DoceboDOMXPath($xml_doc))) {
         return false;
     }
     // get all the question in the document
     $NodeList_question = $xpath->query('/question_collection/question');
     $seq = $this->getMaxSequence() + 1;
     $page = $this->_getPageNumber();
     for ($i = 0; $i < $NodeList_question->length; $i++) {
         $quest = $NodeList_question->item($i);
         // read text quest
         $xre_quest_text = $xpath->query('prompt/text()', $quest);
         $node_quest_text = $xre_quest_text->item(0);
         //$node_quest_text->textContent // contains the question
         //insert the new question
         $ins_query = "\r\n\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_testquest \r\n\t\t\t( idTest, idCategory, type_quest, title_quest, difficult, time_assigned, sequence, page ) VALUES \r\n\t\t\t( \t'" . $this->id_test . "', \r\n\t\t\t\t'0', \r\n\t\t\t\t'choice', \r\n\t\t\t\t'" . addslashes($node_quest_text->textContent) . "',\r\n\t\t\t\t'3', \r\n\t\t\t\t'0', \r\n\t\t\t\t'" . ($seq + $i) . "', \r\n\t\t\t\t'" . $page . "' ) ";
         if (!sql_query($ins_query)) {
             return false;
         }
         list($id_quest) = sql_fetch_row(sql_query("SELECT LAST_INSERT_ID()"));
         if (!$id_quest) {
             return false;
         }
         $re = true;
         // find all the answer
         $NodeList_answer = $xpath->query('answers/answer', $quest);
         for ($j = 0; $j < $NodeList_answer->length; $j++) {
             $answer = $NodeList_answer->item($j);
             $is_correct = $answer->getAttribute('is_correct');
             $score_if_correct = $answer->getAttribute('score_if_correct');
             $score_if_error = $answer->getAttribute('score_if_error');
             //$answer->textContent
             $ins_answer_query = "\r\n\t\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_testquestanswer \r\n\t\t\t\t( idQuest, is_correct, answer, comment, score_correct, score_incorrect ) VALUES\r\n\t\t\t\t( \t'" . $id_quest . "', \r\n\t\t\t\t\t'" . ($is_correct == 'true' ? 1 : 0) . "', \r\n\t\t\t\t\t'" . addslashes($answer->textContent) . "', \r\n\t\t\t\t\t'', \r\n\t\t\t\t\t'" . (double) $score_if_correct . "', \r\n\t\t\t\t\t'" . (double) $score_if_error . "') ";
             if (!sql_query($ins_answer_query)) {
                 $re = false;
             }
         }
         echo '-------------------------------<br/><br/>';
     }
     return $re;
 }