%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/migration/ |
Current File : //www/varak.net/mail2.varak.net_old/migration/contacts.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ // remove the following line for real use exit('remove this line'); require_once dirname(__FILE__).'/../libraries/afterlogic/api.php'; $bReverse = isset($_REQUEST['rev']) ? true : false; $sStorageFrom = 'db'; $sStorageTo = 'sabredav'; if ($bReverse) { $sStorageTmp = $sStorageTo; $sStorageTo = $sStorageFrom; $sStorageFrom = $sStorageTmp; } $iItemsPerPage = 20; $iCurDomainId = -1; $iCurUsersPage = 1; $iCurUserId = 0; /* @var $oApiDomainsManager CApiDomainsManager */ $oApiDomainsManager = CApi::Manager('domains'); /* @var $oApiUsersManager CApiUsersManager */ $oApiUsersManager = CApi::Manager('users'); /* @var $oApiContactsManagerFrom CApiContactsManager */ $oApiContactsManagerFrom = CApi::Manager('maincontacts', $sStorageFrom); /* @var $oApiContactsManagerTo CApiContactsManager */ $oApiContactsManagerTo = CApi::Manager('maincontacts', $sStorageTo); $sFilePath = CApi::DataPath().'/migration'; if (file_exists($sFilePath)) { $handle = fopen($sFilePath, 'r'); $sLine = fgets($handle); $aLine = explode(':', $sLine); if (isset($aLine[0]) && is_numeric($aLine[0])) { $iCurDomainId = (int) $aLine[0]; } if (isset($aLine[1]) && is_numeric($aLine[1])) { $iCurUsersPage = (int) $aLine[1]; } if (isset($aLine[2]) && is_numeric($aLine[2])) { $iCurUserId = (int) $aLine[2]; } } CApi::Log('From storage: ' . $sStorageFrom, ELogLevel::Full, 'migration-'); CApi::Log('To storage: ' . $sStorageTo, ELogLevel::Full, 'migration-'); $aDomains = $oApiDomainsManager->GetFullDomainsList(); $aDomains[0] = array(false, 'Default'); // Default Domain $bFindDomain = false; $bFindUser = false; function GetIdFromList($oItem) { return $oItem->Id; } $iUserCount = 0; $aUsersCache = array(); foreach ($aDomains as $iDomainId => $oDomainItem) { if (!$bFindDomain && $iCurDomainId !== -1 && $iCurDomainId !== $iDomainId) { CApi::Log('Skip domain: ' . $oDomainItem[1], ELogLevel::Full, 'migration-'); continue; } else { $bFindDomain = true; } file_put_contents($sFilePath, $iDomainId . ':' . $iCurUsersPage . ':' . $iCurUserId); CApi::Log('Process domain: ' . $oDomainItem[1], ELogLevel::Full, 'migration-'); $iUsersCount = $oApiUsersManager->GetUserCount($iDomainId); $iPageUserCount = ceil($iUsersCount / $iItemsPerPage); CApi::Log('Users count: ' . $iUsersCount, ELogLevel::Full, 'migration-'); $aUsers = array(); while ($iCurUsersPage - 1 < $iPageUserCount) { file_put_contents($sFilePath, $iDomainId . ':' . $iCurUsersPage . ':' . $iCurUserId); $aUsers = $oApiUsersManager->GetUserList($iDomainId, $iCurUsersPage, $iItemsPerPage); if ($aUsers) { foreach ($aUsers as $aUserItem) { if (in_array($aUserItem[1], $aUsersCache)) { CApi::Log('WARNING: Duplicate user - ' . $aUserItem[1], ELogLevel::Full, 'migration-'); } $aUsersCache[] = $aUserItem[1]; $iUserId = (int) $aUserItem[4]; $iUserCount++; CApi::Log('Process user: ' . $iUserCount . ' - ' . $aUserItem[1], ELogLevel::Full, 'migration-'); if (!$bFindUser && $iCurUserId !== 0 && $iCurUserId !== $iUserId) { CApi::Log('Skip user: ' . $aUserItem[1], ELogLevel::Full, 'migration-'); CApi::Log('--------------------', ELogLevel::Full, 'migration-'); continue; } $bFindUser = true; file_put_contents($sFilePath, $iDomainId . ':' . $iCurUsersPage . ':' . $iUserId); /* @var $aUserListItems array */ $aUserListItems = $oApiContactsManagerFrom->GetContactItemsWithoutOrder($iUserId, 0, 9999); CApi::Log('Contacts count: ' . count($aUserListItems), ELogLevel::Full, 'migration-'); /* @var $oListItem CContactListItem */ foreach ($aUserListItems as $oListItem) { /* @var $oContactTo CContact */ $oContactFrom = $oApiContactsManagerTo->GetContactByStrId($iUserId, $oListItem->Id); if (!$oContactFrom) { $oContactTo = $oApiContactsManagerFrom->GetContactById($iUserId, $oListItem->Id); if ($bReverse) { $oContactTo = $oApiContactsManagerFrom->GetContactByStrId($iUserId, $oListItem->Id); } $oContactTo->IdContact = ''; if (empty($oContactTo->FullName)) { $oContactTo->FullName = $oContactTo->FirstName . ' ' . $oContactTo->LastName; } /* if (0 < count($oContact->GroupsIds)) { foreach ($oContact->GroupsIds as $sGroupId) { $oGroup = $oApiContactsManagerTo->GetGroupById($iUserId, (string) $sGroupId); } } */ $oContactTo->GroupsIds = array(); CApi::Log('Add contact: ' . $oListItem->Id, ELogLevel::Full, 'migration-'); $oContactTo->__SKIP_VALIDATE__ = true; $oApiContactsManagerTo->CreateContact($oContactTo); unset($oContactTo); } else { CApi::Log('Skip contact: ' . $oListItem->Id, ELogLevel::Full, 'migration-'); } set_time_limit(30); } CApi::Log('--------------------', ELogLevel::Full, 'migration-'); } } $iCurUsersPage++; } $iCurUsersPage = 0; }