« Return to Thread: [PEPr] Comment on File System::S3

Re: Re: [PEPr] Comment on File System::S3

by Greg Beaver-2 :: Rate this Message:

Reply to Author | View in Thread

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?

Thanks,
Greg

--
PEAR Development Mailing List (http://pear.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

 « Return to Thread: [PEPr] Comment on File System::S3