Esempio n. 1
0
 public function executeCron($who_trigger)
 {
     $log = vglobal('log');
     $log->debug('Start executeCron');
     $row = self::getActiveScan();
     if ($row > 0) {
         $log->warn(vtranslate('ERROR_ACTIVE_CRON', 'OSSMailScanner'));
         return vtranslate('ERROR_ACTIVE_CRON', 'OSSMailScanner');
     }
     $OSSMailModel = Vtiger_Record_Model::getCleanInstance('OSSMail');
     $OSSMailScannerModel = Vtiger_Record_Model::getCleanInstance('OSSMailScanner');
     $countEmails = 0;
     $scanId = 0;
     $accounts = $OSSMailModel->getAccountsList();
     if (!$accounts) {
         $log->warn('There are no accounts to be scanned');
         return false;
     }
     self::setCronStatus('2');
     $scanId = $OSSMailScannerModel->add_scan_history(array('user' => $who_trigger));
     foreach ($OSSMailModel->getAccountsList() as $account) {
         $log->debug('Start checking account: ' . $account['username']);
         foreach ($OSSMailScannerModel->getConfigFolderList() as $key => $folders) {
             if ($folders != null) {
                 $folderArray = array();
                 if (strpos($folders, ',')) {
                     $folderArray = explode(",", $folders);
                 } else {
                     $folderArray[0] = $folders;
                 }
                 foreach ($folderArray as $folder) {
                     $log->debug('Start checking folder: ' . $folder);
                     $mbox = $OSSMailModel->imapConnect($account['username'], $account['password'], $account['mail_host'], $folder, false);
                     if (!$mbox) {
                         $log->fatal('Incorrect mail access data: ' . $account['username']);
                         continue;
                     }
                     $countEmails = $OSSMailScannerModel->mail_Scan($mbox, $account, $folder, $scanId, $countEmails);
                     imap_close($mbox);
                     if ($countEmails >= PerformancePrefs::get('NUMBERS_EMAILS_DOWNLOADED_DURING_ONE_SCANNING')) {
                         $log->warn('Reached the maximum number of scanned mails');
                         $OSSMailScannerModel->update_scan_history($scanId, ['status' => '0', 'count' => $countEmails, 'action' => 'Action_CronMailScanner']);
                         self::setCronStatus('1');
                         return 'ok';
                     }
                 }
             }
         }
     }
     $OSSMailScannerModel->update_scan_history($scanId, ['status' => '0', 'count' => $countEmails, 'action' => 'Action_CronMailScanner']);
     self::setCronStatus('1');
     $log->debug('End executeCron');
     return 'ok';
 }
Esempio n. 2
0
 public function executeCron($who_trigger)
 {
     $row = self::getActiveScan();
     if ($row > 0) {
         return vtranslate('ERROR_ACTIVE_CRON', 'OSSMailScanner');
     }
     $OSSMailModel = Vtiger_Record_Model::getCleanInstance('OSSMail');
     $OSSMailScannerModel = Vtiger_Record_Model::getCleanInstance('OSSMailScanner');
     $countEmails = 0;
     $scanId = 0;
     $accounts = $OSSMailModel->getAccountsList();
     if (!$accounts) {
         return false;
     }
     self::setCronStatus('2');
     $scanId = $OSSMailScannerModel->add_scan_history(array('user' => $who_trigger));
     foreach ($OSSMailModel->getAccountsList() as $account) {
         foreach ($OSSMailScannerModel->getConfigFolderList() as $key => $folders) {
             if ($folders != null) {
                 $folderArray = array();
                 if (strpos($folders, ',')) {
                     $folderArray = explode(",", $folders);
                 } else {
                     $folderArray[0] = $folders;
                 }
                 foreach ($folderArray as $folder) {
                     $mbox = $OSSMailModel->imap_connect($account['username'], $account['password'], $folder);
                     $countEmails = $OSSMailScannerModel->mail_Scan($mbox, $account, $folder, $scanId, $countEmails);
                     imap_close($mbox);
                     if ($countEmails >= PerformancePrefs::get('NUMBERS_EMAILS_DOWNLOADED_DURING_ONE_SCANNING')) {
                         $OSSMailScannerModel->update_scan_history($scanId, ['status' => '0', 'count' => $countEmails, 'action' => 'Action_CronMailScanner']);
                         self::setCronStatus('1');
                         return 'ok';
                     }
                 }
             }
         }
     }
     $OSSMailScannerModel->update_scan_history($scanId, ['status' => '0', 'count' => $countEmails, 'action' => 'Action_CronMailScanner']);
     self::setCronStatus('1');
     return 'ok';
 }