⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scormlib.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 3 页
字号:
                        }                        if (isset($item->rolluprules)) {                            foreach($item->rolluprules as $rolluprule) {                                $rollup = new stdClass();                                $rollup->scoid =  $id;                                $rollup->childactivityset = $rolluprule->childactivityset;                                $rollup->minimumcount = $rolluprule->minimumcount;                                $rollup->minimumpercent = $rolluprule->minimumpercent;                                $rollup->rollupruleaction = $rolluprule->rollupruleaction;                                $rollup->conditioncombination = $rolluprule->conditioncombination;                                $rollupruleid = insert_record('scorm_seq_rolluprule',$rollup);                                if (isset($rollup->conditions)) {                                    foreach($rollup->conditions as $condition){                                        $cond = new stdClass();                                        $cond->scoid = $rollup->scoid;                                        $cond->rollupruleid = $rollupruleid;                                        $cond->operator = $condition->operator;                                        $cond->cond = $condition->cond;                                        $conditionid = insert_record('scorm_seq_rolluprulecond',$cond);                                    }                                }                            }                        }                        if (isset($item->objectives)) {                            foreach($item->objectives as $objective) {                                $obj = new stdClass();                                $obj->scoid = $id;                                $obj->primaryobj = $objective->primaryobj;                                $obj->satisfiedbumeasure = $objective->satisfiedbymeasure;                                $obj->objectiveid = $objective->objectiveid;                                $obj->minnormalizedmeasure = $objective->minnormalizedmeasure;                                $objectiveid = insert_record('scorm_seq_objective',$obj);                                if (isset($objective->mapinfos)) {//print_object($objective->mapinfos);                                    foreach($objective->mapinfos as $objmapinfo) {                                        $mapinfo = new stdClass();                                        $mapinfo->scoid = $id;                                        $mapinfo->objectiveid = $objectiveid;                                        $mapinfo->targetobjectiveid = $objmapinfo->targetobjectiveid;                                        $mapinfo->readsatisfiedstatus = $objmapinfo->readsatisfiedstatus;                                        $mapinfo->writesatisfiedstatus = $objmapinfo->writesatisfiedstatus;                                        $mapinfo->readnormalizedmeasure = $objmapinfo->readnormalizedmeasure;                                        $mapinfo->writenormalizedmeasure = $objmapinfo->writenormalizedmeasure;                                        $mapinfoid = insert_record('scorm_seq_mapinfo',$mapinfo);                                    }                                }                            }                        }//print_object($item);                        if (($launch == 0) && ((empty($scoes->defaultorg)) || ($scoes->defaultorg == $identifier))) {                            $launch = $id;                        }                    }                }            }            if (!empty($olditems)) {                foreach($olditems as $olditem) {                    delete_records('scorm_scoes','id',$olditem->id);                    delete_records('scorm_scoes_data','scoid',$olditem->id);                    if (isset($olditem->newid)) {                        set_field('scorm_scoes_track', 'scoid', $olditem->newid, 'scoid', $olditem->id);                    }                    delete_records('scorm_scoes_track','scoid',$olditem->id);                    delete_records('scorm_seq_objective','scoid',$olditem->id);                    delete_records('scorm_seq_mapinfo','scoid',$olditem->id);                    delete_records('scorm_seq_ruleconds','scoid',$olditem->id);                    delete_records('scorm_seq_rulecond','scoid',$olditem->id);                    delete_records('scorm_seq_rolluprule','scoid',$olditem->id);                    delete_records('scorm_seq_rolluprulecond','scoid',$olditem->id);                }            }            if (empty($scoes->version)) {                $scoes->version = 'SCORM_1.2';            }            set_field('scorm','version',$scoes->version,'id',$scormid);            $scorm->version = $scoes->version;        }    }    return $launch;}function scorm_optionals_data($item, $standarddata) {    $result = array();    $sequencingdata = array('sequencingrules','rolluprules','objectives');    foreach ($item as $element => $value) {        if (! in_array($element, $standarddata)) {            if (! in_array($element, $sequencingdata)) {                $result[] = $element;            }        }    }    return $result;}function scorm_is_leaf($sco) {    if (get_record('scorm_scoes','scorm',$sco->scorm,'parent',$sco->identifier)) {        return false;    }    return true;}function scorm_get_parent($sco) {    if ($sco->parent != '/') {        if ($parent = get_record('scorm_scoes','scorm',$sco->scorm,'identifier',$sco->parent)) {            return scorm_get_sco($parent->id);        }    }    return null;}function scorm_get_children($sco) {    if ($children = get_records('scorm_scoes','scorm',$sco->scorm,'parent',$sco->identifier)) {//originally this said parent instead of childrean        return $children;    }    return null;}function scorm_get_available_children($sco){    $res = get_record('scorm_scoes_track','scoid',$scoid,'userid',$userid,'element','availablechildren');    if(!$res || $res == null){        return false;    }    else{        return unserialize($res->value);    }}function scorm_get_available_descendent($descend = array(),$sco){    if($sco == null){        return $descend;    }    else{        $avchildren = scorm_get_available_children($sco);        foreach($avchildren as $avchild){            array_push($descend,$avchild);        }        foreach($avchildren as $avchild){            scorm_get_available_descendent($descend,$avchild);        }    }}function scorm_get_siblings($sco) {    if ($siblings = get_records('scorm_scoes','scorm',$sco->scorm,'parent',$sco->parent)) {        unset($siblings[$sco->id]);        if (!empty($siblings)) {            return $siblings;        }    }    return null;}function scorm_get_ancestors($sco) {    if ($sco->parent != '/') {        return array_push(scorm_get_ancestors(scorm_get_parent($sco)));    } else {        return $sco;    }}function scorm_get_preorder($preorder=array(),$sco) {    if ($sco != null) {        array_push($preorder,$sco);        $children = scorm_get_children($sco);        foreach ($children as $child){            scorm_get_preorder($sco);        }    } else {        return $preorder;    }}function scorm_find_common_ancestor($ancestors, $sco) {    $pos = scorm_array_search('identifier',$sco->parent,$ancestors);    if ($sco->parent != '/') {        if ($pos === false) {            return scorm_find_common_ancestor($ancestors,scorm_get_parent($sco));        }    }    return $pos;}/* Usage Grab some XML data, either from a file, URL, etc. however you want. Assume storage in $strYourXML; $objXML = new xml2Array(); $arrOutput = $objXML->parse($strYourXML); print_r($arrOutput); //print it out, or do whatever!*/class xml2Array {   var $arrOutput = array();   var $resParser;   var $strXmlData;   /**   * Convert a utf-8 string to html entities   *   * @param string $str The UTF-8 string   * @return string   */   function utf8_to_entities($str) {       global $CFG;       $entities = '';       $values = array();       $lookingfor = 1;       return $str;   }   /**   * Parse an XML text string and create an array tree that rapresent the XML structure   *   * @param string $strInputXML The XML string   * @return array   */   function parse($strInputXML) {           $this->resParser = xml_parser_create ('UTF-8');           xml_set_object($this->resParser,$this);           xml_set_element_handler($this->resParser, "tagOpen", "tagClosed");           xml_set_character_data_handler($this->resParser, "tagData");           $this->strXmlData = xml_parse($this->resParser,$strInputXML );           if(!$this->strXmlData) {               die(sprintf("XML error: %s at line %d",                           xml_error_string(xml_get_error_code($this->resParser)),                           xml_get_current_line_number($this->resParser)));           }           xml_parser_free($this->resParser);           return $this->arrOutput;   }   function tagOpen($parser, $name, $attrs) {       $tag=array("name"=>$name,"attrs"=>$attrs);       array_push($this->arrOutput,$tag);   }   function tagData($parser, $tagData) {       if(trim($tagData)) {           if(isset($this->arrOutput[count($this->arrOutput)-1]['tagData'])) {               $this->arrOutput[count($this->arrOutput)-1]['tagData'] .= $this->utf8_to_entities($tagData);           } else {               $this->arrOutput[count($this->arrOutput)-1]['tagData'] = $this->utf8_to_entities($tagData);           }       }   }   function tagClosed($parser, $name) {       $this->arrOutput[count($this->arrOutput)-2]['children'][] = $this->arrOutput[count($this->arrOutput)-1];       array_pop($this->arrOutput);   }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -