コード例 #1
0
 public function testDeepCloneTriplesItemContent()
 {
     // create a file / put it in item content property
     /** @var \core_kernel_versioning_Repository $repository */
     $repository = \tao_models_classes_FileSourceService::singleton()->addLocalSource("repository test", \tao_helpers_File::createTempDir());
     //see if clone item content works
     /** @var \core_kernel_versioning_File $file */
     $file = $repository->createFile("test.xml", "test");
     mkdir($repository->getPath() . 'test');
     copy(__DIR__ . '/sample/test.xml', $repository->getPath() . 'test/test.xml');
     copy(__DIR__ . '/sample/style.css', $repository->getPath() . 'test/style.css');
     $rdfsTriple = new \core_kernel_classes_Triple();
     $rdfsTriple->predicate = "http://www.tao.lu/Ontologies/TAOItem.rdf#ItemContent";
     $rdfsTriple->object = $file->getUri();
     $fileNameProp = new \core_kernel_classes_Property(PROPERTY_FILE_FILENAME);
     $return = CloneHelper::deepCloneTriples(array($rdfsTriple));
     $this->assertNotEquals($rdfsTriple->object, $return[0]->object);
     $this->assertEquals($rdfsTriple->predicate, $return[0]->predicate);
     $this->assertCount(1, $return);
     $returnedFile = new \core_kernel_versioning_File($return[0]->object);
     $this->assertEquals($returnedFile->getPropertyValues($fileNameProp), $file->getPropertyValues($fileNameProp));
     $this->assertNotEquals($file->getAbsolutePath(), $returnedFile->getAbsolutePath());
     $files = scandir(dirname($returnedFile->getAbsolutePath()));
     $this->assertContains('test.xml', $files);
     $this->assertContains('style.css', $files);
     $file->delete(true);
     $returnedFile->delete(true);
     $repository->delete(true);
 }
コード例 #2
0
 protected static function deleteDependencies(\core_kernel_classes_Triple $triple)
 {
     if ($triple->predicate == 'http://www.tao.lu/Ontologies/TAOItem.rdf#ItemContent') {
         $file = new \core_kernel_versioning_File($triple->object);
         if ($file->exists()) {
             $sourceDir = dirname($file->getAbsolutePath());
             $file->delete();
             \tao_helpers_File::delTree($sourceDir);
         }
     } elseif (CloneHelper::isFileReference($triple)) {
         $file = new \core_kernel_versioning_File($triple->object);
         if ($file->exists()) {
             $file->delete();
         }
     }
 }
コード例 #3
0
 /**
  * Binds an UploadFileDescription with the target instance.
  *
  * @access protected
  * @author Jerome Bogaerts <*****@*****.**>
  * @param  Property property The property to bind the data.
  * @param  UploadFileDescription desc the upload file description.
  * @return void
  */
 protected function bindUploadFileDescription(core_kernel_classes_Property $property, tao_helpers_form_data_UploadFileDescription $desc)
 {
     $instance = $this->getTargetInstance();
     // Delete old files.
     foreach ($instance->getPropertyValues($property) as $oF) {
         $oldFile = new core_kernel_versioning_File($oF);
         $oldFile->delete(true);
     }
     $name = $desc->getName();
     $size = $desc->getSize();
     if (!empty($name) && !empty($size)) {
         // Move the file at the right place.
         $source = $desc->getTmpPath();
         $repository = tao_models_classes_TaoService::singleton()->getUploadFileSource();
         $file = $repository->spawnFile($source, $desc->getName());
         tao_helpers_File::remove($source);
         $instance->setPropertyValue($property, $file->getUri());
         // Update the UploadFileDescription with the stored file.
         $desc->setFile($file);
     }
 }
コード例 #4
0
 /**
  * Deletes the content but does not unreference it
  *
  * @access public
  * @author Joel Bout, <*****@*****.**>
  * @param  core_kernel_classes_Resource item
  * @return boolean
  */
 public function deleteItemContent(core_kernel_classes_Resource $item)
 {
     $returnValue = (bool) false;
     //delete the folder for all languages!
     foreach ($item->getUsedLanguages($this->itemContentProperty) as $lang) {
         $files = $item->getPropertyValuesByLg($this->itemContentProperty, $lang);
         foreach ($files->getIterator() as $file) {
             if ($file instanceof core_kernel_classes_Resource) {
                 $file = new core_kernel_file_File($file);
                 if (core_kernel_versioning_File::isVersionedFile($file)) {
                     $file = new core_kernel_versioning_File($file);
                 }
                 try {
                     $file->delete();
                 } catch (core_kernel_versioning_exception_FileUnversionedException $e) {
                     // file was not versioned after all, ignore in delte
                 }
             }
         }
     }
     $returnValue = true;
     return (bool) $returnValue;
 }