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

Public Member Functions

 __construct ($params)
 
 getFolders ($rootFolder=null)
 
 selectFolder ($globalName)
 
 getCurrentFolder ()
 
- Public Member Functions inherited from Zend_Mail_Storage_Maildir
 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

 _buildFolderTree ()
 
- Protected Member Functions inherited from Zend_Mail_Storage_Maildir
 _getFileData ($id, $field=null)
 
 _isMaildir ($dirname)
 
 _openMaildir ($dirname)
 
 _getMaildirFiles ($dh, $dirname, $default_flags=array())
 

Protected Attributes

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

Additional Inherited Members

- Static Protected Attributes inherited from Zend_Mail_Storage_Maildir
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 rootdir of maildir structure
  • delim delim char for folder structur, default is '.'
  • folder intial selected folder, default is 'INBOX'
Parameters
array$paramsmail reader specific parameters
Exceptions
Zend_Mail_Storage_Exception
See also
Zend_Mail_Storage_Exception

Definition at line 83 of file Maildir.php.

84  {
85  if (is_array($params)) {
86  $params = (object)$params;
87  }
88 
89  if (!isset($params->dirname) || !is_dir($params->dirname)) {
93  #require_once 'Zend/Mail/Storage/Exception.php';
94  throw new Zend_Mail_Storage_Exception('no valid dirname given in params');
95  }
96 
97  $this->_rootdir = rtrim($params->dirname, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
98 
99  $this->_delim = isset($params->delim) ? $params->delim : '.';
100 
101  $this->_buildFolderTree();
102  $this->selectFolder(!empty($params->folder) ? $params->folder : 'INBOX');
103  $this->_has['top'] = true;
104  $this->_has['flags'] = true;
105  }
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
Definition: website.php:18

Member Function Documentation

◆ _buildFolderTree()

_buildFolderTree ( )
protected

find all subfolders and mbox files for folder structure

Result is save in Zend_Mail_Storage_Folder instances with the root in $this->_rootFolder. $parentFolder and $parentGlobalName are only used internally for recursion.

Returns
null
Exceptions
Zend_Mail_Storage_Exception
See also
Zend_Mail_Storage_Exception
Zend_Mail_Storage_Exception
Zend_Mail_Storage_Exception

Definition at line 116 of file Maildir.php.

117  {
118  $this->_rootFolder = new Zend_Mail_Storage_Folder('/', '/', false);
119  $this->_rootFolder->INBOX = new Zend_Mail_Storage_Folder('INBOX', 'INBOX', true);
120 
121  $dh = @opendir($this->_rootdir);
122  if (!$dh) {
126  #require_once 'Zend/Mail/Storage/Exception.php';
127  throw new Zend_Mail_Storage_Exception("can't read folders in maildir");
128  }
129  $dirs = array();
130  while (($entry = readdir($dh)) !== false) {
131  // maildir++ defines folders must start with .
132  if ($entry[0] != '.' || $entry == '.' || $entry == '..') {
133  continue;
134  }
135  if ($this->_isMaildir($this->_rootdir . $entry)) {
136  $dirs[] = $entry;
137  }
138  }
139  closedir($dh);
140 
141  sort($dirs);
142  $stack = array(null);
143  $folderStack = array(null);
144  $parentFolder = $this->_rootFolder;
145  $parent = '.';
146 
147  foreach ($dirs as $dir) {
148  do {
149  if (strpos($dir, $parent) === 0) {
150  $local = substr($dir, strlen($parent));
151  if (strpos($local, $this->_delim) !== false) {
155  #require_once 'Zend/Mail/Storage/Exception.php';
156  throw new Zend_Mail_Storage_Exception('error while reading maildir');
157  }
158  array_push($stack, $parent);
159  $parent = $dir . $this->_delim;
160  $folder = new Zend_Mail_Storage_Folder($local, substr($dir, 1), true);
161  $parentFolder->$local = $folder;
162  array_push($folderStack, $parentFolder);
163  $parentFolder = $folder;
164  break;
165  } else if ($stack) {
166  $parent = array_pop($stack);
167  $parentFolder = array_pop($folderStack);
168  }
169  } while ($stack);
170  if (!$stack) {
174  #require_once 'Zend/Mail/Storage/Exception.php';
175  throw new Zend_Mail_Storage_Exception('error while reading maildir');
176  }
177  }
178  }

◆ getCurrentFolder()

getCurrentFolder ( )

get Zend_Mail_Storage_Folder instance for current folder

Returns
Zend_Mail_Storage_Folder instance of current folder
Exceptions
Zend_Mail_Storage_Exception

Implements Zend_Mail_Storage_Folder_Interface.

Definition at line 261 of file Maildir.php.

262  {
263  return $this->_currentFolder;
264  }

◆ getFolders()

getFolders (   $rootFolder = null)

get root folder or given folder

Parameters
string$rootFolderget folder structure for given folder, else root
Returns
Zend_Mail_Storage_Folder root or wanted folder
Exceptions
Zend_Mail_Storage_Exception
See also
Zend_Mail_Storage_Exception

Implements Zend_Mail_Storage_Folder_Interface.

Definition at line 187 of file Maildir.php.

188  {
189  if (!$rootFolder || $rootFolder == 'INBOX') {
190  return $this->_rootFolder;
191  }
192 
193  // rootdir is same as INBOX in maildir
194  if (strpos($rootFolder, 'INBOX' . $this->_delim) === 0) {
195  $rootFolder = substr($rootFolder, 6);
196  }
197  $currentFolder = $this->_rootFolder;
198  $subname = trim($rootFolder, $this->_delim);
199  while ($currentFolder) {
200  @list($entry, $subname) = @explode($this->_delim, $subname, 2);
201  $currentFolder = $currentFolder->$entry;
202  if (!$subname) {
203  break;
204  }
205  }
206 
207  if ($currentFolder->getGlobalName() != rtrim($rootFolder, $this->_delim)) {
211  #require_once 'Zend/Mail/Storage/Exception.php';
212  throw new Zend_Mail_Storage_Exception("folder $rootFolder not found");
213  }
214  return $currentFolder;
215  }

◆ selectFolder()

selectFolder (   $globalName)

select given folder

folder must be selectable!

Parameters
Zend_Mail_Storage_Folder | string$globalNameglobal name of folder or instance for subfolder
Returns
null
Exceptions
Zend_Mail_Storage_Exception
See also
Zend_Mail_Storage_Exception
Zend_Mail_Storage_Exception

Implements Zend_Mail_Storage_Folder_Interface.

Definition at line 226 of file Maildir.php.

227  {
228  $this->_currentFolder = (string)$globalName;
229 
230  // getting folder from folder tree for validation
231  $folder = $this->getFolders($this->_currentFolder);
232 
233  try {
234  $this->_openMaildir($this->_rootdir . '.' . $folder->getGlobalName());
235  } catch(Zend_Mail_Storage_Exception $e) {
236  // check what went wrong
237  if (!$folder->isSelectable()) {
241  #require_once 'Zend/Mail/Storage/Exception.php';
242  throw new Zend_Mail_Storage_Exception("{$this->_currentFolder} is not selectable", 0, $e);
243  }
244  // seems like file has vanished; rebuilding folder tree - but it's still an exception
245  $this->_buildFolderTree($this->_rootdir);
249  #require_once 'Zend/Mail/Storage/Exception.php';
250  throw new Zend_Mail_Storage_Exception('seems like the maildir has vanished, I\'ve rebuild the ' .
251  'folder tree, search for an other folder and try again', 0, $e);
252  }
253  }
getFolders($rootFolder=null)
Definition: Maildir.php:187

Field Documentation

◆ $_currentFolder

$_currentFolder
protected

Definition at line 65 of file Maildir.php.

◆ $_delim

$_delim
protected

Definition at line 71 of file Maildir.php.

◆ $_rootdir

$_rootdir
protected

Definition at line 59 of file Maildir.php.

◆ $_rootFolder

$_rootFolder
protected

Definition at line 53 of file Maildir.php.


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