예제 #1
0
 /**
  * Test all methods
  *
  * @covers ::<public>
  */
 public function testAllMethods()
 {
     // Preparation
     $existingFile = __DIR__ . "/../_files/documents/sheet.xls";
     $zipFile = __DIR__ . "/../_files/documents/ziptest.zip";
     $destination1 = __DIR__ . "/../_files/extract1";
     $destination2 = __DIR__ . "/../_files/extract2";
     $destination3 = __DIR__ . "/../_files/extract3";
     @mkdir($destination1);
     @mkdir($destination2);
     @mkdir($destination3);
     $object = new ZipArchive();
     $object->open($zipFile);
     $object->addFile($existingFile, 'xls/new.xls');
     $object->addFromString('content/string.txt', 'Test');
     $object->close();
     // Run tests
     $this->assertEquals(0, $object->locateName('xls/new.xls'));
     $this->assertFalse($object->locateName('blablabla'));
     $this->assertEquals('Test', $object->getFromName('content/string.txt'));
     $this->assertEquals('Test', $object->getFromName('/content/string.txt'));
     $this->assertFalse($object->getNameIndex(-1));
     $this->assertEquals('content/string.txt', $object->getNameIndex(1));
     $this->assertFalse($object->extractTo('blablabla'));
     $this->assertTrue($object->extractTo($destination1));
     $this->assertTrue($object->extractTo($destination2, 'xls/new.xls'));
     $this->assertFalse($object->extractTo($destination2, 'blablabla'));
     // Cleanup
     $this->deleteDir($destination1);
     $this->deleteDir($destination2);
     $this->deleteDir($destination3);
     @unlink($zipFile);
 }
예제 #2
0
 /**
  * Test all methods
  *
  * @param string $zipClass
  * @covers ::<public>
  */
 public function testZipArchive($zipClass = 'ZipArchive')
 {
     // Preparation
     $existingFile = __DIR__ . '/../_files/documents/sheet.xls';
     $zipFile = __DIR__ . '/../_files/documents/ziptest.zip';
     $destination1 = __DIR__ . '/../_files/documents/extract1';
     $destination2 = __DIR__ . '/../_files/documents/extract2';
     @mkdir($destination1);
     @mkdir($destination2);
     Settings::setZipClass($zipClass);
     $object = new ZipArchive();
     $object->open($zipFile, ZipArchive::CREATE);
     $object->addFile($existingFile, 'xls/new.xls');
     $object->addFromString('content/string.txt', 'Test');
     $object->close();
     $object->open($zipFile);
     // Run tests
     $this->assertEquals(0, $object->locateName('xls/new.xls'));
     $this->assertFalse($object->locateName('blablabla'));
     $this->assertEquals('Test', $object->getFromName('content/string.txt'));
     $this->assertEquals('Test', $object->getFromName('/content/string.txt'));
     $this->assertFalse($object->getNameIndex(-1));
     $this->assertEquals('content/string.txt', $object->getNameIndex(1));
     $this->assertFalse($object->extractTo('blablabla'));
     $this->assertTrue($object->extractTo($destination1));
     $this->assertTrue($object->extractTo($destination2, 'xls/new.xls'));
     $this->assertFalse($object->extractTo($destination2, 'blablabla'));
     // Cleanup
     $this->deleteDir($destination1);
     $this->deleteDir($destination2);
     @unlink($zipFile);
 }
 /**
  * Read all relationship files
  *
  * @param string $docFile
  * @return array
  */
 private function readRelationships($docFile)
 {
     $relationships = array();
     // _rels/.rels
     $relationships['main'] = $this->getRels($docFile, '_rels/.rels');
     // word/_rels/*.xml.rels
     $wordRelsPath = 'word/_rels/';
     $zip = new ZipArchive();
     if ($zip->open($docFile) === true) {
         for ($i = 0; $i < $zip->numFiles; $i++) {
             $xmlFile = $zip->getNameIndex($i);
             if (substr($xmlFile, 0, strlen($wordRelsPath)) == $wordRelsPath && substr($xmlFile, -1) != '/') {
                 $docPart = str_replace('.xml.rels', '', str_replace($wordRelsPath, '', $xmlFile));
                 $relationships[$docPart] = $this->getRels($docFile, $xmlFile, 'word/');
             }
         }
         $zip->close();
     }
     return $relationships;
 }