public function import($id, $directoryPath) { $directory = $this->getDirectoryById($id); if (file_exists($directory->getPath())) { if (tao_helpers_File::isDirEmpty($directory->getPath())) { common_Logger::d('Directory already found but content is empty'); helpers_File::copy($directoryPath, $directory->getPath(), true); } else { if (tao_helpers_File::isIdentical($directory->getPath(), $directoryPath)) { common_Logger::d('Directory already found but content is identical'); } else { throw new common_Exception('Duplicate dir ' . $id . ' with different content'); } } } else { mkdir($directory->getPath(), 0700, true); helpers_File::copy($directoryPath, $directory->getPath(), true); } }
public function testIsIdentical() { $testfolder = tao_helpers_File::createTempDir(); $this->assertTrue(is_dir($testfolder)); $zip = new ZipArchive(); $this->assertTrue($zip->open(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'samples' . DIRECTORY_SEPARATOR . 'fileHelper.zip')); $this->assertTrue($zip->extractTo($testfolder)); $zip->close(); $reference = $testfolder . 'reference'; $this->assertTrue(is_dir($reference)); $testContent = $testfolder . DIRECTORY_SEPARATOR . 'testContent'; $testEmptyDir = $testfolder . DIRECTORY_SEPARATOR . 'testEmptyDir'; $testIdent = $testfolder . DIRECTORY_SEPARATOR . 'testIdent'; $testMissingDir = $testfolder . DIRECTORY_SEPARATOR . 'testMissingDir'; $testRenamedFile = $testfolder . DIRECTORY_SEPARATOR . 'testRenamedFile'; $testRenamedEmptyDir = $testfolder . DIRECTORY_SEPARATOR . 'testRenamedEmptyDir'; $this->assertTrue(tao_helpers_File::isIdentical($reference, $reference)); $this->assertTrue(tao_helpers_File::isIdentical($reference, $testIdent)); $this->assertFalse(tao_helpers_File::isIdentical($reference, $testContent)); $this->assertFalse(tao_helpers_File::isIdentical($reference, $testEmptyDir)); $this->assertFalse(tao_helpers_File::isIdentical($reference, $testMissingDir)); $this->assertFalse(tao_helpers_File::isIdentical($reference, $testRenamedFile)); $this->assertFalse(tao_helpers_File::isIdentical($reference, $testRenamedEmptyDir)); $this->assertTrue(tao_helpers_File::delTree($testfolder)); $this->assertFalse(is_dir($testfolder)); }