1<?php
2// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
3//
4// All Rights Reserved. See copyright.txt for details and a complete list of authors.
5// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
6// $Id$
7
8if (strpos($_SERVER["SCRIPT_NAME"], basename(__FILE__)) !== false) {
9	header("location: index.php");
10	exit;
11}
12
13/**
14 * Migrate webmail accounts to cypht
15 * @param $installer
16 * @return bool
17 * @throws Exception
18 */
19function upgrade_20190523_migrate_webmail_accounts_tiki($installer)
20{
21	$imap_servers = [];
22	$pop3_servers = [];
23	$smtp_servers = [];
24	$users = [];
25	$webmail_accounts = $installer->fetchAll("SELECT * FROM `tiki_user_mail_accounts`");
26	foreach ($webmail_accounts as $account) {
27		$user = $account['user'];
28		if (! empty($account['imap'])) {
29			$imap_servers[$user][] = [
30				'name' => $account['account'],
31				'server' => $account['imap'],
32				'port' => $account['port'],
33				'tls' => $account['useSSL'] == 'y' ? '1' : '0',
34				'user' => $account['username'],
35				'pass' => $account['pass']
36			];
37		} elseif (! empty($account['pop'])) {
38			$pop3_servers[$user][] = [
39				'name' => $account['account'],
40				'server' => $account['pop'],
41				'port' => $account['port'],
42				'tls' => $account['useSSL'] == 'y' ? '1' : '0',
43				'user' => $account['username'],
44				'pass' => $account['pass']
45			];
46		}
47		if (! empty($account['smtp'])) {
48			$smtp_servers[$user][] = [
49				'name' => $account['account'],
50				'server' => $account['smtp'],
51				'port' => $account['smtpPort'],
52				'tls' => $account['useSSL'] == 'y' ? '1' : '0',
53				'user' => $account['username'],
54				'pass' => $account['pass']
55			];
56		}
57		if (! in_array($user, $users)) {
58			$users[] = $user;
59		}
60	}
61
62	$tikilib = TikiLib::lib('tiki');
63	$tikilib = new TikiLib;
64	foreach ($users as $user) {
65		$data = $tikilib->get_user_preference($user, 'cypht_user_config');
66		if ($data) {
67			$data = json_decode($data, true);
68		} else {
69			$data = [];
70		}
71		$data['imap_servers'] = $imap_servers[$user] ?? [];
72		$data['pop3_servers'] = $pop3_servers[$user] ?? [];
73		$data['smtp_servers'] = $smtp_servers[$user] ?? [];
74		$data = json_encode($data);
75		$tikilib->set_user_preference($user, 'cypht_user_config', $data);
76	}
77
78	$installer->query("DROP TABLE `tiki_user_mail_accounts`");
79	$installer->query("DROP TABLE `tiki_webmail_messages`");
80
81	return true;
82}
83