Exemple #1
0
 /**
  * Marks emails with the passed flag type.  This will be applied to local
  * cache files as well as remote emails.
  * @param string $type Flag type
  * @param string $ieId
  * @param string $folder IMAP folder structure or SugarFolder GUID
  * @param string $uids Comma sep list of UIDs or GUIDs
  */
 function markEmails($type, $ieId, $folder, $uids)
 {
     global $app_strings;
     $uids = $this->_cleanUIDList($uids);
     $exUids = explode($app_strings['LBL_EMAIL_DELIMITER'], $uids);
     if (strpos($folder, 'sugar::') !== false) {
         // dealing with a sugar email object, uids are GUIDs
         foreach ($exUids as $id) {
             $email = new Email();
             $email->retrieve($id);
             // BUG FIX BEGIN
             // Bug 50973 - marking unread in group inbox removes message
             if (empty($email->assigned_user_id)) {
                 $email->setFieldNullable('assigned_user_id');
             }
             // BUG FIX END
             switch ($type) {
                 case "unread":
                     $email->status = 'unread';
                     $email->save();
                     break;
                 case "read":
                     $email->status = 'read';
                     $email->save();
                     break;
                 case "deleted":
                     $email->delete();
                     break;
                 case "flagged":
                     $email->flagged = 1;
                     $email->save();
                     break;
                 case "unflagged":
                     $email->flagged = 0;
                     $email->save();
                     break;
             }
             // BUG FIX BEGIN
             // Bug 50973 - reset assigned_user_id field defs
             if (empty($email->assigned_user_id)) {
                 $email->revertFieldNullable('assigned_user_id');
             }
             // BUG FIX END
         }
     } else {
         /* dealing with IMAP email, uids are IMAP uids */
         global $ie;
         // provided by EmailUIAjax.php
         if (empty($ie)) {
             $ie = new InboundEmail();
         }
         $ie->retrieve($ieId);
         $ie->mailbox = $folder;
         $ie->connectMailserver();
         // mark cache files
         if ($type == 'deleted') {
             $ie->deleteMessageOnMailServer($uids);
             $ie->deleteMessageFromCache($uids);
         } else {
             $overviews = $ie->getCacheValueForUIDs($ie->mailbox, $exUids);
             $manipulated = array();
             foreach ($overviews['retArr'] as $k => $overview) {
                 if (in_array($overview->uid, $exUids)) {
                     switch ($type) {
                         case "unread":
                             $overview->seen = 0;
                             break;
                         case "read":
                             $overview->seen = 1;
                             break;
                         case "flagged":
                             $overview->flagged = 1;
                             break;
                         case "unflagged":
                             $overview->flagged = 0;
                             break;
                     }
                     $manipulated[] = $overview;
                 }
             }
             if (!empty($manipulated)) {
                 $ie->setCacheValue($ie->mailbox, array(), $manipulated);
                 /* now mark emails on email server */
                 $ie->markEmails(implode(",", explode($app_strings['LBL_EMAIL_DELIMITER'], $uids)), $type);
             }
         }
         // end not type == deleted
     }
 }
 public function testgetCacheValueForUIDs()
 {
     $inboundEmail = new InboundEmail();
     //test wih default protocol
     $result = $inboundEmail->getCacheValueForUIDs('INBOX', array(1, 2, 3, 4, 5));
     $this->assertTrue(is_array($result));
     $this->assertTrue(is_array($result['uids']));
     $this->assertTrue(is_array($result['retArr']));
     //test wih pop3 protocol
     $inboundEmail->protocol = 'pop3';
     $result = $inboundEmail->getCacheValueForUIDs('INBOX', array(1, 2, 3, 4, 5));
     $this->assertTrue(is_array($result));
     $this->assertTrue(is_array($result['uids']));
     $this->assertTrue(is_array($result['retArr']));
 }