/**
  * 
  * @param tao_models_classes_service_StorageDirectory $private
  * @return tao_models_classes_service_ServiceCall
  */
 protected function buildServiceCall(\tao_models_classes_service_StorageDirectory $private)
 {
     $service = new tao_models_classes_service_ServiceCall(new core_kernel_classes_Resource(self::TESTRUNNER_SERVICE));
     $param = new \tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(self::TESTRUNNER_PARAMETER), $private->getId());
     $service->addInParameter($param);
     return $service;
 }
예제 #2
0
 /**
  * @param string $id
  * @return tao_models_classes_service_StorageDirectory
  */
 public function getDirectoryById($id)
 {
     $public = $id[strlen($id) - 1] == '+';
     $path = $this->id2path($id);
     $dir = new tao_models_classes_service_StorageDirectory($id, $this->getFsId($public), $path, $public ? $this->getAccessProvider() : null);
     $dir->setServiceLocator($this->getServiceLocator());
     return $dir;
 }
 /**
  * @param string $data name of the assert
  *
  * @return string
  * @throws ExceptionMissingAsset
  */
 public function encode($data)
 {
     //skip  if external resource
     if (filter_var($data, FILTER_VALIDATE_URL)) {
         return $data;
     }
     $file = $this->directory->getFile($data);
     if ($file->exists()) {
         return sprintf(self::DATA_PREFIX, $file->getMimeType(), base64_encode($file->read()));
     }
     throw new ExceptionMissingAsset('Assets ' . $data . ' not found at ' . $file->getPrefix());
 }
예제 #4
0
 public function testGetPath()
 {
     $reflectionClass = new \ReflectionClass(AbstractAdapter::class);
     $reflectionProperty = $reflectionClass->getProperty('pathPrefix');
     $reflectionProperty->setAccessible(true);
     $path = $reflectionProperty->getValue($this->fileSystem->getAdapter()) . $this->pathFixture;
     $this->assertEquals($path, $this->instance->getPath());
 }
 /**
  * Create the item's ServiceCall.
  * 
  * @param core_kernel_classes_Resource $item
  * @param tao_models_classes_service_StorageDirectory $destinationDirectory
  * @return tao_models_classes_service_ServiceCall
  */
 protected function createService(core_kernel_classes_Resource $item, tao_models_classes_service_StorageDirectory $destinationDirectory)
 {
     $service = new tao_models_classes_service_ServiceCall(new core_kernel_classes_Resource(INSTANCE_SERVICE_ITEMRUNNER));
     $service->addInParameter(new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_ITEMPATH), $destinationDirectory->getId()));
     $service->addInParameter(new tao_models_classes_service_ConstantParameter(new core_kernel_classes_Resource(INSTANCE_FORMALPARAM_ITEMURI), $item));
     return $service;
 }
 /**
  * @param core_kernel_classes_Resource $item the item to pack
  * @param string $lang
  * @param Item $qtiItem
  * @param \oat\oatbox\filesystem\Directory $directory
  * @return ItemPack $itemPack
  * @throws common_Exception
  */
 public function packQtiItem($item, $lang, $qtiItem, Directory $directory)
 {
     //use the QtiParser to transform the QTI XML into an assoc array representation
     try {
         //build the ItemPack from the parsed data
         if ($this->replaceXinclude) {
             $resolver = new ItemMediaResolver($item, $lang);
             $xincludeLoader = new XIncludeLoader($qtiItem, $resolver);
             $xincludeLoader->load(true);
         }
         $itemPack = new ItemPack(self::$itemType, $qtiItem->toArray());
         $itemPack->setAssetEncoders($this->getAssetEncoders());
         $assetParser = new AssetParser($qtiItem, $directory);
         $assetParser->setDeepParsing($this->isNestedResourcesInclusion());
         $assetParser->setGetXinclude(!$this->replaceXinclude);
         $storageDirectory = new \tao_models_classes_service_StorageDirectory($item->getUri(), $directory->getFileSystemId(), $directory->getPrefix() . '/' . $lang);
         $storageDirectory->setServiceLocator($directory->getServiceLocator());
         foreach ($assetParser->extract($itemPack) as $type => $assets) {
             $resolver = new ItemMediaResolver($item, $lang);
             foreach ($assets as &$asset) {
                 $mediaAsset = $resolver->resolve($asset);
                 $mediaSource = $mediaAsset->getMediaSource();
                 $asset = $mediaSource->getBaseName($mediaAsset->getMediaIdentifier());
             }
             $itemPack->setAssets($type, $assets, $storageDirectory);
         }
     } catch (common_Exception $e) {
         throw new common_Exception('Unable to pack item ' . $item->getUri() . ' : ' . $e->getMessage());
     }
     return $itemPack;
 }