/** * get db object by record * @param row * @return TahScan object */ public function mapRow($row) { $object = new Inbox(); $object->setId($row['id']); $object->setParentId($row['parent_id']); $object->setFromEmail($row['from_email']); $object->setToEmail($row['to_email']); $object->setFromName($row['from_name']); $object->setToName($row['to_name']); $object->setSubject($row['subject']); $object->setBodySnippet($row['body_snippet']); $object->setEmailCreateTime(strtotime($row['email_create_time'])); $object->setMessageId($row['message_id']); $object->setReferenceMessageIds($row['reference_message_ids']); $object->setProperties(unserialize($row['properties'])); return $object; }
/** * */ private function makeInbox($info) { $heads = \Ydin\ArrayKit\Dot::factory($info['headers']); if (false !== strstr($heads('from'), '<')) { // has name $fromName = strip_tags($heads('from')); $fromEmail = trim(strstr($heads('from'), '<'), '<>'); } else { $fromName = ''; $fromEmail = $heads('from'); } if (false !== strstr($heads('to'), '<')) { // has name $toName = strip_tags($heads('to')); $toEmail = trim(strstr($heads('to'), '<'), '<>'); } else { $toName = ''; $toEmail = $heads('to'); } $inbox = new \Inbox(); $inbox->setMessageId($heads('message-id')); $inbox->setReferenceMessageIds($heads('references')); $inbox->setFromEmail($fromEmail); $inbox->setToEmail($toEmail); $inbox->setFromName($fromName); $inbox->setToName($toName); $inbox->setSubject($heads('subject')); $date = $this->timezoneConvert($heads('date'), 'UTC', conf('app.timezone')); $inbox->setEmailCreateTime(strtotime($date)); $inbox->setProperty('googleMessageId', $info['googleMessageId']); $inbox->setProperty('headers', $info['headers']); $inbox->setProperty('data', $info['data']); if ($info['body']) { $inbox->setBodySnippet($info['body']); } /* foreach ($info['data'] as $item) { if ( 'text/plain' === $item['mimeType'] && isset($item['content']) ) { $inbox->setBodySnippet($item['content']); } } */ $referenceMessageIds = $inbox->getReferenceMessageIds(); if (!$referenceMessageIds) { $parentId = 0; } else { $tmp = explode(" ", $referenceMessageIds); $firstReferenceMessageId = $tmp[0]; $inboxes = new \Inboxes(); $theInbox = $inboxes->getInboxByMessageId($firstReferenceMessageId); if ($theInbox) { $parentId = $theInbox->getId(); } else { // 找不到 message id, 這可能是一個大問題 // 但也有可能只是一個小問題 -> 新信件 比 舊信件 先被匯入 // 之後需要想辦法重新串起來 $parentId = -1; } } $inbox->setParentId($parentId); return $inbox; }