sergey144010 / php-imap-client

GNU General Public License v3.0
3 stars 0 forks source link

Futures #3

Open sergey144010 opened 6 years ago

sergey144010 commented 6 years ago
  1. ??? $imapClient->getMessage( new ID(81) ); $imapClient->getMessage( new UID(81) ); instead of $imapClient->useID; $imapClient->useUID;
sergey144010 commented 6 years ago

??? $imapClient->getMessage( 81, ImapClient::UID ); $imapClient->getMessage( 81, Message::UID );

sergey144010 commented 6 years ago

Change it

$imapClient->useGetMessageHeaders();
$imapClient->useGetMessageShortHeaders();
$imapClient->useGetMessageBody();
$imapClient->useGetMessageAttachments();
$imapClient->useGetMessageParts();
$imapClient->useGetMessageStructure();
$imapClient->useGetMessage();
$imapClient->useGetMessageWithAttachments()

to this

$imapClient->getMessage( 81, Message::UID,  Message::withAttachments );
sergey144010 commented 6 years ago
# message with attachments
$imapClient->getMessage( 81, Message::UID,  Message::withAttachments );
# only message attachments
$imapClient->getMessage( 81, Message::UID,  Message::Attachments );
# only headers
$imapClient->getMessage( 81, Message::UID,  Message::Headers );
sergey144010 commented 6 years ago
getFolders($separator = null, $type = 0);

change to

getFolders($separator = null, Folder::list);

or something like that

sergey144010 commented 6 years ago
# stay
$imapClient->useID;
$imapClient->useUID;
# default ID

# and change this
# message with attachments
$imapClient->getMessage( $id = 81, Message::withAttachments );
# only message attachments
$imapClient->getMessage( $id = 81, Message::Attachments );
# only headers
$imapClient->getMessage( $id = 81, Message::Headers );

# and 
# only messages headers
$imapClient->getMessages( Message::Headers );
sergey144010 commented 6 years ago
$imapClient->getMessage( $id = 81, IncomingMessage::Headers );
sergey144010 commented 5 years ago
namespace sergey144010\ImapClient\Incoming\Message;

$imapClient->pullMessage( $id = 81, Message::Headers );

###

# change this on with attachments
$imapClient->getMessage()
# and add setting withOutAttachments
$imapClient->getMessage($id = 81, Message::withOutAttachments)
sergey144010 commented 5 years ago
namespace sergey144010\ImapClient\Incoming;

# $imapClient->getMessage() return this  obj \Incoming\Message:

class Message
{
    private $headers;
    private $body;
    private $attachments;
}

# and rename sergey144010\ImapClient\IncomingMessage\IncomingMessage with something like
sergey144010\ImapClient\Incoming\Constructor
# or other something
sergey144010\ImapClient\Incoming\Builder
sergey144010 commented 5 years ago
class Message
{
    const Structure = 'structure';
    const Parts = 'parts';
    const Headers = 'headers';
    const ShortHeaders = 'shortHeaders';
    const Body = 'body';
    const withOutAttachments = 'withOutAttachments';
    const Attachments = 'attachments';

    private $headers;
    private $body;
    private $attachments;
}

# change this
$this->incomingMessage->setIdentifier(new MessageIdentifier($this->stream, $id, $this->identifier));
# to
$this->setIdentifier($id);
sergey144010 commented 5 years ago
# replace 1 0
    const ON_DECODE = 1;
    const OFF_DECODE = 0;
sergey144010 commented 5 years ago
# change

    public function getMessage($id)
    {
        $this->incomingMessage->setIdentifier(new MessageIdentifier($this->stream, $id, $this->identifier));
        $this->incomingMessage->pullStructure();
        $this->incomingMessage->pullHeaders();
        $this->incomingMessage->getParts();
        $this->incomingMessage->pullBody();
        if($this->getDecode() == self::ONN_DECODE) {
            $this->incomingMessage->decodeHeaders();
            $this->incomingMessage->decodeBody();
        };
        $obj = new Message();
        $obj->setParts($this->incomingMessage->getParts());
        $obj->setHeaders($this->incomingMessage->getHeaders());
        $obj->setBody($this->incomingMessage->getBody());
        return $obj;
    }

    public function getMessage($id)
    {
        return $this->builder->getMessage($id);
    }
sergey144010 commented 5 years ago

Event before decode

sergey144010 commented 5 years ago
    public function getMessage($id)
    {
        $builder = new Builder(new MessageIdentifier($this->stream, $id, $this->identifier));
        $builder->pullStructure();
        $builder->pullHeaders();
        $builder->getParts();
        $builder->pullBody();

        eventBeforeDecode($builder); ?
        $builder->decodeHeaders(); ?
        $builder->decodeBody(); ?

        return new Message($builder);
    }
sergey144010 commented 5 years ago
class Event
{
  private static $events = [];

  public static function attach($event, $handlerName, $handler)
  {
     foreach(self::$events as $packEvent){
         if (array_key_exists($event, $packEvent) && $packEvent['alias'] == $handlerName) {
                    throw new ImapClientException ( "Event with handlerName $handlerName already exists" ) ; 
         }
     };
    self::$events[] = [ 'alias' => $handlerName, $event => $handler];
  }

  public static function trigger($event, array $arg = null)
  {
    foreach(self::$events as $packEvent){
      if (array_key_exists($event, $packEvent)) {
               if (!is_callable ($packEvent[$event]) ) {
                    throw new ImapClientException ( "This callback function can not be called" ) ; 
                };
                $result = call_user_func($packEvent[$event], $arg);
                if (isset($result)) return $result;
      }
    }
  }

 public static function detach ($event, $handlerName = null)
{
  if(isset($handlerName)){
    foreach(self::$events as $key => $packEvent){
      if (array_key_exists($event, $packEvent) && $packEvent['alias'] ==$handlerName ) {
        unset(self::$events[$key]);
      };
    };
   return;
   };

 foreach(self::$events as $key => $packEvent){
   if (array_key_exists($event, $packEvent)) {
        unset(self::$events[$key]);
    };
 };

}

}
sergey144010 commented 5 years ago

test


class B 
{
    private $a = 1;

    public function setA($a)
    {
        $this->a = $a;
    }

    public function getA()
    {
    echo $this->a;
    }
}

$c = 7;

Event::attach('EVENT', 'test', function($arg) use (&$c){ 
$b = $arg['b'];
    $c++;
    $b->setA($c);
});

$b = new B();
Event::trigger('EVENT', ['b'=>$b]);
$b->getA();

Event::detach('EVENT');
Event::trigger('EVENT', ['b'=>$b]);
$b->getA();

echo "=====\r\n".PHP_EOL;
echo $c;
sergey144010 commented 5 years ago
/*
$iterator = new FilesystemIterator(dirname(dirname(__FILE__)));
while($iterator->valid()) {
    echo $iterator->getFilename() . "\n";
    $iterator->next();
}
*/

/*
$filename = dirname(dirname(__FILE__)).'/index.html';
$file = new SplFileObject($filename, "r");
$contents = $file->fread($file->getSize());
var_dump($contents);
*/
https://www.runphponline.com/