Esempio n. 1
0
 /**
  * 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);
     }
 }
Esempio n. 2
0
 /**
  * @EXT\Route(
  *     "/scorm/12/render/sco/{scoId}",
  *     name = "claro_render_scorm_12_sco"
  * )
  * @EXT\ParamConverter(
  *      "scorm12Sco",
  *      class="ClarolineScormBundle:Scorm12Sco",
  *      options={"id" = "scoId", "strictId" = true}
  * )
  * @EXT\Template("ClarolineScormBundle::scorm12MenuSco.html.twig")
  *
  * @param Scorm12Sco $scorm12Sco
  *
  * @return Response
  */
 public function renderScorm12ScoAction(Scorm12Sco $scorm12Sco)
 {
     $user = $this->tokenStorage->getToken()->getUser();
     $scorm = $scorm12Sco->getScormResource();
     $canEdit = $this->hasScorm12Right($scorm, 'EDIT');
     $this->checkAccess('OPEN', $scorm);
     $isAnon = $user === 'anon.';
     $scos = $scorm->getScos();
     $entryUrl = $scorm12Sco->getEntryUrl();
     if (is_string($entryUrl) && preg_match('/^http/', $entryUrl)) {
         $scormPath = $entryUrl . $scorm12Sco->getParameters();
     } else {
         $scormPath = 'uploads/scormresources/' . $scorm->getHashName() . DIRECTORY_SEPARATOR . $scorm12Sco->getEntryUrl() . $scorm12Sco->getParameters();
     }
     $rootScos = [];
     foreach ($scos as $sco) {
         if (is_null($sco->getScoParent())) {
             $rootScos[] = $sco;
         }
     }
     if ($isAnon) {
         $scoTracking = $this->scormManager->createEmptyScorm12ScoTracking($scorm12Sco);
     } else {
         $scoTracking = $this->scormManager->getScorm12ScoTrackingByUserAndSco($user, $scorm12Sco);
         if (is_null($scoTracking)) {
             $scoTracking = $this->scormManager->createScorm12ScoTracking($user, $scorm12Sco);
         }
     }
     return ['resource' => $scorm, '_resource' => $scorm, 'currentSco' => $scorm12Sco, 'scos' => $rootScos, 'scoTracking' => $scoTracking, 'scormUrl' => $scormPath, 'workspace' => $scorm->getResourceNode()->getWorkspace(), 'isAnon' => $isAnon, 'canEdit' => $canEdit];
 }