Ejemplo n.º 1
0
 public function fetchFolderContent($userid, $folderName, $lastupdate, $type)
 {
     Logger::log("fetching folder: " . $folderName);
     $details = self::$gmailDAO->getGmailAccessDetailsForUser($userid);
     $username = "";
     $password = "";
     foreach ($details as $key => $value) {
         if ($key == 'username') {
             $username = $value;
         } else {
             if ($key == 'password') {
                 $password = $value;
             }
         }
     }
     $inbox = $this->getImapConnection($username, $password, $folderName);
     $tomorrow = date('d-M-Y', mktime(0, 0, 0, date("m", time()), date("d", time()) + 1, date("Y", time())));
     Logger::log("Tomorrow: " . $tomorrow);
     $startDate = date('d-M-Y', mktime(0, 0, 0, date("m", strtotime($lastupdate)), date("d", strtotime($lastupdate)) - 1, date("Y", strtotime($lastupdate))));
     while ($startDate != $tomorrow) {
         try {
             set_time_limit(1800);
             Logger::log("fetching Gmail content for date: " . $startDate);
             $emails = imap_search($inbox, 'ON ' . $startDate);
             if ($emails) {
                 $output = '';
                 Logger::log("Found (" . sizeof($emails) . ") communications [" . $type . "]");
                 rsort($emails);
                 foreach ($emails as $email_number) {
                     set_time_limit(0);
                     $overview = imap_fetch_overview($inbox, $email_number, 0);
                     if ($type == 'sms') {
                         $message = quoted_printable_decode(imap_fetchbody($inbox, $email_number, 1));
                     } else {
                         $dataTxt = EmailUtil::get_part($inbox, $email_number, "TEXT/PLAIN");
                         // GET HTML BODY
                         $dataHtml = EmailUtil::get_part($inbox, $email_number, "TEXT/HTML");
                         if ($dataHtml != "") {
                             $message = $dataHtml;
                             $mailformat = "html";
                         } else {
                             $message = ereg_replace("\n", "<br>", $dataTxt);
                             $mailformat = "text";
                         }
                     }
                     $messageDate = $overview[0]->date;
                     $gmtTimezone = new DateTimeZone('Africa/Johannesburg');
                     $myDateTime = new DateTime($messageDate, $gmtTimezone);
                     $theDate = date('c', $myDateTime->format('U') + 1);
                     $theDate = date('Y-m-d H:i:s', strtotime($theDate));
                     $recipient = quoted_printable_decode($overview[0]->to);
                     $subject = Util::ShortenString(quoted_printable_decode($overview[0]->subject), 250);
                     $from = quoted_printable_decode($overview[0]->from);
                     $dayid = self::$pictureDAO->createDay($userid, $theDate);
                     //Logger::log($messageDate." --- ".$message);
                     //Logger::log($message);
                     try {
                         self::$gmailDAO->saveCommunication($subject, $message, $theDate, $dayid, $from, $type, $recipient);
                     } catch (Exception $e) {
                     }
                 }
             }
         } catch (Exception $e) {
             Logger::log($e->getMessage());
         }
         self::$gmailDAO->updateLastUpdate($userid, $type . "_gmail", date("Y-m-d", strtotime($startDate)));
         $tempDate = mktime(0, 0, 0, date("m", strtotime($startDate)), date("d", strtotime($startDate)) + 1, date("Y", strtotime($startDate)));
         $startDate = date("d-M-Y", $tempDate);
     }
     imap_close($inbox);
 }