Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Verified Commit e95e510f authored by Nivesh Krishna's avatar Nivesh Krishna
Browse files

Do not migrate to snappymail

parent 2d444b85
Loading
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ use OCA\EcloudAccounts\Service\LDAPConnectionService;
use OCP\User\Events\BeforeUserDeletedEvent;
use OCP\User\Events\UserChangedEvent;
use OCA\EcloudAccounts\Listeners\UserChangedListener;
use OCA\EcloudAccounts\Listeners\UserAddedToBetaGroupListener;
use OCP\Group\Events\UserAddedEvent;
use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
use OCA\EcloudAccounts\Listeners\BeforeTemplateRenderedListener;
@@ -50,7 +49,6 @@ class Application extends App implements IBootstrap {
	public function register(IRegistrationContext $context): void {
		$context->registerEventListener(BeforeUserDeletedEvent::class, BeforeUserDeletedListener::class);
		$context->registerEventListener(UserChangedEvent::class, UserChangedListener::class);
		$context->registerEventListener(UserAddedEvent::class, UserAddedToBetaGroupListener::class);
		// $context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
	}

+0 −65
Original line number Diff line number Diff line
<?php

declare(strict_types=1);

namespace OCA\EcloudAccounts\Listeners;

use Exception;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Group\Events\UserAddedEvent;
use OCP\IUser;
use OCP\IConfig;
use OCP\ILogger;

class UserAddedToBetaGroupListener implements IEventListener {
	private $config;
	private $logger;

	public function __construct(IConfig $config, ILogger $logger) {
		$this->config = $config;
		$this->logger = $logger;
	}

	public function handle(Event $event): void {
		if (!($event instanceof UserAddedEvent)) {
			return;
		}

		$user = $event->getUser();
		$group = $event->getGroup();

		$betaGroup = $this->config->getSystemValue("beta_group_name");

		if ($group->getGID() !== $betaGroup) {
			return;
		}
		try {
			$this->migrateRainloopData($user);
		} catch (Exception $e) {
			$errorMessage = 'Error while migrating user rainloop data to snappymail';
			$this->logger->error($errorMessage . ': ' . $e->getMessage());
		}
	}

	private function migrateRainloopData(IUser $user): void {
		$username = $user->getUID();
		$userDir = substr($username, 0, 2);
		$email = $user->getEMailAddress();
		$dataDir = rtrim(trim($this->config->getSystemValue('datadirectory', '')), '\\/');
		$snappyDir = "$dataDir/appdata_snappymail/_data_/_default_/storage/cfg/$userDir/$email/";
		$rainloopDir = "$dataDir/rainloop-storage/_data_/_default_/storage/cfg/$userDir/$email";
		
		if (file_exists($snappyDir)) {
			$this->logger->debug("$snappyDir already exists");
			return;
		}
		if (!mkdir($snappyDir, 0755, true)) {
			throw new Exception("Unable to mkdir $snappyDir");
		}
		if (!shell_exec("cp -avr $rainloopDir/* $snappyDir")) {
			throw new Exception("Unable to copy files from $rainloopDir to $snappyDir");
		}
		return;
	}
}