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); }
protected static function cloneItemContent($itemContentUri) { \common_Logger::i('clone itemcontent ' . $itemContentUri); $fileNameProp = new core_kernel_classes_Property(PROPERTY_FILE_FILENAME); $file = new \core_kernel_versioning_File($itemContentUri); $sourceDir = dirname($file->getAbsolutePath()); $newFile = $file->getRepository()->spawnFile($sourceDir); $newFile->editPropertyValues($fileNameProp, $file->getPropertyValues($fileNameProp)); return $newFile->getUri(); }