/** * @param string $fileName * @param Folder $folder * @param int $flags * @param int $action */ function setFlags($fileName, $folder, $flags, $action) { $path = $this->_changePath($folder->FullName); if (@is_dir($path) && @is_dir($path . '/cur/') && @file_exists($path . '/cur/' . $fileName)) { $xmailFlags = $this->_getXmailFlagsFromFileNameAsArray($fileName); $fileUid = $this->_getUidFromFileName($fileName); $fileSize = filesize($path . '/cur/' . $fileName); if (($flags & MESSAGEFLAGS_Seen) == MESSAGEFLAGS_Seen) { if ($action == ACTION_Set) { $xmailFlags[] = 'S'; } else { $this->_removeXmailFlag($xmailFlags, 'S'); } } if (($flags & MESSAGEFLAGS_Flagged) == MESSAGEFLAGS_Flagged) { if ($action == ACTION_Set) { $xmailFlags[] = 'F'; } else { $this->_removeXmailFlag($xmailFlags, 'F'); } } if (($flags & MESSAGEFLAGS_Deleted) == MESSAGEFLAGS_Deleted) { if ($action == ACTION_Set) { $xmailFlags[] = 'T'; } else { $this->_removeXmailFlag($xmailFlags, 'T'); } } if (($flags & MESSAGEFLAGS_Draft) == MESSAGEFLAGS_Draft) { if ($action == ACTION_Set) { $xmailFlags[] = 'D'; } else { $this->_removeXmailFlag($xmailFlags, 'D'); } } if (($flags & MESSAGEFLAGS_Answered) == MESSAGEFLAGS_Answered) { if ($action == ACTION_Set) { $xmailFlags[] = 'A'; } else { $this->_removeXmailFlag($xmailFlags, 'A'); } } $xmailFlags = array_unique($xmailFlags); sort($xmailFlags); $_sep = ConvertUtils::IsWin() ? '_' : ':'; $newFileName = $fileUid; $newFileName .= $this->_uidSizeD . $fileSize . $_sep . $this->_uidD . implode('', $xmailFlags); if ($newFileName != $fileName) { if (!@rename($path . '/cur/' . $fileName, $path . '/cur/' . $newFileName)) { $this->_log('XMAIL: Can\'t rename file ' . $path . '/cur/' . $fileName . ' -> ' . $path . '/cur/' . $newFileName . ')', LOG_LEVEL_ERROR); } } return true; } else { $this->_log('XMAIL: Wrong filename ' . $path . '/cur/' . $fileName, LOG_LEVEL_ERROR); } return false; }