You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							101 lines
						
					
					
						
							4.8 KiB
						
					
					
				
			
		
		
	
	
							101 lines
						
					
					
						
							4.8 KiB
						
					
					
				<?php
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
/**
 | 
						|
 * Container for the scormMetadata class, setup to hold information about the <metadata> element in imsmanifest files.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * scormMetadata class, handling each <metadata> element found in an imsmanifest file.
 | 
						|
 */
 | 
						|
class scormMetadata
 | 
						|
{
 | 
						|
    public $lom = '';
 | 
						|
    public $schema = '';
 | 
						|
    public $schemaversion = '';
 | 
						|
    public $location = '';
 | 
						|
    public $text = '';
 | 
						|
    public $attribs = [];
 | 
						|
 | 
						|
    /**
 | 
						|
     * Class constructor. Works in two different ways defined by the first element, being 'db' or 'manifest'.
 | 
						|
     * If 'db', then it is built using the information available in the Chamilo database. If 'manifest', then it
 | 
						|
     * is built using the element given as a parameter, expecting it to be a <metadata> element pointer from the
 | 
						|
     * DOM parser.
 | 
						|
     *
 | 
						|
     * @param	string	Type of creation required. Can be 'db' or 'manifest' (default)
 | 
						|
     * @param	mixed	Depending on the type, can be the DB ID of the learnpath item or
 | 
						|
     * the pointer to the <metadata> element in the imsmanifest.xml file
 | 
						|
     */
 | 
						|
    public function __construct($type, &$element)
 | 
						|
    {
 | 
						|
        if (isset($element)) {
 | 
						|
            // Parsing using PHP5 DOMXML methods.
 | 
						|
            switch ($type) {
 | 
						|
                case 'db':
 | 
						|
                    // TODO: Implement this way of metadata object creation.
 | 
						|
                    break;
 | 
						|
                    //break;
 | 
						|
                case 'manifest': // Do the same as the default.
 | 
						|
                    $children = $element->childNodes;
 | 
						|
                    foreach ($children as $child) {
 | 
						|
                        switch ($child->nodeType) {
 | 
						|
                            case XML_ELEMENT_NODE:
 | 
						|
                                // Could be 'lom', 'schema', 'schemaversion' or 'location'.
 | 
						|
                                switch ($child->tagName) {
 | 
						|
                                    case 'lom':
 | 
						|
                                        $childchildren = $child->childNodes;
 | 
						|
                                        foreach ($childchildren as $childchild) {
 | 
						|
                                            $this->lom = $childchild->nodeValue;
 | 
						|
                                        }
 | 
						|
                                        break;
 | 
						|
                                    case 'schema':
 | 
						|
                                        $childchildren = $child->childNodes;
 | 
						|
                                        foreach ($childchildren as $childchild) {
 | 
						|
                                            // There is generally only one child here.
 | 
						|
                                            $this->schema = $childchild->nodeValue;
 | 
						|
                                        }
 | 
						|
                                        break;
 | 
						|
                                    case 'schemaversion':
 | 
						|
                                        $childchildren = $child->childNodes;
 | 
						|
                                        foreach ($childchildren as $childchild) {
 | 
						|
                                            // There is generally only one child here.
 | 
						|
                                            $this->schemaversion = $childchild->nodeValue;
 | 
						|
                                        }
 | 
						|
                                        break;
 | 
						|
                                    case 'location':
 | 
						|
                                        $childchildren = $child->childNodes;
 | 
						|
                                        foreach ($childchildren as $childchild) {
 | 
						|
                                            // There is generally only one child here.
 | 
						|
                                            $this->location = $childchild->nodeValue;
 | 
						|
                                        }
 | 
						|
                                        break;
 | 
						|
                                }
 | 
						|
                                break;
 | 
						|
                            case XML_TEXT_NODE:
 | 
						|
                                if ('' != trim($child->textContent)) {
 | 
						|
                                    if (count(1 == $children)) {
 | 
						|
                                        // If this is the only child at this level and it is a content... save differently.
 | 
						|
                                        $this->text = $child->textContent;
 | 
						|
                                    } else {
 | 
						|
                                        $this->text[$element->tagName] = $child->textContent;
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                                break;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    $attributes = $element->attributes;
 | 
						|
                    //$keep_href = '';
 | 
						|
                    if (is_array($attributes)) {
 | 
						|
                        foreach ($attributes as $attrib) {
 | 
						|
                            if ('' != trim($attrib->value)) {
 | 
						|
                                $this->attribs[$attrib->name] = $attrib->value;
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                //break;
 | 
						|
            }
 | 
						|
            // End parsing using PHP5 DOMXML methods.
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 |