コード例 #1
0
ファイル: User.php プロジェクト: netconstructor/sugarcrm_dev
 /**
  * performs a rudimentary check to verify if a given user has setup personal
  * InboundEmail
  *
  * @return bool
  */
 public function hasPersonalEmail()
 {
     $focus = new InboundEmail();
     $focus->retrieve_by_string_fields(array('group_id' => $this->id));
     return !empty($focus->id);
 }
コード例 #2
0
ファイル: EmailUI.php プロジェクト: jglaine/sugar761-ent
 /**
  * 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) {
         // Collect message IDs for deleting mails from server
         $messageUIDs = array();
         // dealing with a sugar email object, uids are GUIDs
         foreach ($exUids as $id) {
             $email = BeanFactory::getBean('Emails', $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":
                     if (!empty($email->message_uid)) {
                         $messageUIDs[] = $email->message_uid;
                     }
                     $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
         }
         // Do only Mail server call, since we have an array of UIDs
         switch ($type) {
             case "deleted":
                 $ieX = new InboundEmail();
                 $ieX->retrieve_by_string_fields(array('groupfolder_id' => $ieId, 'deleted' => 0));
                 if (!empty($ieX->id) && !$ieX->is_personal) {
                     // function retrieve_by_string_fields doesn't decrypt email_password -> call retrieve to do it
                     $ieX->retrieve($ieX->id);
                     $ieX->deleteMessageOnMailServer(implode($app_strings['LBL_EMAIL_DELIMITER'], $messageUIDs));
                 }
                 break;
             default:
                 break;
         }
     } else {
         /* dealing with IMAP email, uids are IMAP uids */
         global $ie;
         // provided by EmailUIAjax.php
         if (empty($ie)) {
             $ie = BeanFactory::getBean('InboundEmail');
             $ie->disable_row_level_security = true;
         }
         $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
     }
 }