TODO 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. Version 1.0.0
  2. X make permissions in the lowest bits of flags to simplify using them [Greg]
  3. X implement ini handler for phar.readonly and phar.require_hash that allows
  4. enabling it on PHP_INI_ALL if it is disabled in the system, but does not
  5. allow disabling it if it is enabled in the system [Greg]
  6. X implement reading in metadata in manifest as <len32><metadata...> [Marcus]
  7. X implement writing out of metadata to new manifest [Marcus]
  8. X if SPL is disabled, enable only static methods of class Phar and disable
  9. class PharFileInfo completely [Marcus]
  10. X implement in-phar locking, so that a file that is opened for reading can't
  11. have a handle opened for writing [Marcus/Greg]
  12. X docs on file format/manifest description [Greg]
  13. X docs on uses [Greg]
  14. X stream context for specifying compression of a file [Marcus]
  15. X stream context for specifying meta-data [Greg]
  16. X Phar->begin()/Phar->commit() for specifying a new stub to the phar,
  17. and deferring flush until all modifications are complete [Greg]
  18. X Phar->getStub() for retrieving the stub of the phar [Marcus]
  19. X add setUncompressed(), setCompressedGZ() and setCompressedBZ2() to
  20. PharFileInfo class [Greg]
  21. X add uncompressAllFiles(), compressAllFilesGZ() and compressAllFilesBZ2()
  22. to Phar class [Greg]
  23. X add PharFileInfo::setMetaData($metadata) [Marcus]
  24. X add PharFileInfo::getMetaData() [Marcus]
  25. X always throw exceptions from the Phar object, and E_RECOVERABLE_ERROR from
  26. streams interface [Greg]
  27. X Phar archive metadata Phar::setMetaData($metadata) Phar::getMetaData()
  28. [Greg]
  29. X support rename() in stream wrapper [Greg]
  30. X update docs to reflect changes in error handling [Greg]
  31. X fix 011.phpt, 029.phpt for uncaught exceptions causing bad cleanup
  32. [Marcus/Greg]
  33. Version 1.1.0
  34. X Ability to connect a phar file 'phar://whatever' to a directory. That way
  35. all access to that phar archive are directed to the extracted directory.
  36. This allows to have the installed files and the archive keep the same
  37. includes. [Marcus]
  38. X add SHA-2 (256, 512) support [Marcus]
  39. X setSignatureAlgorithm() and Phar::MD5 Phar::SHA1 Phar::SHA256 Phar::SHA512
  40. Phar::PGP to choose the kind of signature to use (PGP falls back to SHA1)
  41. [Greg]
  42. Version 1.2.0
  43. X add PharFileInfo::hasMetadata(), PharFileInfo::delMetadata() [Marcus]
  44. X add Phar::hasMetadata(), Phar::delMetadata() [Marcus]
  45. X fix Phar::CanWrite() [Marcus]
  46. X add preliminary phar command (phar.php) [Marcus]
  47. X add phar command (phar.phar) [Marcus]
  48. X list all available compression methods using
  49. Phar::getSupportedCompression() [Marcus]
  50. X Remove RINIT [Marcus]
  51. Version 1.2.1
  52. X Add Phar::getAlias() [Marcus]
  53. X Add Phar::setAlias() [Greg]
  54. X Make -a optional in pack subcommand of phar.phar [Marcus]
  55. X Make Phar::loadPhar() and Phar::mapPhar() ignore extracted archives
  56. Version 2.0.0
  57. X implement webPhar() rewrite as a callback that returns FALSE to deny
  58. access, or a string representing a file within the archive to access. If
  59. unknown, the callback should return the original request uri [Greg]
  60. X rework filename detection so that alias is always checked first [Greg]
  61. X make aliases containing '/' or '\' invalid [Greg]
  62. X implement manual mounting of external phar archives to locations inside a
  63. phar path, $phar->mount('/path/to/external.phar', 'internal/path');
  64. this would traverse external.phar's manifest, and add each entry as a
  65. virtual entry just like automatic mounting of internal phars [Greg]
  66. X implement manual mounting of external paths to a directory inside a phar
  67. path. Because the mapping would be to an external directory, write access
  68. would be allowed always. This allows storing sqlite databases, cache, or
  69. template files in a location external to the phar. Copy of the files
  70. would need to be performed in an installation step, phar would not attempt
  71. to do this for performance and security reasons. [Greg]
  72. X implement opendir support for mounted paths [Greg]
  73. X make convertToZip/convertToTar rename files [Steph]
  74. X make convertTo*() with full file compression rename to append .gz or .bz2
  75. [Steph]
  76. X don't automatically add a stub to .zip or .tar files [Steph]
  77. X don't allow a stub or alias to be added to a .zip/.tar that does not have
  78. ".phar" in the filename (or already have stub/alias) [Steph]
  79. X allow read/write on .tar/.zip files that do not contain a stub or alias [Steph/Greg]
  80. X prevent manual addition of stub via $a['.phar/stub.php'] = '<?php my stub'; [Greg]
  81. X investigate potential collision between SPL's DirectoryIterator flags and
  82. those in phar_archive_data [Steph]
  83. X compression should work for non-phar archives [Steph]
  84. X implement initial support for simple zip/tar archives (PharData) [Steph]
  85. X make createDefaultStub() setDefaultStub() and have it file format-specific
  86. [Steph]
  87. X convertTo*() should always use the default stub [Steph]
  88. X ability to store empty directories [Greg]
  89. X tar support [Greg]
  90. X zip support [Greg]
  91. X Phar::copy($from, $to); [Greg]
  92. X Phar::delete($what) [Greg]
  93. X Phar::buildFromIterator(Iterator $it[, string $base_directory]) [Greg]
  94. X Layout: Option to compress all content rather than single files. (tar/phar
  95. only) [Greg]
  96. X clean crap paths like phar://blah.phar/file//../to\\here.php [Greg]
  97. Version 2.1.0
  98. * implement write support for mounted files even if phar.readonly=1
  99. * implement automatic "mounting" of internal phar archives so that
  100. phar:///path/to/archive.phar/internal.phar/file opens internal.phar and
  101. maps its manifest inside archive.phar. The manifest entry inside
  102. archive.phar would be named "internal.phar/file". Write access to internal
  103. files inside an internal phar would be denied, as the entire archive must
  104. be added or removed at the same time.