.t3x entpacken [Gelöst]

  • droptix droptix
    Jedi-Meister
    0 x
    275 Beiträge
    0 Hilfreiche Beiträge
    25. 04. 2007, 10:00

    Ich müsste manchmal schnell eine .t3x Datei lokal entpacken, um die PHP-Dateien einzusehen und Feedback zu geben.

    Daher suche ich nach einem Entpacker, am sinnvollsten wohl als PHP-Skript. Oder nach Infos zum Schreiben eines solchen Entpackers.

  • Hilfreichster Beitrag


  • 1 x
    11. 04. 2011, 17:47 - Hilfreichster Beitrag

    Funktioniert jetzt mit Typo3 4.5
    neu: extension als standard-ordnername

    1. <?php
    2. require('/path/to/typo3/sysext/em/classes/connection/class.tx_em_connection_ter.php');
    3.  
    4.  
    5. // Usage ausgeben
    6. function printUsageAndDie(){
    7. global $argv;
    8. print <<<EOM
    9. ------------------------------------------------------------------------------
    10.   _____ _ _ _____
    11.  | ____|_ ___ __ __ _ _ __ __| | | |_|___ /_ __
    12.  | _| \ \/ / '_ \ / _` | '_ \ / _` | | __| |_ \ \/ /
    13.  | |___ > <| |_) | (_| | | | | (_| | | |_ ___) > <
    14.  |_____/_/\_\ .__/ \__,_|_| |_|\__,_| \__|____/_/\_\ Version 0.2, 11.04.2011
    15.   |_|
    16.  
    17.  ...written by droptix and luwo. (look at http://www.typo3.net/forum)
    18.  ...and Jonny007-MKD
    19.  
    20.  Usage: expand_t3x.php [filename.t3x] <directory>
    21.  
    22.  * filename.t3x = Name of your t3x-file
    23.  * directory = optional directory of extraction (default=name of extension)
    24.  
    25. ------------------------------------------------------------------------------
    26.  
    27. EOM;
    28. die();
    29. }
    30.  
    31.  
    32. // Wurde eine Datei angegeben?
    33. if (count($argv) <=1) { printUsageAndDie(); }
    34.  
    35. // Wurde ein Auspackverzeichnis angegeben?
    36. if ($argv[2] != '') $unpackDir=$argv[2];
    37. else $unpackDir=substr($argv[1], 0, -4);
    38.  
    39. // Datei aus Kommandozeile holen...
    40. $extFile=$argv[1];
    41. if (file_exists($extFile)) { print "\n Entpacke Datei: '$extFile'...\n\n";}
    42. else{ print "\n Datei: '$extFile' wurde leider nicht gefunden \n"; printUsageAndDie();}
    43.  
    44.  
    45.  
    46. // Start unpacking.
    47. $fileContent = file_get_contents($extFile);
    48. $ext = tx_em_Connection_Ter::decodeExchangeData($fileContent);
    49.  
    50.  
    51. function autocreate_subdirs($dir) {
    52. $path = array();
    53. $subdirs = explode("/", $dir);
    54. foreach ($subdirs as $subdir) {
    55. $path[] = $subdir;
    56. $fullPath = implode("/", $path);
    57. if (!file_exists($fullPath)) {
    58. if (mkdir($fullPath)) {
    59. echo sprintf("OK: created directory '%s'\n", $fullPath);
    60. } else {
    61. echo sprintf("ERROR: directory '%s' not created\n", $fullPath);
    62. }
    63. }
    64. }
    65. }
    66.  
    67. // Unpack extension(s).
    68. foreach ($ext as $e) {
    69. if ($e["EM_CONF"]) {
    70. // Create unpack directory.
    71. if (!file_exists($unpackDir)) {
    72. mkdir($unpackDir);
    73. }
    74. // Create directories.
    75. $dirs = explode(",", $e["EM_CONF"]["createDirs"]);
    76. foreach ($dirs as $dir) {
    77. // Start in unpack directory if any.
    78. if ($unpackDir) {
    79. $dir = $unpackDir."/".$dir;
    80. }
    81. autocreate_subdirs($dir);
    82. }
    83. // Write files.
    84. foreach ($e["FILES"] as $file) {
    85. // Start in unpack directory.
    86. if (empty($unpackDir)) {
    87. $path = array();
    88. } else {
    89. $path = array($unpackDir);
    90. }
    91. $tmp = explode("/", $file["name"]);
    92. // Separate file name and rest path.
    93. $fileName = array_pop($tmp);
    94. $path = array_merge($path, $tmp);
    95. unset($tmp);
    96. // Create subdirs if neccessary.
    97. $dirPath = implode("/", $path);
    98. autocreate_subdirs($dirPath);
    99. // Write file.
    100. $path[] = $fileName;
    101. $fullPath = implode("/", $path);
    102. $handle = fopen($fullPath, "wb");
    103. if ($handle && fwrite($handle, $file["content"])) {
    104. fclose($handle);
    105. echo sprintf("OK: wrote file '%s'\n", $fullPath);
    106. } else {
    107. echo sprintf("ERROR: file '%s' not written\n", $fullPath);
    108. }
    109. }
    110. }
    111. }
    112. ?>


  • dyne dyne
    Jedi-Ritter
    0 x
    143 Beiträge
    0 Hilfreiche Beiträge
    19. 12. 2007, 13:21

    Ich hole mal das Thema wieder hoch, da ich auf der Suche nach einem t3x-Packer bin. Ich habe so eine Art kleinen Ext-Kickstarter für meine Zwecke geschrieben, aber ich kann leider keine t3x erstellen. Gibt es kein PHP-Code-Snippet dafür? Typo3 kann das doch auch.
    Irgendwie komm ich mit dem SourceForge-Link nicht klar. Egal welche File ich öffne, ich komme immer auf die gleiche Seite mit einem mir unverständlichen Formular.

  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    19. 12. 2007, 13:35

    [quote="dyne"]
    Gibt es kein PHP-Code-Snippet dafür? Typo3 kann das doch auch.
    [/quote]
    steht doch auf der ersten Seite...

  • dyne dyne
    Jedi-Ritter
    0 x
    143 Beiträge
    0 Hilfreiche Beiträge
    19. 12. 2007, 13:43

    Steh ich grade auf der Leitung?

    [quote="droptix"][...]
    P.S. Wenn jemand Lust und Zeit hat ein PHP-Script für den umgekehrten Weg zu machen, wäre das sehr cool :D Das wär noch was, was ich mit meinem Extension-Halbwissen nicht zusammen kriege, mir aber sehr wünschen würde.
    [/quote]

    [quote="a.otto"]
    Schau mal im SVN Repository von TYPO3xdev [1]nach.

    [1][url]http://typo3xdev.svn.sourceforge.net/viewvc/typo3xdev/tools_t3x/trunk/[/url]
    [/quote]

    Mehr finde ich nicht über einen Packer und wie gesagt habe ich ein Problem mit dem Link.

  • Stoneage Stoneage
    Jedi-General
    0 x
    1143 Beiträge
    0 Hilfreiche Beiträge
    19. 12. 2007, 13:52

    view klicken!?

  • dyne dyne
    Jedi-Ritter
    0 x
    143 Beiträge
    0 Hilfreiche Beiträge
    19. 12. 2007, 13:56

    [quote="Tetramatrix"]
    view klicken!?
    [/quote]

    [img]http://www.superweddings.com/lightbulb.gif[/img] danke *AnDieStirnKlatsch*

  • InforMedic InforMedi...
    Jedi-Meister
    0 x
    394 Beiträge
    1 Hilfreiche Beiträge
    18. 01. 2008, 05:15

    Geiles und geniales Toolchen =)

    Vor allem wenn mal wieder "File was to large for upload" bla oder so ähnlich kommt :p

  • -Z- -Z-
    Padawan
    0 x
    62 Beiträge
    0 Hilfreiche Beiträge
    30. 01. 2008, 10:51

    Ich hole mal das Thema wieder hoch, da ich auf der Suche nach einem t3x-Packer bin. Ich habe so eine Art kleinen Ext-Kickstarter für meine Zwecke geschrieben, aber ich kann leider keine t3x erstellen.

    Man kann im Ext Manager jede Ext als .t3x exportieren.

    BTW gibt es eine Möglichkeit mit dem Entpacker an die Inhalte der "ext_emconf.php" heranzukommen?

  • PeterAllfonds PeterAllf...
    Padawan
    0 x
    50 Beiträge
    0 Hilfreiche Beiträge
    08. 04. 2008, 09:38

    Ich bekomme nur die folgende Meldung

    Expand file: 'T3D__07-04-11-30-58-z.t3d'...

    Warning: Invalid argument supplied for foreach() in expandt3x.php on line 65

    und es wird nichts extrahiert. Es handelt sich um einen einfachen export einer TYPO3 Site, den ich fehlerfrei importieren kann.

    Oder soll das Tool nur für Extensions funktionieren?

  • saschae saschae
    Jedi-Meister
    0 x
    263 Beiträge
    0 Hilfreiche Beiträge
    07. 05. 2008, 11:08

    [quote="PeterAllfonds"]
    Ich bekomme nur die folgende Meldung

    Expand file: 'T3D__07-04-11-30-58-z.t3d'...

    Warning: Invalid argument supplied for foreach() in expandt3x.php on line 65

    und es wird nichts extrahiert. Es handelt sich um einen einfachen export einer TYPO3 Site, den ich fehlerfrei importieren kann.

    Oder soll das Tool nur für Extensions funktionieren?
    [/quote]
    es ist ein *.t3x entpacker und kein *.t3d entpacker ;-)
    also nur für extensions.
    Eine t3d müsste ja größtenteils aus datenbankdumps bestehen