This repository has been archived by the owner on Dec 27, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feature(Felamimail/Demodata): import eml into mailFolder
- Loading branch information
Showing
3 changed files
with
147 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
<?php | ||
/** | ||
* Tine 2.0 | ||
* | ||
* @package Felamimail | ||
* @subpackage Import | ||
* @license http://www.gnu.org/licenses/agpl.html AGPL Version 3 | ||
* @author Christian Feitl<c.feitl@metaways.de> | ||
* @copyright Copyright (c) 2020 Metaways Infosystems GmbH (http://www.metaways.de) | ||
*/ | ||
|
||
/** | ||
* Import class for the Felamimail | ||
* | ||
* @package Felamimail | ||
* @subpackage Import | ||
*/ | ||
class Felamimail_Import_Eml | ||
{ | ||
|
||
|
||
public function importEmlEmail($password = null) | ||
{ | ||
$importDir = dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR | ||
. 'Felamimail' . DIRECTORY_SEPARATOR . 'Setup' . DIRECTORY_SEPARATOR . 'DemoData' . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'Message'; | ||
|
||
$result = $this->_dirToArray($importDir); | ||
$importUserCsv = dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'Admin' . DIRECTORY_SEPARATOR . 'Setup' | ||
. DIRECTORY_SEPARATOR . 'DemoData' . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'User'; | ||
$files = array_diff(scandir($importUserCsv), array('..', '.')); | ||
$rows = []; | ||
foreach ($files as $file) { | ||
$open = fopen($importUserCsv . DIRECTORY_SEPARATOR . $file, 'r'); | ||
while (($row = fgetcsv($open)) !== false) { | ||
$rows[$row[2]]= $row[3]; | ||
} | ||
} | ||
|
||
foreach ($result as $userName => $folders) { | ||
// get User | ||
try { | ||
$user = Tinebase_User::getInstance()->getFullUserByLoginName($userName); | ||
$account = Admin_Controller_EmailAccount::getInstance()->getSystemAccount($user->getId()); | ||
|
||
$emailUserBackend = Tinebase_EmailUser::getInstance(Tinebase_Config::IMAP); | ||
$emailUser = Tinebase_EmailUser_XpropsFacade::getEmailUserFromRecord($user); | ||
// always set defined username | ||
$account->user = $emailUserBackend->getLoginName($emailUser->getId(), $account->email, $account->email); | ||
|
||
|
||
//load user password | ||
if($password) { | ||
$account->password = $password; | ||
} else { | ||
$account->password = array_key_exists($userName, $rows)? $rows[$userName]: ''; | ||
} | ||
foreach ($folders as $folder => $files) { | ||
// create/get folder | ||
try { | ||
$mailFolder = Felamimail_Controller_Folder::getInstance()->getByBackendAndGlobalName($account, $folder); | ||
} catch (Exception $e) { | ||
//log folder not exist | ||
$mailFolder = Felamimail_Controller_Folder::getInstance()->create($account, $folder); | ||
} | ||
$mailFolder->account_id = $account; | ||
foreach ($files as $file) { | ||
// import all emls (before twig) | ||
$message = fopen($importDir . DIRECTORY_SEPARATOR . $userName . DIRECTORY_SEPARATOR . $folder . DIRECTORY_SEPARATOR . $file, 'r'); | ||
Felamimail_Controller_Message::getInstance()->appendMessage($mailFolder, $message); | ||
} | ||
} | ||
} catch (Exception $e) { | ||
//user not found | ||
} | ||
} | ||
} | ||
|
||
/** | ||
* @param $_dir | ||
* @return array | ||
*/ | ||
protected function _dirToArray($_dir) | ||
{ | ||
$result = array(); | ||
$cdir = scandir($_dir); | ||
foreach ($cdir as $key => $value) { | ||
if (!in_array($value, array(".", ".."))) { | ||
if (is_dir($_dir . DIRECTORY_SEPARATOR . $value)) { | ||
$result[$value] = $this->_dirToArray($_dir . DIRECTORY_SEPARATOR . $value); | ||
} else { | ||
$result[] = $value; | ||
} | ||
} | ||
} | ||
return $result; | ||
} | ||
} |
46 changes: 46 additions & 0 deletions
46
tine20/Felamimail/Setup/DemoData/import/Message/tine20admin/Inbox/Ausarbeitung.eml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
Return-Path: <p.hartog@metaways.de> | ||
Delivered-To: phartog@metaways.de | ||
Received: from vmail-director01.metaways.net ([10.129.4.2]) | ||
by vmail-imap02.mcs.metaways.net with LMTP id gEpWGzkBpV/WYgAAHd4clg | ||
for <phartog@metaways.de>; Fri, 06 Nov 2020 08:54:33 +0100 | ||
Received: from vmail-smtp01.metaways.net ([10.129.4.2]) | ||
by vmail-director01.metaways.net with LMTP id iJkYGzkBpV87cwAAVAXrKg | ||
; Fri, 06 Nov 2020 08:54:33 +0100 | ||
Received: from localhost (ext-mw-services.metaways.net [109.232.173.9]) | ||
by vmail-smtp01.metaways.net (Postfix) with ESMTPSA id 0D95F1F65B | ||
for <p.hartog@metaways.de>; Fri, 6 Nov 2020 08:54:33 +0100 (CET) | ||
Subject: Ausarbeitung | ||
From: "Paul Hartog" <p.hartog@metaways.de> | ||
To: p.hartog@metaways.de | ||
User-Agent: Tine 2.0 Email Client (version 2021.11 - 2021.11.1~alpha1mw5) | ||
Organization: Metaways Infosystems GmbH | ||
Message-Id: <7d9c733e7ed37149a8c080fb0b7af2e630a9963f@metaways.de> | ||
X-MailGenerator: Tine 2.0 | ||
Date: Fri, 06 Nov 2020 07:54:32 +0000 | ||
Content-Type: multipart/alternative; | ||
boundary="=_9edb838a77affc539ff7fa6c09b9d083" | ||
MIME-Version: 1.0 | ||
|
||
--=_9edb838a77affc539ff7fa6c09b9d083 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: quoted-printable | ||
Moin Carl-Heinz, | ||
ich hoffe diese Mail findet dich Wohlauf. | ||
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. | ||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. | ||
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. | ||
Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. | ||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. | ||
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. | ||
Liebe Grüße, | ||
Paul |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters