Beispiel #1
0
 /**
  * Creates defined structure of SCOs.
  *
  * @param \DOMNode     $source
  * @param \DOMNodeList $resources
  *
  * @return array of Scorm12Sco
  *
  * @throws InvalidScormArchiveException
  */
 private function parseItemNodes(\DOMNode $source, \DOMNodeList $resources, Scorm12Sco $parentSco = null)
 {
     $item = $source->firstChild;
     $scos = array();
     while (!is_null($item)) {
         if ($item->nodeName === 'item') {
             $sco = new Scorm12Sco();
             $scos[] = $sco;
             $sco->setScoParent($parentSco);
             $this->findAttrParams($sco, $item, $resources);
             $this->findNodeParams($sco, $item->firstChild);
             if ($sco->getIsBlock()) {
                 $scos[] = $this->parseItemNodes($item, $resources, $sco);
             }
         }
         $item = $item->nextSibling;
     }
     return $scos;
 }
 /**
  * Copy given sco and its children.
  *
  * @param Scorm12Sco      $sco
  * @param Scorm12Resource $resource
  * @param Scorm12Sco      $scoParent
  */
 private function copySco(Scorm12Sco $sco, Scorm12Resource $resource, Scorm12Sco $scoParent = null)
 {
     $scoCopy = new Scorm12Sco();
     $scoCopy->setScormResource($resource);
     $scoCopy->setScoParent($scoParent);
     $scoCopy->setEntryUrl($sco->getEntryUrl());
     $scoCopy->setIdentifier($sco->getIdentifier());
     $scoCopy->setIsBlock($sco->getIsBlock());
     $scoCopy->setLaunchData($sco->getLaunchData());
     $scoCopy->setMasteryScore($sco->getMasteryScore());
     $scoCopy->setMaxTimeAllowed($sco->getMaxTimeAllowed());
     $scoCopy->setParameters($sco->getParameters());
     $scoCopy->setPrerequisites($sco->getPrerequisites());
     $scoCopy->setTimeLimitAction($sco->getTimeLimitAction());
     $scoCopy->setTitle($sco->getTitle());
     $scoCopy->setVisible($sco->isVisible());
     $this->om->persist($scoCopy);
     foreach ($sco->getScoChildren() as $scoChild) {
         $this->copySco($scoChild, $resource, $scoCopy);
     }
 }