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 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(); } } }
/** * 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); } }
/** * 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; }