Joomla! Programmierung/Framework/JArchive/extract

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Beschreibung

JArchive/extract dient zum Entpacken von Archiven.

[Bearbeiten] Syntax

extract( $archivename, $extractdir )
  • @return boolean true bei Erfolg
  • @since Joomla 1.5
Parameter Datentyp Beschreibung Standardwert
$archivename string Der Name der Archivdatei ---
$extractdir string Der Pfad in welchen das Archiv entpackt werden soll ---

[Bearbeiten] Beispiele

[Bearbeiten] Ein Archiv entpacken

Das tar.gz Archiv

  • File zip.png mein_archiv.tar.gz

im Ordner

  • Folder blue.png JPATH_COMPONENT
    • Folder blue.png archiv_ordner

soll im Unterordner

  • Folder blue.png JPATH_COMPONENT
    • Folder blue.png archiv_ordner
      • Folder blue.png neues_verzeichnis

entpackt werden.

$dateiPfad = JPATH_COMPONENT.DS.'archiv_ordner';
$dateiName = 'mein_archiv.tar.gz';
 
if( JArchive::extract($dateiPfad.DS.$dateiName, $dateiPfad.DS.'neues_verzeichnis') )
{
    //-- Das Archiv wurde erfolgreich entpackt
}
else
{
    //-- Es trat ein Fehler auf
}

[Bearbeiten] Quellcode

JArchive::extract in Joomla! 2.5.4

Folder blue.png libraries

  • Folder red.png joomla
    • Folder green.png filesystem
      • File php.png archive.php
  1. public static function extract($archivename, $extractdir)
  2. {
  3. jimport('joomla.filesystem.file');
  4. jimport('joomla.filesystem.folder');
  5.  
  6. $untar = false;
  7. $result = false;
  8. $ext = JFile::getExt(strtolower($archivename));
  9.  
  10. // Check if a tar is embedded...gzip/bzip2 can just be plain files!
  11. if (JFile::getExt(JFile::stripExt(strtolower($archivename))) == 'tar')
  12. {
  13. $untar = true;
  14. }
  15.  
  16. switch ($ext)
  17. {
  18. case 'zip':
  19. $adapter = JArchive::getAdapter('zip');
  20.  
  21. if ($adapter)
  22. {
  23. $result = $adapter->extract($archivename, $extractdir);
  24. }
  25. break;
  26.  
  27. case 'tar':
  28. $adapter = JArchive::getAdapter('tar');
  29.  
  30. if ($adapter)
  31. {
  32. $result = $adapter->extract($archivename, $extractdir);
  33. }
  34. break;
  35.  
  36. case 'tgz':
  37. // This format is a tarball gzip'd
  38. $untar = true;
  39.  
  40. case 'gz':
  41. case 'gzip':
  42. // This may just be an individual file (e.g. sql script)
  43. $adapter = JArchive::getAdapter('gzip');
  44.  
  45. if ($adapter)
  46. {
  47. $config = JFactory::getConfig();
  48. $tmpfname = $config->get('tmp_path') . '/' . uniqid('gzip');
  49. $gzresult = $adapter->extract($archivename, $tmpfname);
  50.  
  51. if ($gzresult instanceof Exception)
  52. {
  53. @unlink($tmpfname);
  54.  
  55. return false;
  56. }
  57.  
  58. if ($untar)
  59. {
  60. // Try to untar the file
  61. $tadapter = JArchive::getAdapter('tar');
  62.  
  63. if ($tadapter)
  64. {
  65. $result = $tadapter->extract($tmpfname, $extractdir);
  66. }
  67. }
  68. else
  69. {
  70. $path = JPath::clean($extractdir);
  71. JFolder::create($path);
  72. $result = JFile::copy($tmpfname, $path . '/' . JFile::stripExt(JFile::getName(strtolower($archivename))), null, 1);
  73. }
  74.  
  75. @unlink($tmpfname);
  76. }
  77. break;
  78.  
  79. case 'tbz2':
  80. // This format is a tarball bzip2'd
  81. $untar = true;
  82.  
  83. case 'bz2':
  84. case 'bzip2':
  85. // This may just be an individual file (e.g. sql script)
  86. $adapter = JArchive::getAdapter('bzip2');
  87.  
  88. if ($adapter)
  89. {
  90. $config = JFactory::getConfig();
  91. $tmpfname = $config->get('tmp_path') . '/' . uniqid('bzip2');
  92. $bzresult = $adapter->extract($archivename, $tmpfname);
  93.  
  94. if ($bzresult instanceof Exception)
  95. {
  96. @unlink($tmpfname);
  97. return false;
  98. }
  99.  
  100. if ($untar)
  101. {
  102. // Try to untar the file
  103. $tadapter = JArchive::getAdapter('tar');
  104.  
  105. if ($tadapter)
  106. {
  107. $result = $tadapter->extract($tmpfname, $extractdir);
  108. }
  109. }
  110. else
  111. {
  112. $path = JPath::clean($extractdir);
  113. JFolder::create($path);
  114. $result = JFile::copy($tmpfname, $path . '/' . JFile::stripExt(JFile::getName(strtolower($archivename))), null, 1);
  115. }
  116.  
  117. @unlink($tmpfname);
  118. }
  119. break;
  120.  
  121. default:
  122. JError::raiseWarning(10, JText::_('JLIB_FILESYSTEM_UNKNOWNARCHIVETYPE'));
  123. return false;
  124. break;
  125. }
  126.  
  127. if (!$result || $result instanceof Exception)
  128. {
  129. return false;
  130. }
  131.  
  132. return true;
  133. }

[Bearbeiten] Siehe auch

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge