Mail/Storage/Writable/Maildir.php
Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled with this package in the file LICENSE.txt. It is also available through the world-wide-web at this URL: http://framework.zend.com/license/new-bsd If you did not receive a copy of the license and are unable to obtain it through the world-wide-web, please send an email to [email protected] so we can send you a copy immediately.
- Category
- Zend
- Copyright
- Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
- Package
- Zend_Mail
- Subpackage
- Storage
- Version
- $Id: Maildir.php 24593 2012-01-05 20:35:02Z matthew $
\Zend_Mail_Storage_Writable_Maildir
- Implements
- \Zend_Mail_Storage_Writable_Interface
- Parent(s)
- \Zend_Mail_Storage_Folder_Maildir < \Zend_Mail_Storage_Maildir < \Zend_Mail_Storage_Abstract
- Category
- Zend
- Copyright
- Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
Properties

string $_currentFolder =
- Type
- string
- Inherited_from
- \Zend_Mail_Storage_Folder_Maildir::$$_currentFolder

array $_files = array()data of found message files in maildir dir
Inherited from: \Zend_Mail_Storage_Maildir::$$_files\Zend_Mail_Storage_Folder_Maildir::$$_filesarray()Details- Type
- array
- Inherited_from
- \Zend_Mail_Storage_Maildir::$$_files
- Inherited_from
- \Zend_Mail_Storage_Folder_Maildir::$$_files

array $_has = array('uniqueid' => true, 'delete' => false, 'create' => false, 'top' => false, 'fetchPart' => true, 'flags' => false)class capabilities with default values
Inherited from: \Zend_Mail_Storage_Abstract::$$_has\Zend_Mail_Storage_Maildir::$$_has\Zend_Mail_Storage_Folder_Maildir::$$_hasarray('uniqueid' => true, 'delete' => false, 'create' => false, 'top' => false, 'fetchPart' => true, 'flags' => false)Details- Type
- array
- Inherited_from
- \Zend_Mail_Storage_Abstract::$$_has
- Inherited_from
- \Zend_Mail_Storage_Maildir::$$_has
- Inherited_from
- \Zend_Mail_Storage_Folder_Maildir::$$_has

null|int $_iterationMax = nullmaximum iteration position (= message count)
Inherited from: \Zend_Mail_Storage_Abstract::$$_iterationMax\Zend_Mail_Storage_Maildir::$$_iterationMax\Zend_Mail_Storage_Folder_Maildir::$$_iterationMaxnullDetails- Type
- null | int
- Inherited_from
- \Zend_Mail_Storage_Abstract::$$_iterationMax
- Inherited_from
- \Zend_Mail_Storage_Maildir::$$_iterationMax
- Inherited_from
- \Zend_Mail_Storage_Folder_Maildir::$$_iterationMax

int $_iterationPos = 0current iteration position
Inherited from: \Zend_Mail_Storage_Abstract::$$_iterationPos\Zend_Mail_Storage_Maildir::$$_iterationPos\Zend_Mail_Storage_Folder_Maildir::$$_iterationPos0Details- Type
- int
- Inherited_from
- \Zend_Mail_Storage_Abstract::$$_iterationPos
- Inherited_from
- \Zend_Mail_Storage_Maildir::$$_iterationPos
- Inherited_from
- \Zend_Mail_Storage_Folder_Maildir::$$_iterationPos

array $_knownFlags = array('D' => \Zend_Mail_Storage::FLAG_DRAFT, 'F' => \Zend_Mail_Storage::FLAG_FLAGGED, 'P' => \Zend_Mail_Storage::FLAG_PASSED, 'R' => \Zend_Mail_Storage::FLAG_ANSWERED, 'S' => \Zend_Mail_Storage::FLAG_SEEN, 'T' => \Zend_Mail_Storage::FLAG_DELETED)known flag chars in filenames
Inherited from: \Zend_Mail_Storage_Maildir::$$_knownFlags\Zend_Mail_Storage_Folder_Maildir::$$_knownFlagsThis list has to be in alphabetical order for setFlags()
array('D' => \Zend_Mail_Storage::FLAG_DRAFT, 'F' => \Zend_Mail_Storage::FLAG_FLAGGED, 'P' => \Zend_Mail_Storage::FLAG_PASSED, 'R' => \Zend_Mail_Storage::FLAG_ANSWERED, 'S' => \Zend_Mail_Storage::FLAG_SEEN, 'T' => \Zend_Mail_Storage::FLAG_DELETED)Details- Type
- array
- Inherited_from
- \Zend_Mail_Storage_Maildir::$$_knownFlags
- Inherited_from
- \Zend_Mail_Storage_Folder_Maildir::$$_knownFlags

string $_messageClass = 'Zend_Mail_Message_File'used message class, change it in an extened class to extend the returned message class
Inherited from: \Zend_Mail_Storage_Maildir::$$_messageClass\Zend_Mail_Storage_Folder_Maildir::$$_messageClass'Zend_Mail_Message_File'Details- Type
- string
- Inherited_from
- \Zend_Mail_Storage_Maildir::$$_messageClass
- Inherited_from
- \Zend_Mail_Storage_Folder_Maildir::$$_messageClass

\Zend_Mail_Storage_Folder $_rootFolder = Zend_Mail_Storage_Folder root folder for folder structure
Inherited from: \Zend_Mail_Storage_Folder_Maildir::$$_rootFolder- Type
- \Zend_Mail_Storage_Folder
- Inherited_from
- \Zend_Mail_Storage_Folder_Maildir::$$_rootFolder
Methods

__construct(array $params) : voidCreate instance with parameters Additional parameters are (see parent for more): - create if true a new maildir is create if none exists
| Name | Type | Description |
|---|---|---|
| $params | array | mail reader specific parameters |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

__destruct() : voidDestructor calls close() and therefore closes the resource.
Inherited from: \Zend_Mail_Storage_Abstract::__destruct()\Zend_Mail_Storage_Maildir::__destruct()\Zend_Mail_Storage_Folder_Maildir::__destruct()
__get(string $var) : boolGetter for has-properties.
Inherited from: \Zend_Mail_Storage_Abstract::__get()\Zend_Mail_Storage_Maildir::__get()\Zend_Mail_Storage_Folder_Maildir::__get()The standard has properties are: hasFolder, hasUniqueid, hasDelete, hasCreate, hasTop
The valid values for the has-properties are: - true if a feature is supported - false if a feature is not supported - null is it's not yet known or it can't be know if a feature is supported
| Name | Type | Description |
|---|---|---|
| $var | string | property name |
| Type | Description |
|---|---|
| bool | supported or not |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

_buildFolderTree() : nullfind all subfolders and mbox files for folder structure
Inherited from: \Zend_Mail_Storage_Folder_Maildir::_buildFolderTree()Result is save in Zend_Mail_Storage_Folder instances with the root in $this->_rootFolder. $parentFolder and $parentGlobalName are only used internally for recursion.
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

_calculateMaildirsize() : void- See
- \global\http://www.inter7.com/courierimap/README.maildirquota.html

_calculateQuota( $forceRecalc = false) : void| Name | Type | Description |
|---|---|---|
| $forceRecalc |
- See
- \global\http://www.inter7.com/courierimap/README.maildirquota.html

_createTmpFile(string $folder = 'INBOX') : arrayopen a temporary maildir file
makes sure tmp/ exists and create a file with a unique name you should close the returned filehandle!
| Name | Type | Description |
|---|---|---|
| $folder | string | name of current folder without leading . |
| Type | Description |
|---|---|
| array | array('dirname' => dir of maildir folder, 'uniq' => unique id, 'filename' => name of create file 'handle' => file opened for writing) |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

_createUniqueId() : stringcreate a uniqueid for maildir filename
This is nearly the format defined in the maildir standard. The microtime() call should already create a uniqueid, the pid is for multicore/-cpu machine that manage to call this function at the exact same time, and uname() gives us the hostname for multiple machines accessing the same storage.
If someone disables posix we create a random number of the same size, so this method should also work on Windows - if you manage to get maildir working on Windows. Microtime could also be disabled, altough I've never seen it.
| Type | Description |
|---|---|
| string | new uniqueid |

_getFileData(int $id, string | null $field = null) : string | arrayGet one or all fields from file structure.
Inherited from: \Zend_Mail_Storage_Maildir::_getFileData()\Zend_Mail_Storage_Folder_Maildir::_getFileData()Also checks if message is valid
| Name | Type | Description |
|---|---|---|
| $id | int | message number |
| $field | string | null | wanted field |
| Type | Description |
|---|---|
| string | array | wanted field or all fields as array |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

_getInfoString(array $flags) : stringcreate an info string for filenames with given flags
| Name | Type | Description |
|---|---|---|
| $flags | array | wanted flags, with the reference you'll get the set flags with correct key (= char for flag) |
| Type | Description |
|---|---|
| string | info string for version 2 filenames including the leading colon |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

_getMaildirFiles(resource $dh, string $dirname, array $default_flags = array()) : nullfind all files in opened dir handle and add to maildir files
Inherited from: \Zend_Mail_Storage_Maildir::_getMaildirFiles()\Zend_Mail_Storage_Folder_Maildir::_getMaildirFiles()| Name | Type | Description |
|---|---|---|
| $dh | resource | dir handle used for search |
| $dirname | string | dirname of dir in $dh |
| $default_flags | array | default flags for given dir |
| Type | Description |
|---|---|
| null |

_isMaildir(string $dirname) : boolcheck if a given dir is a valid maildir
Inherited from: \Zend_Mail_Storage_Maildir::_isMaildir()\Zend_Mail_Storage_Folder_Maildir::_isMaildir()| Name | Type | Description |
|---|---|---|
| $dirname | string | name of dir |
| Type | Description |
|---|---|
| bool | dir is valid maildir |

_openMaildir(string $dirname) : nullopen given dir as current maildir
Inherited from: \Zend_Mail_Storage_Maildir::_openMaildir()\Zend_Mail_Storage_Folder_Maildir::_openMaildir()| Name | Type | Description |
|---|---|---|
| $dirname | string | name of maildir |
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

appendMessage(string | \Zend_Mail_Message | \Zend_Mime_Message $message, null | string | \Zend_Mail_Storage_Folder $folder = null, null | array $flags = null, $recent = false) : voidappend a new message to mail storage
| Name | Type | Description |
|---|---|---|
| $message | string | \Zend_Mail_Message | \Zend_Mime_Message | message as string or instance of message class |
| $folder | null | string | \Zend_Mail_Storage_Folder | folder for new message, else current folder is taken |
| $flags | null | array | set flags for new message, else a default set is used |
| $recent |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

checkQuota(bool $detailedResponse = false, $forceRecalc = false) : bool | arraycheck if storage is currently over quota
| Name | Type | Description |
|---|---|---|
| $detailedResponse | bool | return known data of quota and current size and message count @see _calculateQuota() |
| $forceRecalc |
| Type | Description |
|---|---|
| bool | array | over quota state or detailed response |

close() : voidClose resource for mail lib.
Inherited from: \Zend_Mail_Storage_Maildir::close()\Zend_Mail_Storage_Folder_Maildir::close()If you need to control, when the resource is closed. Otherwise the destructor would call this.

copyMessage(int $id, string | \Zend_Mail_Storage_Folder $folder) : nullcopy an existing message
| Name | Type | Description |
|---|---|---|
| $id | int | number of message |
| $folder | string | \Zend_Mail_Storage_Folder | name or instance of targer folder |
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

count() : intCountable::count()
Inherited from: \Zend_Mail_Storage_Abstract::count()\Zend_Mail_Storage_Maildir::count()\Zend_Mail_Storage_Folder_Maildir::count()| Type | Description |
|---|---|
| int |

countMessages( $flags = null) : intCount messages all messages in current box
Inherited from: \Zend_Mail_Storage_Maildir::countMessages()\Zend_Mail_Storage_Folder_Maildir::countMessages()| Name | Type | Description |
|---|---|---|
| $flags |
| Type | Description |
|---|---|
| int | number of messages |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

createFolder(string $name, string | \Zend_Mail_Storage_Folder $parentFolder = null) : stringcreate a new folder
This method also creates parent folders if necessary. Some mail storages may restrict, which folder may be used as parent or which chars may be used in the folder name
| Name | Type | Description |
|---|---|---|
| $name | string | global name of folder, local name if $parentFolder is set |
| $parentFolder | string | \Zend_Mail_Storage_Folder | parent folder for new folder, else root folder is parent |
| Type | Description |
|---|---|
| string | only used internally (new created maildir) |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

current() : \Zend_Mail_MessageIterator::current()
Inherited from: \Zend_Mail_Storage_Abstract::current()\Zend_Mail_Storage_Maildir::current()\Zend_Mail_Storage_Folder_Maildir::current()| Type | Description |
|---|---|
| \Zend_Mail_Message | current message |

getCapabilities() : arrayGet a full list of features supported by the specific mail lib and the server
Inherited from: \Zend_Mail_Storage_Abstract::getCapabilities()\Zend_Mail_Storage_Maildir::getCapabilities()\Zend_Mail_Storage_Folder_Maildir::getCapabilities()| Type | Description |
|---|---|
| array | list of features as array(featurename => true|false[|null]) |

getCurrentFolder() : \Zend_Mail_Storage_Folderget Zend_Mail_Storage_Folder instance for current folder
Inherited from: \Zend_Mail_Storage_Folder_Maildir::getCurrentFolder()| Type | Description |
|---|---|
| \Zend_Mail_Storage_Folder | instance of current folder |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

getFolders(string $rootFolder = null) : \Zend_Mail_Storage_Folderget root folder or given folder
Inherited from: \Zend_Mail_Storage_Folder_Maildir::getFolders()| Name | Type | Description |
|---|---|---|
| $rootFolder | string | get folder structure for given folder, else root |
| Type | Description |
|---|---|
| \Zend_Mail_Storage_Folder | root or wanted folder |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

getMessage(int $id) : \Zend_Mail_Message_FileFetch a message
Inherited from: \Zend_Mail_Storage_Maildir::getMessage()\Zend_Mail_Storage_Folder_Maildir::getMessage()| Name | Type | Description |
|---|---|---|
| $id | int | number of message |
| Type | Description |
|---|---|
| \Zend_Mail_Message_File |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

getNumberByUniqueId(string $id) : intget a message number from a unique id
Inherited from: \Zend_Mail_Storage_Maildir::getNumberByUniqueId()\Zend_Mail_Storage_Folder_Maildir::getNumberByUniqueId()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()
| Name | Type | Description |
|---|---|---|
| $id | string | unique id |
| Type | Description |
|---|---|
| int | message number |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

getQuota( $fromStorage = false) : bool | arrayget currently set quota
| Name | Type | Description |
|---|---|---|
| $fromStorage |
| Type | Description |
|---|---|
| bool | array |
- See
- \global\Zend_Mail_Storage_Writable_Maildir::setQuota()

getRawContent(int $id, null | array | string $part = null) : stringGet raw content of message or part
Inherited from: \Zend_Mail_Storage_Maildir::getRawContent()\Zend_Mail_Storage_Folder_Maildir::getRawContent()| Name | Type | Description |
|---|---|---|
| $id | int | number of message |
| $part | null | array | string | path to part or null for messsage content |
| Type | Description |
|---|---|
| string | raw content |

getRawHeader(int $id, null | array | string $part = null, int $topLines = 0) : stringGet raw header of message or part
Inherited from: \Zend_Mail_Storage_Maildir::getRawHeader()\Zend_Mail_Storage_Folder_Maildir::getRawHeader()| Name | Type | Description |
|---|---|---|
| $id | int | number of message |
| $part | null | array | string | path to part or null for messsage header |
| $topLines | int | include this many lines with header (after an empty line) |
| Type | Description |
|---|---|
| string | raw header |

getSize(int | null $id = null) : int | arrayGet a list of messages with number and size
Inherited from: \Zend_Mail_Storage_Maildir::getSize()\Zend_Mail_Storage_Folder_Maildir::getSize()| Name | Type | Description |
|---|---|---|
| $id | int | null | number of message or null for all messages |
| Type | Description |
|---|---|
| int | array | size of given message of list with all messages as array(num => size) |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

getUniqueId(int | null $id = null) : array | stringget unique id for one or all messages
Inherited from: \Zend_Mail_Storage_Maildir::getUniqueId()\Zend_Mail_Storage_Folder_Maildir::getUniqueId()if storage does not support unique ids it's the same as the message number
| Name | Type | Description |
|---|---|---|
| $id | int | null | message number |
| Type | Description |
|---|---|
| array | string | message number for given message or all messages as array |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

initMaildir(string $dir) : nullcreate a new maildir
If the given dir is already a valid maildir this will not fail.
| Name | Type | Description |
|---|---|---|
| $dir | string | directory for the new maildir (may already exist) |
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

key() : intIterator::key()
Inherited from: \Zend_Mail_Storage_Abstract::key()\Zend_Mail_Storage_Maildir::key()\Zend_Mail_Storage_Folder_Maildir::key()| Type | Description |
|---|---|
| int | id of current position |

moveMessage(int $id, string | \Zend_Mail_Storage_Folder $folder) : nullmove an existing message
| Name | Type | Description |
|---|---|---|
| $id | int | number of message |
| $folder | string | \Zend_Mail_Storage_Folder | name or instance of targer folder |
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

next() : voidIterator::next()
Inherited from: \Zend_Mail_Storage_Abstract::next()\Zend_Mail_Storage_Maildir::next()\Zend_Mail_Storage_Folder_Maildir::next()
noop() : voidWaste some CPU cycles doing nothing.
Inherited from: \Zend_Mail_Storage_Maildir::noop()\Zend_Mail_Storage_Folder_Maildir::noop()
offsetExists(int $id) : booleanArrayAccess::offsetExists()
Inherited from: \Zend_Mail_Storage_Abstract::offsetExists()\Zend_Mail_Storage_Maildir::offsetExists()\Zend_Mail_Storage_Folder_Maildir::offsetExists()| Name | Type | Description |
|---|---|---|
| $id | int |
| Type | Description |
|---|---|
| boolean |

offsetGet(int $id) : \Zend_Mail_MessageArrayAccess::offsetGet()
Inherited from: \Zend_Mail_Storage_Abstract::offsetGet()\Zend_Mail_Storage_Maildir::offsetGet()\Zend_Mail_Storage_Folder_Maildir::offsetGet()| Name | Type | Description |
|---|---|---|
| $id | int |
| Type | Description |
|---|---|
| \Zend_Mail_Message | message object |

offsetSet(\id $id, mixed $value) : voidArrayAccess::offsetSet()
Inherited from: \Zend_Mail_Storage_Abstract::offsetSet()\Zend_Mail_Storage_Maildir::offsetSet()\Zend_Mail_Storage_Folder_Maildir::offsetSet()| Name | Type | Description |
|---|---|---|
| $id | \id | |
| $value | mixed |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

offsetUnset(int $id) : booleanArrayAccess::offsetUnset()
Inherited from: \Zend_Mail_Storage_Abstract::offsetUnset()\Zend_Mail_Storage_Maildir::offsetUnset()\Zend_Mail_Storage_Folder_Maildir::offsetUnset()| Name | Type | Description |
|---|---|---|
| $id | int |
| Type | Description |
|---|---|
| boolean | success |

removeFolder(string | \Zend_Mail_Storage_Folder $name) : nullremove a folder
| Name | Type | Description |
|---|---|---|
| $name | string | \Zend_Mail_Storage_Folder | name or instance of folder |
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

removeMessage( $id) : nullstub for not supported message deletion
| Name | Type | Description |
|---|---|---|
| $id |
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

renameFolder(string | \Zend_Mail_Storage_Folder $oldName, string $newName) : nullrename and/or move folder
The new name has the same restrictions as in createFolder()
| Name | Type | Description |
|---|---|---|
| $oldName | string | \Zend_Mail_Storage_Folder | name or instance of folder |
| $newName | string | new global name of folder |
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

rewind() : voidIterator::rewind()
Inherited from: \Zend_Mail_Storage_Abstract::rewind()\Zend_Mail_Storage_Maildir::rewind()\Zend_Mail_Storage_Folder_Maildir::rewind()Rewind always gets the new count from the storage. Thus if you use the interfaces and your scripts take long you should use reset() from time to time.

seek(int $pos) : voidSeekableIterator::seek()
Inherited from: \Zend_Mail_Storage_Abstract::seek()\Zend_Mail_Storage_Maildir::seek()\Zend_Mail_Storage_Folder_Maildir::seek()| Name | Type | Description |
|---|---|---|
| $pos | int |
| Exception | Description |
|---|---|
| \OutOfBoundsException |

selectFolder(\Zend_Mail_Storage_Folder | string $globalName) : null
folder must be selectable!
| Name | Type | Description |
|---|---|---|
| $globalName | \Zend_Mail_Storage_Folder | string | global name of folder or instance for subfolder |
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

setFlags(int $id, array $flags) : voidset flags for message
NOTE: this method can't set the recent flag.
| Name | Type | Description |
|---|---|---|
| $id | int | number of message |
| $flags | array | new flags for message |
| Exception | Description |
|---|---|
| \Zend_Mail_Storage_Exception |

setQuota(bool | array $value) : nullenable/disable quota and set a quota value if wanted or needed
You can enable/disable quota with true/false. If you don't have a MDA or want to enforce a quota value you can also set this value here. Use array('size' => SIZE_QUOTA, 'count' => MAX_MESSAGE) do define your quota. Order of these fields does matter!
| Name | Type | Description |
|---|---|---|
| $value | bool | array | new quota value |
| Type | Description |
|---|---|
| null |

valid() : booleanIterator::valid()
Inherited from: \Zend_Mail_Storage_Abstract::valid()\Zend_Mail_Storage_Maildir::valid()\Zend_Mail_Storage_Folder_Maildir::valid()| Type | Description |
|---|---|
| boolean |