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