/**
  * @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;
 }