Exemplo n.º 1
0
 public static function DataSync($paramUserId = 0)
 {
     $exchangeScheme = COption::GetOptionString("dav", "exchange_scheme", "http");
     $exchangeServer = COption::GetOptionString("dav", "exchange_server", "");
     $exchangePort = COption::GetOptionString("dav", "exchange_port", "80");
     $exchangeUsername = COption::GetOptionString("dav", "exchange_username", "");
     $exchangePassword = COption::GetOptionString("dav", "exchange_password", "");
     if (empty($exchangeServer)) {
         CAgent::RemoveAgent("CDavExchangeMail::DataSync();", "dav");
         COption::SetOptionString("dav", "agent_mail", "N");
         return "";
     }
     $exchange = new CDavExchangeMail($exchangeScheme, $exchangeServer, $exchangePort, $exchangeUsername, $exchangePassword);
     //$exchange->Debug();
     $exchangeMailbox = COption::GetOptionString("dav", "exchange_mailbox", "");
     $exchangeUseLogin = COption::GetOptionString("dav", "exchange_use_login", "Y");
     self::InitUserEntity();
     $maxNumber = 5;
     $index = 0;
     $paramUserId = intval($paramUserId);
     $arUserFilter = array("ACTIVE" => "Y", "!UF_DEPARTMENT" => false);
     if ($paramUserId > 0) {
         $arUserFilter["ID_EQUAL_EXACT"] = $paramUserId;
     }
     if ($exchangeUseLogin == "N") {
         $arUserFilter["!UF_BXDAVEX_MAILBOX"] = false;
     }
     $dbUserList = CUser::GetList($by = "UF_BXDAVEX_MLSYNC", $order = "asc", $arUserFilter, array('SELECT' => array('UF_BXDAVEX_MAILBOX', 'UF_BXDAVEX_MLSYNC'), 'FIELDS' => array('ID', 'LOGIN')));
     while ($arUser = $dbUserList->Fetch()) {
         $index++;
         if ($index > $maxNumber) {
             break;
         }
         $GLOBALS["USER_FIELD_MANAGER"]->Update("USER", $arUser["ID"], array("UF_BXDAVEX_MLSYNC" => ConvertTimeStamp(time(), FULL)));
         $mailbox = $exchangeUseLogin == "Y" ? $arUser["LOGIN"] . $exchangeMailbox : $arUser["UF_BXDAVEX_MAILBOX"];
         if (empty($mailbox)) {
             continue;
         }
         $numberOfUnread = 0;
         $arInbox = $exchange->GetFolderById(array("XML_ID" => "inbox", "Mailbox" => $mailbox));
         if (is_array($arInbox)) {
             foreach ($arInbox as $inbox) {
                 if (isset($inbox["UNREAD_COUNT"])) {
                     $numberOfUnread += intval($inbox["UNREAD_COUNT"]);
                 }
                 $arInbox1 = $exchange->GetFoldersList(array("XML_ID" => $inbox["XML_ID"], "Mailbox" => $mailbox));
                 if (is_array($arInbox1)) {
                     foreach ($arInbox1 as $inbox1) {
                         if (isset($inbox1["UNREAD_COUNT"])) {
                             $numberOfUnread += intval($inbox1["UNREAD_COUNT"]);
                         }
                     }
                 }
             }
         }
         $GLOBALS["USER_FIELD_MANAGER"]->Update("USER", $arUser["ID"], array("UF_UNREAD_MAIL_COUNT" => $numberOfUnread));
         CUserCounter::Set($arUser["ID"], 'dav_unread_mail', $numberOfUnread, '**');
     }
     return "CDavExchangeMail::DataSync();";
 }