> till wrote:
> > Cesar,
> >
> > I was not aware of your package and DID NOT COPY ANY OF YOUR CODE.
> >
> > I build this code over 3 months ago and used it in the last month on a
> > website and since I was using it in production decided to release it.
> > I have no idea when you came up with it, but there are also other
> > people who wrote similar packages.
> >
> > E.g. Clay notified me last night that he had written a very similar package.
>
> Hi Till,
>
> There are too many similarities. Let me excerpt a few examples.
>
>
http://www.phpclasses.org/browse/file/20639.html (requires login to that
> site in order to view)
>
http://php5.lagged.de/pear/File_S3/File/S3.phps>
> The order of events in the constructor is the same. Here's two similar
> lines from stream_open:
>
> Till's:
> function stream_open($path, $mode, $options, $opened_path)
> {
> if ($this->countPathComponents($path) != 2) {
> $msg = "$path is not a valid amazon s3 file path.";
> $msg .= " A file *must* be inside of a bucket";
>
> Cesar's:
> function stream_open($path, $mode, $options, &$opened_path) {
> if ($this->getPathNumberOfComponents($path) != 2) {
> trigger_error("$path is not a valid amazon s3 file path. A
> file *must* be inside of a bucket",E_USER_NOTICE);
> return false;
> }
>
>
> Till's:
> if ($this->isOpen) {
> /**
> * The file was opened for read, we exit early, because is
> we done
> * when the file is closed.
> */
>
> Cesar's:
> if ($this->tOpen) {
> /* the file was opened for read, so exit, because file is do
> when the file is closed */
>
> Till's:
> /**
> * Write a $data into the buffer.
> *
> * @param mixed $data Data to write into the buffer.
> *
> * @return int|bool Numbe of bytes written or false.
> */
> function stream_write($data)
>
> Cesar's:
> /**
> * Write a $data into the buffer.
> *
> * @return int|bool Numbe of bytes written or false.
> */
> function stream_write($data){
>
> The above one is for me definitive proof - the odds of you both
> mis-spelling "Number" in the same @return statement are less than 0%.
> Google confirms that this is not just a cut/paste from a stream wrapper
> example:
>
>
http://www.google.com/search?q=%22Numbe+of+bytes+written+or+false%22&btnG=Search>
> Till's:
> /* the required part is not on the buffer, so download it */
> $err = $this->http->ReadReplyBody($tmp, 1024);
>
> if ($err != '' && strlen($tmp) == 0) {
> $this->isEOF = true;
> }
> $this->buffer .= $tmp; /* buffer this! */
>
> Cesar's:
> /* the required part is not on the buffer, so download it */
> $err=$this->http->ReadReplyBody($tmp,1024);
> if($err!="" && strlen($tmp)==0) $this->isEOF = true;
> $this->buffer .= $tmp; /* buffer this! */
>
>
> Till's:
> /**
> * Implements the fstats
> *
> * Thanks to Jeff Arthur for ask this needed feature
> *
> * @return boolean
> */
> function stream_stat()
>
> Cesar's:
> /**
> * Implements the fstats
> *
> * Thanks to Jeff Arthur for ask this needed feature
> */
> function stream_stat() {
>
> Who is Jeff Arthur?
>
>
http://www.phpclasses.org/discuss/package/4144/thread/1/>
> The above is direct proof that your code post-dates Cesar's, as Jeff
> Arthur requested this feature from Cesar on Oct. 14.
>
> Till's:
> /**
> * Create a directory (aka bucket) on s3
> *
> * Example of usage:
> *
> * <code>
> *<?php
> * require_once 'File/S3.php';
> *
> * define('S3_KEY', '059d545s4d6554'); //fake-code
> * define('S3_PRIVATE', 'dsadsadshajkdhas') //fake-code
> *
> * $e = mkdir("s3://foldername",
> * File_S3::PRIVATE_READ || File_S3::PUB_READ
> * || File_S3::PUB_WRITE);
> * if ($e) {
> * echo "Done";
> * }
> * else echo "Error! Amazon said: ".$amazonResponse;
> *?>
> * </code>
> *
> * Nested folders are currently not support by Amazon S3.
> *
> * @param string $name Bucket name
> * @param int $mode Permision of the bucket
> *
> * @return bool true if success
> */
> function mkdir($name, $mode = READ_PRIV)
>
> Cesar's:
> /**
> * Create a Directory or Bucket
> *
> * Example of usage:
> *
> * <code>
> *<?php
> * include("gs3.php");
> * define('S3_KEY', '059d545s4d6554'); //fake-code
> * define('S3_PRIVATE','dsadsadshajkdhas') //fake-code
> * $e=mkdir("s3://foldername",_PRIVATE||_PUBLIC_READ||_PUBLIC_WRITE);
> * if ($e) echo "Done";
> * else echo "Error! Amazon said: ".$amazonResponse;
> *?>
> * </code>
> * Nested folders could not be done!, that is a Amazon S3 Limitation
> *
> * @param string $name Bucket name
> * @param int $mode Permision of the bucket
> * @return bool true if success
> */
> function mkdir($name, $mode=_PRIVATE) {
>
> The above example uses the same fake-code, again google proves it is
> unique to Cesar's code:
>
http://www.google.com/search?q=059d545s4d6554+amazon+s3>
> Till, the ball is in your court. Can you provide documented proof that
> you did not plagiarize this code?
See my email that I just wrote. That's all I can provide. :(