Skip to content
This repository has been archived by the owner on Dec 27, 2023. It is now read-only.

Commit

Permalink
feature(Felamimail/Demodata): import eml into mailFolder
Browse files Browse the repository at this point in the history
  • Loading branch information
Christian Feitl authored and pschuele committed Aug 26, 2021
1 parent 8ebc254 commit 714a5cc
Show file tree
Hide file tree
Showing 3 changed files with 147 additions and 0 deletions.
97 changes: 97 additions & 0 deletions tine20/Felamimail/Import/Eml.php
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;
}
}
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
4 changes: 4 additions & 0 deletions tine20/Tinebase/Frontend/Cli/Abstract.php
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,10 @@ public function createDemoData($_opts = NULL, $checkDependencies = TRUE)
$set = isset($data['set']) ? $data['set'] : null;
$this->_createImportDemoDataFromSet($set);
break;
case "eml":
$import = new Felamimail_Import_Eml();
$import->importEmlEmail();
break;
case "all":
case "":
default:
Expand Down

0 comments on commit 714a5cc

Please sign in to comment.