Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
Zend_Mail_Storage_Maildir Class Reference
Inheritance diagram for Zend_Mail_Storage_Maildir:
Zend_Mail_Storage_Abstract Zend_Mail_Storage_Folder_Maildir Zend_Mail_Storage_Writable_Maildir

Public Member Functions

 countMessages ($flags=null)
 
 getSize ($id=null)
 
 getMessage ($id)
 
 getRawHeader ($id, $part=null, $topLines=0)
 
 getRawContent ($id, $part=null)
 
 __construct ($params)
 
 close ()
 
 noop ()
 
 removeMessage ($id)
 
 getUniqueId ($id=null)
 
 getNumberByUniqueId ($id)
 
- Public Member Functions inherited from Zend_Mail_Storage_Abstract
 __get ($var)
 
 getCapabilities ()
 
 countMessages ()
 
 getSize ($id=0)
 
 getMessage ($id)
 
 getRawHeader ($id, $part=null, $topLines=0)
 
 getRawContent ($id, $part=null)
 
 __construct ($params)
 
 __destruct ()
 
 close ()
 
 noop ()
 
 removeMessage ($id)
 
 getUniqueId ($id=null)
 
 getNumberByUniqueId ($id)
 
 count ()
 
 offsetExists ($id)
 
 offsetGet ($id)
 
 offsetSet ($id, $value)
 
 offsetUnset ($id)
 
 rewind ()
 
 current ()
 
 key ()
 
 next ()
 
 valid ()
 
 seek ($pos)
 

Protected Member Functions

 _getFileData ($id, $field=null)
 
 _isMaildir ($dirname)
 
 _openMaildir ($dirname)
 
 _getMaildirFiles ($dh, $dirname, $default_flags=array())
 

Protected Attributes

 $_messageClass = 'Zend_Mail_Message_File'
 
 $_files = array()
 
- Protected Attributes inherited from Zend_Mail_Storage_Abstract
 $_has
 
 $_iterationPos = 0
 
 $_iterationMax = null
 
 $_messageClass = 'Zend_Mail_Message'
 

Static Protected Attributes

static $_knownFlags
 

Detailed Description

Definition at line 47 of file Maildir.php.

Constructor & Destructor Documentation

◆ __construct()

__construct (   $params)

Create instance with parameters Supported parameters are:

  • dirname dirname of mbox file
Parameters
array$paramsmail reader specific parameters
Exceptions
Zend_Mail_Storage_Exception
See also
Zend_Mail_Storage_Exception
Zend_Mail_Storage_Exception

Definition at line 263 of file Maildir.php.

264  {
265  if (is_array($params)) {
266  $params = (object)$params;
267  }
268 
269  if (!isset($params->dirname) || !is_dir($params->dirname)) {
273  #require_once 'Zend/Mail/Storage/Exception.php';
274  throw new Zend_Mail_Storage_Exception('no valid dirname given in params');
275  }
276 
277  if (!$this->_isMaildir($params->dirname)) {
281  #require_once 'Zend/Mail/Storage/Exception.php';
282  throw new Zend_Mail_Storage_Exception('invalid maildir given');
283  }
284 
285  $this->_has['top'] = true;
286  $this->_has['flags'] = true;
287  $this->_openMaildir($params->dirname);
288  }
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
Definition: website.php:18

Member Function Documentation

◆ _getFileData()

_getFileData (   $id,
  $field = null 
)
protected

Get one or all fields from file structure. Also checks if message is valid

Parameters
int$idmessage number
string | null$fieldwanted field
Returns
string|array wanted field or all fields as array
Exceptions
Zend_Mail_Storage_Exception
See also
Zend_Mail_Storage_Exception
Zend_Mail_Storage_Exception

Definition at line 119 of file Maildir.php.

120  {
121  if (!isset($this->_files[$id - 1])) {
125  #require_once 'Zend/Mail/Storage/Exception.php';
126  throw new Zend_Mail_Storage_Exception('id does not exist');
127  }
128 
129  if (!$field) {
130  return $this->_files[$id - 1];
131  }
132 
133  if (!isset($this->_files[$id - 1][$field])) {
137  #require_once 'Zend/Mail/Storage/Exception.php';
138  throw new Zend_Mail_Storage_Exception('field does not exist');
139  }
140 
141  return $this->_files[$id - 1][$field];
142  }
$id
Definition: fieldset.phtml:14

◆ _getMaildirFiles()

_getMaildirFiles (   $dh,
  $dirname,
  $default_flags = array() 
)
protected

find all files in opened dir handle and add to maildir files

Parameters
resource$dhdir handle used for search
string$dirnamedirname of dir in $dh
array$default_flagsdefault flags for given dir
Returns
null

Definition at line 352 of file Maildir.php.

353  {
354  while (($entry = readdir($dh)) !== false) {
355  if ($entry[0] == '.' || !is_file($dirname . $entry)) {
356  continue;
357  }
358 
359  @list($uniq, $info) = explode(':', $entry, 2);
360  @list(,$size) = explode(',', $uniq, 2);
361  if ($size && $size[0] == 'S' && $size[1] == '=') {
362  $size = substr($size, 2);
363  }
364  if (!ctype_digit($size)) {
365  $size = null;
366  }
367  @list($version, $flags) = explode(',', $info, 2);
368  if ($version != 2) {
369  $flags = '';
370  }
371 
372  $named_flags = $default_flags;
373  $length = strlen($flags);
374  for ($i = 0; $i < $length; ++$i) {
375  $flag = $flags[$i];
376  $named_flags[$flag] = isset(self::$_knownFlags[$flag]) ? self::$_knownFlags[$flag] : $flag;
377  }
378 
379  $data = array('uniq' => $uniq,
380  'flags' => $named_flags,
381  'flaglookup' => array_flip($named_flags),
382  'filename' => $dirname . $entry);
383  if ($size !== null) {
384  $data['size'] = (int)$size;
385  }
386  $this->_files[] = $data;
387  }
388  }
foreach( $_productCollection as $_product)() ?>" class $info
Definition: listing.phtml:52
$i
Definition: gallery.phtml:31

◆ _isMaildir()

_isMaildir (   $dirname)
protected

check if a given dir is a valid maildir

Parameters
string$dirnamename of dir
Returns
bool dir is valid maildir

Definition at line 296 of file Maildir.php.

297  {
298  if (file_exists($dirname . '/new') && !is_dir($dirname . '/new')) {
299  return false;
300  }
301  if (file_exists($dirname . '/tmp') && !is_dir($dirname . '/tmp')) {
302  return false;
303  }
304  return is_dir($dirname . '/cur');
305  }

◆ _openMaildir()

_openMaildir (   $dirname)
protected

open given dir as current maildir

Parameters
string$dirnamename of maildir
Returns
null
Exceptions
Zend_Mail_Storage_Exception
See also
Zend_Mail_Storage_Exception
Zend_Mail_Storage_Exception

Definition at line 314 of file Maildir.php.

315  {
316  if ($this->_files) {
317  $this->close();
318  }
319 
320  $dh = @opendir($dirname . '/cur/');
321  if (!$dh) {
325  #require_once 'Zend/Mail/Storage/Exception.php';
326  throw new Zend_Mail_Storage_Exception('cannot open maildir');
327  }
328  $this->_getMaildirFiles($dh, $dirname . '/cur/');
329  closedir($dh);
330 
331  $dh = @opendir($dirname . '/new/');
332  if ($dh) {
333  $this->_getMaildirFiles($dh, $dirname . '/new/', array(Zend_Mail_Storage::FLAG_RECENT));
334  closedir($dh);
335  } else if (file_exists($dirname . '/new/')) {
339  #require_once 'Zend/Mail/Storage/Exception.php';
340  throw new Zend_Mail_Storage_Exception('cannot read recent mails in maildir');
341  }
342  }
const FLAG_RECENT
Definition: Storage.php:39
_getMaildirFiles($dh, $dirname, $default_flags=array())
Definition: Maildir.php:352

◆ close()

close ( )

Close resource for mail lib. If you need to control, when the resource is closed. Otherwise the destructor would call this.

Returns
void

Definition at line 397 of file Maildir.php.

398  {
399  $this->_files = array();
400  }

◆ countMessages()

countMessages (   $flags = null)

Count messages all messages in current box

Returns
int number of messages
Exceptions
Zend_Mail_Storage_Exception

Definition at line 83 of file Maildir.php.

84  {
85  if ($flags === null) {
86  return count($this->_files);
87  }
88 
89  $count = 0;
90  if (!is_array($flags)) {
91  foreach ($this->_files as $file) {
92  if (isset($file['flaglookup'][$flags])) {
93  ++$count;
94  }
95  }
96  return $count;
97  }
98 
99  $flags = array_flip($flags);
100  foreach ($this->_files as $file) {
101  foreach ($flags as $flag => $v) {
102  if (!isset($file['flaglookup'][$flag])) {
103  continue 2;
104  }
105  }
106  ++$count;
107  }
108  return $count;
109  }
$count
Definition: recent.phtml:13

◆ getMessage()

getMessage (   $id)

Fetch a message

Parameters
int$idnumber of message
Returns
Zend_Mail_Message_File
Exceptions
Zend_Mail_Storage_Exception

Definition at line 175 of file Maildir.php.

176  {
177  // TODO that's ugly, would be better to let the message class decide
178  if (strtolower($this->_messageClass) == 'zend_mail_message_file' || is_subclass_of($this->_messageClass, 'zend_mail_message_file')) {
179  return new $this->_messageClass(array('file' => $this->_getFileData($id, 'filename'),
180  'flags' => $this->_getFileData($id, 'flags')));
181  }
182 
183  return new $this->_messageClass(array('handler' => $this, 'id' => $id, 'headers' => $this->getRawHeader($id),
184  'flags' => $this->_getFileData($id, 'flags')));
185  }
is_subclass_of($obj, $className)
$id
Definition: fieldset.phtml:14
getRawHeader($id, $part=null, $topLines=0)
Definition: Maildir.php:196
_getFileData($id, $field=null)
Definition: Maildir.php:119

◆ getNumberByUniqueId()

getNumberByUniqueId (   $id)

get a message number from a unique id

I.e. if you have a webmailer that supports deleting messages you should use unique ids as parameter and use this method to translate it to message number right before calling removeMessage()

Parameters
string$idunique id
Returns
int message number
Exceptions
Zend_Mail_Storage_Exception
See also
Zend_Mail_Storage_Exception

Definition at line 461 of file Maildir.php.

462  {
463  foreach ($this->_files as $num => $file) {
464  if ($file['uniq'] == $id) {
465  return $num + 1;
466  }
467  }
468 
472  #require_once 'Zend/Mail/Storage/Exception.php';
473  throw new Zend_Mail_Storage_Exception('unique id not found');
474  }
$id
Definition: fieldset.phtml:14

◆ getRawContent()

getRawContent (   $id,
  $part = null 
)
See also
Zend_Mail_Storage_Exception

Definition at line 230 of file Maildir.php.

231  {
232  if ($part !== null) {
233  // TODO: implement
237  #require_once 'Zend/Mail/Storage/Exception.php';
238  throw new Zend_Mail_Storage_Exception('not implemented');
239  }
240 
241  $fh = fopen($this->_getFileData($id, 'filename'), 'r');
242 
243  while (!feof($fh)) {
244  $line = fgets($fh);
245  if (!trim($line)) {
246  break;
247  }
248  }
249 
250  $content = stream_get_contents($fh);
251  fclose($fh);
252  return $content;
253  }
$id
Definition: fieldset.phtml:14
_getFileData($id, $field=null)
Definition: Maildir.php:119

◆ getRawHeader()

getRawHeader (   $id,
  $part = null,
  $topLines = 0 
)
See also
Zend_Mail_Storage_Exception

Definition at line 196 of file Maildir.php.

197  {
198  if ($part !== null) {
199  // TODO: implement
203  #require_once 'Zend/Mail/Storage/Exception.php';
204  throw new Zend_Mail_Storage_Exception('not implemented');
205  }
206 
207  $fh = fopen($this->_getFileData($id, 'filename'), 'r');
208 
209  $content = '';
210  while (!feof($fh)) {
211  $line = fgets($fh);
212  if (!trim($line)) {
213  break;
214  }
215  $content .= $line;
216  }
217 
218  fclose($fh);
219  return $content;
220  }
$id
Definition: fieldset.phtml:14
_getFileData($id, $field=null)
Definition: Maildir.php:119

◆ getSize()

getSize (   $id = null)

Get a list of messages with number and size

Parameters
int | null$idnumber of message or null for all messages
Returns
int|array size of given message of list with all messages as array(num => size)
Exceptions
Zend_Mail_Storage_Exception

Definition at line 151 of file Maildir.php.

152  {
153  if ($id !== null) {
154  $filedata = $this->_getFileData($id);
155  return isset($filedata['size']) ? $filedata['size'] : filesize($filedata['filename']);
156  }
157 
158  $result = array();
159  foreach ($this->_files as $num => $data) {
160  $result[$num + 1] = isset($data['size']) ? $data['size'] : filesize($data['filename']);
161  }
162 
163  return $result;
164  }
$id
Definition: fieldset.phtml:14
_getFileData($id, $field=null)
Definition: Maildir.php:119

◆ getUniqueId()

getUniqueId (   $id = null)

get unique id for one or all messages

if storage does not support unique ids it's the same as the message number

Parameters
int | null$idmessage number
Returns
array|string message number for given message or all messages as array
Exceptions
Zend_Mail_Storage_Exception

Definition at line 438 of file Maildir.php.

439  {
440  if ($id) {
441  return $this->_getFileData($id, 'uniq');
442  }
443 
444  $ids = array();
445  foreach ($this->_files as $num => $file) {
446  $ids[$num + 1] = $file['uniq'];
447  }
448  return $ids;
449  }
$id
Definition: fieldset.phtml:14
_getFileData($id, $field=null)
Definition: Maildir.php:119

◆ noop()

noop ( )

Waste some CPU cycles doing nothing.

Returns
void

Definition at line 408 of file Maildir.php.

409  {
410  return true;
411  }

◆ removeMessage()

removeMessage (   $id)

stub for not supported message deletion

Returns
null
Exceptions
Zend_Mail_Storage_Exception
See also
Zend_Mail_Storage_Exception

Definition at line 420 of file Maildir.php.

421  {
425  #require_once 'Zend/Mail/Storage/Exception.php';
426  throw new Zend_Mail_Storage_Exception('maildir is (currently) read-only');
427  }

Field Documentation

◆ $_files

$_files = array()
protected

Definition at line 59 of file Maildir.php.

◆ $_knownFlags

$_knownFlags
staticprotected

◆ $_messageClass

$_messageClass = 'Zend_Mail_Message_File'
protected

Definition at line 53 of file Maildir.php.


The documentation for this class was generated from the following file: