芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/public_html/cloud.pulsehost.co.uk/modules/Mail/Classes/Folder.php
oImapFolder = $oImapFolder; $this->oSubFolders = null; $this->iType = \Aurora\Modules\Mail\Enums\FolderType::Custom; $this->iDeep = 0; $aNamesRaw = explode($this->oImapFolder->Delimiter(), $this->oImapFolder->FullNameRaw()); $this->iNestingLevel = count($aNamesRaw); if (1 === $this->iNestingLevel && 'INBOX' === strtoupper($this->oImapFolder->FullNameRaw())) { $this->iType = \Aurora\Modules\Mail\Enums\FolderType::Inbox; } $this->bSubscribed = $bSubscribed; $this->bExists = $bExists; $this->bAlwaysRefresh = false; } else { throw new \MailSo\Base\Exceptions\InvalidArgumentException(); } } /** * Creates new instance of the object. * * @param \MailSo\Imap\Folder $oImapFolder ImapFolder object. * @param bool $bSubscribed = true. If **true** the folder is subscribed on IMAP server. * @param bool $bExists = true. If **true** the folder exists on IMAP server. * * @return Folder * * @throws \MailSo\Base\Exceptions\InvalidArgumentException */ public static function createInstance($oImapFolder, $bSubscribed = true, $bExists = true) { return new self($oImapFolder, $bSubscribed, $bExists); } /** * Creates new instance of the object which represents folder not present on IMAP. * * @param string $sFullNameRaw Raw full name of the folder. * @param string $sDelimiter Symbol wich is used as delimiter in folder full name on IMAP server. * * @return Folder * * @throws \MailSo\Base\Exceptions\InvalidArgumentException * @throws \MailSo\Base\Exceptions\InvalidArgumentException */ public static function createNonexistentInstance($sFullNameRaw, $sDelimiter) { return self::createInstance( \MailSo\Imap\Folder::NewInstance($sFullNameRaw, $sDelimiter, array('/Noselect')), true, false ); } /** * Returns type of the folder. * * @return int 1 = Inbox; 2 = Sent; 3 = Drafts; 4 = Spam; 5 = Trash; 6 = Quarantine; 9 = System; 10 = Custom; 0 = generic folder. */ public function getType() { return $this->iType; } /** * Returns the depth value of the folder in the folders tree. * * @return int */ public function getNestingLevel() { return $this->iNestingLevel; } /** * Changes type of the folder. * * @param int $iType 1 = Inbox; 2 = Sent; 3 = Drafts; 4 = Spam; 5 = Trash; 6 = Quarantine; 9 = System; 10 = Custom; 0 = generic folder. * * @return Folder */ public function setType($iType) { $this->iType = $iType; return $this; } /** * Returns name of the folder. * * @return string */ public function getName() { return BaseUtils::ConvertEncoding( $this->getRawName(), \MailSo\Base\Enumerations\Charset::UTF_7_IMAP, \MailSo\Base\Enumerations\Charset::UTF_8 ); } /** * Returns full name of the folder. * * @return string */ public function getFullName() { return BaseUtils::ConvertEncoding( $this->getRawFullName(), \MailSo\Base\Enumerations\Charset::UTF_7_IMAP, \MailSo\Base\Enumerations\Charset::UTF_8 ); } /** * Returns name of the folder with encoding used on IMAP level. * * @return string */ public function getRawName() { return $this->oImapFolder->NameRaw(); } /** * Returns full name of the folder with encoding used on IMAP level. * * @return string */ public function getRawFullName() { return $this->oImapFolder->FullNameRaw(); } /** * Returns a character used as delimiter in full names of IMAP folders. * * @return string */ public function getDelimiter() { return $this->oImapFolder->Delimiter(); } /** * Return list of subfolders belonging to the folder. * * @param bool $bCreateIfNull = false. If **true** the collection will be created even if there are no subfolders present. * * @return \Aurora\Modules\Mail\Classes\FolderCollection */ public function getSubFolders($bCreateIfNull = false) { if ($bCreateIfNull && !$this->oSubFolders) { $this->oSubFolders = \Aurora\Modules\Mail\Classes\FolderCollection::createInstance(); } return $this->oSubFolders; } /** * Returns **true** if the folder has at least one subfolder and **false** otherwise. * * @return bool */ public function hasSubFolders() { return $this->oSubFolders && 0 < $this->oSubFolders->Count(); } /** * Returns imap folder status - information about total messages count, unseen messages count and value of uidnext. * * @return mixed */ public function getStatus() { return $this->oImapFolder->GetExtended('STATUS'); } /** * Returns **true** if the folder is subscribed and thus visible in folders tree. * * @return bool */ public function isSubscribed() { return $this->bSubscribed; } /** * Returns **true** if the folder exists on IMAP. * * @return bool */ public function exists() { return $this->bExists; } /** * Returns **true** if the folder can be selected. * * @return bool */ public function isSelectable() { return $this->oImapFolder->IsSelectable() && $this->exists(); } /** * Returns a number which denotes folder type. The value is retrieved using IMAP XLIST extension. * * @return int 1 = Inbox; 2 = Sent; 3 = Drafts; 4 = Spam; 5 = Trash; 6 = Quarantine; 9 = System; 10 = Custom; 0 = generic */ public function getFolderXListType() { $aFlags = $this->oImapFolder->FlagsLowerCase(); $iXListType = \Aurora\Modules\Mail\Enums\FolderType::Custom; if (is_array($aFlags)) { switch (true) { case in_array('\inbox', $aFlags): $iXListType = \Aurora\Modules\Mail\Enums\FolderType::Inbox; break; case in_array('\sent', $aFlags): $iXListType = \Aurora\Modules\Mail\Enums\FolderType::Sent; break; case in_array('\drafts', $aFlags): $iXListType = \Aurora\Modules\Mail\Enums\FolderType::Drafts; break; case in_array('\junk', $aFlags): case in_array('\spam', $aFlags): $iXListType = \Aurora\Modules\Mail\Enums\FolderType::Spam; break; case in_array('\bin', $aFlags): case in_array('\trash', $aFlags): $iXListType = \Aurora\Modules\Mail\Enums\FolderType::Trash; break; case \in_array('\all', $aFlags): case \in_array('\allmail', $aFlags): case \in_array('\archive', $aFlags): $iXListType = \Aurora\Modules\Mail\Enums\FolderType::All; break; } } return $iXListType; } public function toResponseArray($aParameters = array()) { $aExtended = null; $mStatus = $this->getStatus(); if (is_array($mStatus) && isset($mStatus['MESSAGES'], $mStatus['UNSEEN'], $mStatus['UIDNEXT'])) { $aExtended = array( 'MessageCount' => (int) $mStatus['MESSAGES'], 'MessageUnseenCount' => (int) $mStatus['UNSEEN'], 'UidNext' => (string) $mStatus['UIDNEXT'], 'Hash' => Utils::GenerateFolderHash( $this->getRawFullName(), $mStatus['MESSAGES'], $mStatus['UNSEEN'], $mStatus['UIDNEXT'] ) ); } return array( 'Type' => $this->getType(), 'Name' => $this->getName(), 'FullName' => $this->getFullName(), 'FullNameRaw' => $this->getRawFullName(), 'FullNameHash' => md5($this->getRawFullName()), 'Delimiter' => $this->getDelimiter(), 'IsSubscribed' => $this->isSubscribed(), 'IsSelectable' => $this->isSelectable(), 'Exists' => $this->exists(), 'Extended' => $aExtended, 'SubFolders' => \Aurora\System\Managers\Response::GetResponseObject($this->getSubFolders()), 'AlwaysRefresh' => $this->bAlwaysRefresh ); } }