[TYPO3] unziping an extension
Andreas Becker
ab.becker at web.de
Sun Jul 15 10:03:10 CEST 2007
Hi Nagita
I looked back where I had the file for unpacking from and here it is:
http://www.typo3.net/forum/list/list_post//61537/
Here you find also en exe and zip file to unpack your stuff without TYPo3
http://droptix.ohost.de/boards/typo3-expandt3x/expandt3x.exe
http://droptix.ohost.de/boards/typo3-expandt3x/expandt3x.exe.zip
Simply tear your .t3x on the expandt3x.exe icon and it is unpacking. It is
unpacking in the C:/Documents and Settings/username/ folder!
More info:
http://typo3xdev.svn.sourceforge.net/viewvc/typo3xdev/tools_t3x/trunk/
Have fun and a nice sunday
Andi
2007/7/15, Andreas Becker <ab.becker at web.de>:
>
> Hi again
>
> Have found another hint on the frenh list:
> -----------------
> Un t3x, ça n'est rien d'aure qu'un tableau sérialisé et compressé
>
> Structure d'un t3x :
>
> <md5>:<compression>:<contenu>
>
> <md5> est le md5 du contenu (non compressé) et permet de s'assurer qu'il
> n'y
> a aucune erreur de transfert
> Si <compression> = gzcompress, alors il faut décompresser <contenu> avec
> gzuncompress
> <contenu> est un simple array sérialisé qui contient les fichiers de
> l'extension
> ------------------
> http://forum.typo3.fr/index.php?showtopic=8413
> -------------------
>
> Perhaps you cn use also this script here - try it:
> ------------------
>
> 1. <?php
> 2. header <http://www.php.net/header>("Content-type: text/plain");
> 3. require("class.em_terconnection.php");
> 4.
> 5. // Settings.
> 6. $extFile = "file.t3x";
> 7. $unpackDir = "extension";
> 8.
> 9. // Start unpacking.
> 10. $fileContent = file_get_contents<
> http://www.php.net/file_get_contents>
> ($extFile);
> 11. $ext = SC_mod_tools_em_terconnection::decodeExchangeData(
> $fileContent);
> 12.
> 13. function autocreate_subdirs($dir) {
> 14. $path = array <http://www.php.net/array>();
> 15. $subdirs = explode <http://www.php.net/explode>("/", $dir)
> ;
> 16. foreach ($subdirs as $subdir) {
> 17. $path[] = $subdir;
> 18. $fullPath = implode <http://www.php.net/implode>(
> "/", $path);
> 19. if (!file_exists <http://www.php.net/file_exists>(
> $fullPath)) {
> 20. if (mkdir <http://www.php.net/mkdir>(
> $fullPath)) {
> 21. echo <http://www.php.net/echo>
> sprintf <http://www.php.net/sprintf>("OK: created directory '%s'\n",
> $fullPath);
> 22. } else {
> 23. echo <http://www.php.net/echo>
> sprintf <http://www.php.net/sprintf>("ERROR: directory '%s' not
> created\n", $fullPath);
> 24. }
> 25. }
> 26. }
> 27. }
> 28.
> 29. // Unpack extension(s).
> 30. foreach ($ext as $e) {
> 31. if ($e["EM_CONF"]) {
> 32. // Create unpack directory.
> 33. if (!file_exists <http://www.php.net/file_exists>(
> $unpackDir)) {
> 34. mkdir <http://www.php.net/mkdir>(
> $unpackDir);
> 35. }
> 36. // Create directories.
> 37. $dirs = explode <http://www.php.net/explode>(",",
> $e["EM_CONF"]["createDirs"]);
> 38. foreach ($dirs as $dir) {
> 39. // Start in unpack directory if any.
> 40. if ($unpackDir) {
> 41. $dir = $unpackDir."/".$dir;
> 42. }
> 43. autocreate_subdirs($dir);
> 44. }
> 45. // Write files.
> 46. foreach ($e["FILES"] as $file) {
> 47. // Start in unpack directory.
> 48. if (empty <http://www.php.net/empty>(
> $unpackDir)) {
> 49. $path = array<
> http://www.php.net/array>
> ();
> 50. } else {
> 51. $path = array<
> http://www.php.net/array>
> ($unpackDir);
> 52. }
> 53. $tmp = explode<http://www.php.net/explode>
> ("/", $file["name"]);
> 54. // Separate file name and rest path.
> 55. $fileName =
> array_pop<http://www.php.net/array_pop>
> ($tmp);
> 56. $path =
> array_merge<http://www.php.net/array_merge>
> ($path, $tmp);
> 57. unset <http://www.php.net/unset>($tmp);
> 58. // Create subdirs if neccessary.
> 59. $dirPath = implode<
> http://www.php.net/implode>
> ("/", $path);
> 60. autocreate_subdirs($dirPath);
> 61. // Write file.
> 62. $path[] = $fileName;
> 63. $fullPath = implode<
> http://www.php.net/implode>
> ("/", $path);
> 64. $handle = fopen <http://www.php.net/fopen>
> ($fullPath, "wb");
> 65. if ($handle && fwrite<
> http://www.php.net/fwrite>
> ($handle, $file["content"])) {
> 66. fclose <http://www.php.net/fclose>
> ($handle);
> 67. echo <http://www.php.net/echo>
> sprintf <http://www.php.net/sprintf>("OK: wrote file '%s'\n",
> $fullPath);
> 68. } else {
> 69. echo <http://www.php.net/echo>
> sprintf <http://www.php.net/sprintf>("ERROR: file '%s' not written\n",
> $fullPath);
> 70. }
> 71. }
> 72. }
> 73. }
> 74. ?>
> 75.
>
> ------------------------------------------
>
> By the way I do it with a local installation - is fast easy and you can
> test
> immedeately inside TYPo3.
>
> I am using WOS-Portable - Fast to install complette server/TYPO3 solution
> which you can even copy on a USB stick and it is still working:
> http://www.chsoftware.net
>
> Andi
>
>
>
>
>
> 2007/7/15, Andreas Becker <ab.becker at web.de>:
> >
> > Hi Nagita
> >
> > The packing is more a serialization with optinonal compression. Have a
> > look at the BE Code. Here you can see how it works.
> >
> > Partly it's gzipped:
> >
> > Have a look here how t3x files are created: (class.tx_extrep.php line
> 893)
> >
> >
> > ----------------------------------
> >
> > function compileOutputData($outArr) {
> >
> > $outDat = serialize($outArr);
> >
> > if ($this->piData["gzcompress"]) $outDat = gzcompress($outDat);
> >
> > return
> >
> md5($outDat).":".($this->piData["gzcompress"]?"gzcompress":"").":".base64_encode($outDat).":";
> >
> >
> > }
> > --------------------------------------
> >
> > Perhaps this helps you to get the data aout again:
> >
> > --------------------------------
> >
> > function decodeExchangeData($str) {
> >
> > $parts = explode(":",$str,3);
> >
> > if ($parts[1]=="gzcompress") {
> >
> > $parts[2] = gzuncompress($parts[2]);
> >
> > }
> >
> > if (md5($parts[2]) == $parts[0]) {
> >
> > return unserialize($parts[2]);
> >
> > }
> >
> > }
> > ------------------------------
> > Have a look also here:
> > http://www.php.net/manual/de/function.gzcompress.php
> >
> > And how it is donte at the .t3d extenion impexp
> > ------------------------------
> >
> > Chokdee
> > Andi
> >
> > 2007/7/15, Nagita Karunaratne <Nagita.k at gmail.com>:
> > >
> > > Hi,
> > >
> > > How are extension t3x files created. I would like to modify an
> extsting
> > > extension so I would like to 'unzip' it, modify the files and recreate
> > > the t3x file.
> > >
> > > Thanks,
> > > Nagita
> > > _______________________________________________
> > > TYPO3-english mailing list
> > > TYPO3-english at lists.netfielders.de
> > > http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-english
> > >
> >
> >
> _______________________________________________
> TYPO3-english mailing list
> TYPO3-english at lists.netfielders.de
> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-english
>
More information about the TYPO3-english
mailing list