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

📄 scormlib.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?phpfunction scorm_get_resources($blocks) {    $resources = array();    foreach ($blocks as $block) {        if ($block['name'] == 'RESOURCES') {            foreach ($block['children'] as $resource) {                if ($resource['name'] == 'RESOURCE') {                    $resources[addslashes_js($resource['attrs']['IDENTIFIER'])] = $resource['attrs'];                }            }        }    }    return $resources;}function scorm_get_manifest($blocks,$scoes) {    static $parents = array();    static $resources;    static $manifest;    static $organization;    if (count($blocks) > 0) {        foreach ($blocks as $block) {            switch ($block['name']) {                case 'METADATA':                    if (isset($block['children'])) {                        foreach ($block['children'] as $metadata) {                            if ($metadata['name'] == 'SCHEMAVERSION') {                                if (empty($scoes->version)) {                                    if (isset($metadata['tagData']) && (preg_match("/^(1\.2)$|^(CAM )?(1\.3)$/",$metadata['tagData'],$matches))) {                                        $scoes->version = 'SCORM_'.$matches[count($matches)-1];                                    } else {                                        if (isset($metadata['tagData']) && (preg_match("/^2004 3rd Edition$/",$metadata['tagData'],$matches))) {                                            $scoes->version = 'SCORM_1.3';                                        } else {                                            $scoes->version = 'SCORM_1.2';                                        }                                    }                                }                            }                        }                    }                break;                case 'MANIFEST':                    $manifest = addslashes_js($block['attrs']['IDENTIFIER']);                    $organization = '';                    $resources = array();                    $resources = scorm_get_resources($block['children']);                    $scoes = scorm_get_manifest($block['children'],$scoes);                    if (count($scoes->elements) <= 0) {                        foreach ($resources as $item => $resource) {                            if (!empty($resource['HREF'])) {                                $sco = new stdClass();                                $sco->identifier = $item;                                $sco->title = $item;                                $sco->parent = '/';                                $sco->launch = addslashes_js($resource['HREF']);                                $sco->scormtype = addslashes_js($resource['ADLCP:SCORMTYPE']);                                $scoes->elements[$manifest][$organization][$item] = $sco;                            }                        }                    }                break;                case 'ORGANIZATIONS':                    if (!isset($scoes->defaultorg) && isset($block['attrs']['DEFAULT'])) {                        $scoes->defaultorg = addslashes_js($block['attrs']['DEFAULT']);                    }                    $scoes = scorm_get_manifest($block['children'],$scoes);                break;                case 'ORGANIZATION':                    $identifier = addslashes_js($block['attrs']['IDENTIFIER']);                    $organization = '';                    $scoes->elements[$manifest][$organization][$identifier]->identifier = $identifier;                    $scoes->elements[$manifest][$organization][$identifier]->parent = '/';                    $scoes->elements[$manifest][$organization][$identifier]->launch = '';                    $scoes->elements[$manifest][$organization][$identifier]->scormtype = '';                    $parents = array();                    $parent = new stdClass();                    $parent->identifier = $identifier;                    $parent->organization = $organization;                    array_push($parents, $parent);                    $organization = $identifier;                    $scoes = scorm_get_manifest($block['children'],$scoes);                    array_pop($parents);                break;                case 'ITEM':                    $parent = array_pop($parents);                    array_push($parents, $parent);                    $identifier = addslashes_js($block['attrs']['IDENTIFIER']);                    $scoes->elements[$manifest][$organization][$identifier]->identifier = $identifier;                    $scoes->elements[$manifest][$organization][$identifier]->parent = $parent->identifier;                    if (!isset($block['attrs']['ISVISIBLE'])) {                        $block['attrs']['ISVISIBLE'] = 'true';                    }                    $scoes->elements[$manifest][$organization][$identifier]->isvisible = addslashes_js($block['attrs']['ISVISIBLE']);                    if (!isset($block['attrs']['PARAMETERS'])) {                        $block['attrs']['PARAMETERS'] = '';                    }                    $scoes->elements[$manifest][$organization][$identifier]->parameters = addslashes_js($block['attrs']['PARAMETERS']);                    if (!isset($block['attrs']['IDENTIFIERREF'])) {                        $scoes->elements[$manifest][$organization][$identifier]->launch = '';                        $scoes->elements[$manifest][$organization][$identifier]->scormtype = 'asset';                    } else {                        $idref = addslashes_js($block['attrs']['IDENTIFIERREF']);                        $base = '';                        if (isset($resources[$idref]['XML:BASE'])) {                            $base = $resources[$idref]['XML:BASE'];                        }                        $scoes->elements[$manifest][$organization][$identifier]->launch = addslashes_js($base.$resources[$idref]['HREF']);                        if (empty($resources[$idref]['ADLCP:SCORMTYPE'])) {                            $resources[$idref]['ADLCP:SCORMTYPE'] = 'asset';                        }                        $scoes->elements[$manifest][$organization][$identifier]->scormtype = addslashes_js($resources[$idref]['ADLCP:SCORMTYPE']);                    }                    $parent = new stdClass();                    $parent->identifier = $identifier;                    $parent->organization = $organization;                    array_push($parents, $parent);                    $scoes = scorm_get_manifest($block['children'],$scoes);                    array_pop($parents);                break;                case 'TITLE':                    $parent = array_pop($parents);                    array_push($parents, $parent);                    if (!isset($block['tagData'])) {                        $block['tagData'] = '';                    }                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->title = addslashes_js($block['tagData']);                break;                case 'ADLCP:PREREQUISITES':                    if ($block['attrs']['TYPE'] == 'aicc_script') {                        $parent = array_pop($parents);                        array_push($parents, $parent);                        if (!isset($block['tagData'])) {                            $block['tagData'] = '';                        }                        $scoes->elements[$manifest][$parent->organization][$parent->identifier]->prerequisites = addslashes_js($block['tagData']);                    }                break;                case 'ADLCP:MAXTIMEALLOWED':                    $parent = array_pop($parents);                    array_push($parents, $parent);                    if (!isset($block['tagData'])) {                        $block['tagData'] = '';                    }                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->maxtimeallowed = addslashes_js($block['tagData']);                break;                case 'ADLCP:TIMELIMITACTION':                    $parent = array_pop($parents);                    array_push($parents, $parent);                    if (!isset($block['tagData'])) {                        $block['tagData'] = '';                    }                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->timelimitaction = addslashes_js($block['tagData']);                break;                case 'ADLCP:DATAFROMLMS':                    $parent = array_pop($parents);                    array_push($parents, $parent);                    if (!isset($block['tagData'])) {                        $block['tagData'] = '';                    }                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->datafromlms = addslashes_js($block['tagData']);                break;                case 'ADLCP:MASTERYSCORE':                    $parent = array_pop($parents);                    array_push($parents, $parent);                    if (!isset($block['tagData'])) {                        $block['tagData'] = '';                    }                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->masteryscore = addslashes_js($block['tagData']);                break;                case 'ADLCP:COMPLETIONTHRESHOLD':                    $parent = array_pop($parents);                    array_push($parents, $parent);                    if (!isset($block['tagData'])) {                        $block['tagData'] = '';                    }                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->threshold = addslashes_js($block['tagData']);                break;                case 'ADLNAV:PRESENTATION':                    $parent = array_pop($parents);                    array_push($parents, $parent);                    if (!empty($block['children'])) {                        foreach ($block['children'] as $adlnav) {                            if ($adlnav['name'] == 'ADLNAV:NAVIGATIONINTERFACE') {                                foreach ($adlnav['children'] as $adlnavInterface) {                                    if ($adlnavInterface['name'] == 'ADLNAV:HIDELMSUI') {                                        if ($adlnavInterface['tagData'] == 'continue') {                                            $scoes->elements[$manifest][$parent->organization][$parent->identifier]->hidecontinue = 1;                                        }                                        if ($adlnavInterface['tagData'] == 'previous') {                                            $scoes->elements[$manifest][$parent->organization][$parent->identifier]->hideprevious = 1;                                        }                                        if ($adlnavInterface['tagData'] == 'exit') {                                            $scoes->elements[$manifest][$parent->organization][$parent->identifier]->hideexit = 1;                                        }                                        if ($adlnavInterface['tagData'] == 'exitAll') {                                            $scoes->elements[$manifest][$parent->organization][$parent->identifier]->hideexitall = 1;                                        }                                        if ($adlnavInterface['tagData'] == 'abandon') {                                            $scoes->elements[$manifest][$parent->organization][$parent->identifier]->hideabandon = 1;                                        }                                        if ($adlnavInterface['tagData'] == 'abandonAll') {                                            $scoes->elements[$manifest][$parent->organization][$parent->identifier]->hideabandonall = 1;                                        }                                        if ($adlnavInterface['tagData'] == 'suspendAll') {                                            $scoes->elements[$manifest][$parent->organization][$parent->identifier]->hidesuspendall = 1;                                        }                                    }                                }                            }                        }                    }                break;                case 'IMSSS:SEQUENCING':                    $parent = array_pop($parents);                    array_push($parents, $parent);                    if (!empty($block['children'])) {                        foreach ($block['children'] as $sequencing) {                            if ($sequencing['name']=='IMSSS:CONTROLMODE') {                                if (isset($sequencing['attrs']['CHOICE'])) {                                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->choice = $sequencing['attrs']['CHOICE'] == 'true'?1:0;                                }                                if (isset($sequencing['attrs']['CHOICEEXIT'])) {                                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->choiceexit = $sequencing['attrs']['CHOICEEXIT'] == 'true'?1:0;                                }                                if (isset($sequencing['attrs']['FLOW'])) {                                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->flow = $sequencing['attrs']['FLOW'] == 'true'?1:0;                                }                                if (isset($sequencing['attrs']['FORWARDONLY'])) {                                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->forwardonly = $sequencing['attrs']['FORWARDONLY'] == 'true'?1:0;                                }                                if (isset($sequencing['attrs']['USECURRENTATTEMPTOBJECTINFO'])) {                                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->usecurrentattemptobjectinfo = $sequencing['attrs']['USECURRENTATTEMPTOBJECTINFO'] == 'true'?1:0;                                }                                if (isset($sequencing['attrs']['USECURRENTATTEMPTPROGRESSINFO'])) {                                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->usecurrentattemptprogressinfo = $sequencing['attrs']['USECURRENTATTEMPTPROGRESSINFO'] == 'true'?1:0;                                }                            }                            if ($sequencing['name']=='ADLSEQ:CONSTRAINEDCHOICECONSIDERATIONS') {                                if (isset($sequencing['attrs']['CONSTRAINCHOICE'])) {                                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->constrainChoice = $sequencing['attrs']['CONSTRAINCHOICE'] == 'true'?1:0;                                }                                if (isset($sequencing['attrs']['PREVENTACTIVATION'])) {                                    $scoes->elements[$manifest][$parent->organization][$parent->identifier]->preventactivation = $sequencing['attrs']['PREVENTACTIVATION'] == 'true'?1:0;                                }                            }                            if ($sequencing['name']=='IMSSS:OBJECTIVES') {                                $objectives = array();                                foreach ($sequencing['children'] as $objective) {                                    $objectivedata = new stdClass();                                    $objectivedata->primaryobj = 0;                                    switch ($objective['name']) {                                        case 'IMSSS:PRIMARYOBJECTIVE':                                            $objectivedata->primaryobj = 1;                                        case 'IMSSS:OBJECTIVE':                                            $objectivedata->satisfiedbymeasure = 0;                                            if (isset($objective['attrs']['SATISFIEDBYMEASURE'])) {                                                $objectivedata->satisfiedbymeasure = $objective['attrs']['SATISFIEDBYMEASURE']== 'true'?1:0;

⌨️ 快捷键说明

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