Open sergey144010 opened 6 years ago
??? $imapClient->getMessage( 81, ImapClient::UID ); $imapClient->getMessage( 81, Message::UID );
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 );
# 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 );
getFolders($separator = null, $type = 0);
change to
getFolders($separator = null, Folder::list);
or something like that
# 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 );
$imapClient->getMessage( $id = 81, IncomingMessage::Headers );
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)
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
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);
# replace 1 0
const ON_DECODE = 1;
const OFF_DECODE = 0;
# 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);
}
Event before decode
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);
}
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]);
};
};
}
}
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;
/*
$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/