From 5ab74733782cd20d59457d46ec57ec6137564ae4 Mon Sep 17 00:00:00 2001 From: prasad <prasad@vtiger.com> Date: Thu, 1 Mar 2018 22:51:58 +0530 Subject: [PATCH] Fixes #751: Module compatability check should be made only when migrating from pre 7.0.0 --- migrate/index.php | 130 +++++++++++++++++++++++++--------------------- 1 file changed, 71 insertions(+), 59 deletions(-) diff --git a/migrate/index.php b/migrate/index.php index 931d1b8b7..c436d89a1 100644 --- a/migrate/index.php +++ b/migrate/index.php @@ -1,12 +1,12 @@ <?php /* +********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.1 - * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source - * The Initial Developer of the Original Code is vtiger. - * Portions created by vtiger are Copyright (C) vtiger. - * All Rights Reserved. - * ***********************************************************************************/ + * * The contents of this file are subject to the vtiger CRM Public License Version 1.1 + * * ("License"); You may not use this file except in compliance with the License + * * The Original Code is: vtiger CRM Open Source + * * The Initial Developer of the Original Code is vtiger. + * * Portions created by vtiger are Copyright (C) vtiger. + * * All Rights Reserved. + * * ***********************************************************************************/ chdir (dirname(__FILE__) . '/..'); include_once 'vtigerversion.php'; @@ -15,63 +15,75 @@ include_once 'includes/main/WebUI.php'; $errorMessage = $_REQUEST['error']; if (!$errorMessage) { - $extensionStoreInstance = Settings_ExtensionStore_Extension_Model::getInstance(); - $vtigerStandardModules = array( 'Accounts', 'Assets', 'Calendar', 'Campaigns', 'Contacts', 'CustomerPortal', 'Dashboard', 'Emails', 'EmailTemplates', 'Events', 'ExtensionStore', - 'Faq', 'Google', 'HelpDesk', 'Home', 'Import', 'Invoice', 'Leads', 'MailManager', 'Mobile', 'ModComments', 'ModTracker', - 'PBXManager', 'Portal', 'Potentials', 'PriceBooks', 'Products', 'Project', 'ProjectMilestone', 'ProjectTask', 'PurchaseOrder', - 'Quotes', 'RecycleBin', 'Reports', 'Rss', 'SalesOrder', 'ServiceContracts', 'Services', 'SMSNotifier', 'Users', 'Vendors', - 'Webforms', 'Webmails', 'WSAPP'); - $nonPortedExtns = array(); - $moduleModelsList = array(); - $db = PearDatabase::getInstance(); - $result = $db->pquery('SELECT name FROM vtiger_tab WHERE isentitytype != ? AND presence != ? AND trim(name) NOT IN ('.generateQuestionMarks($vtigerStandardModules).')', array(1, 1, $vtigerStandardModules)); - if ($db->num_rows($result)) { - $moduleModelsList = $extensionStoreInstance->getListings(); - } + /* 7.x module compatability check when coming from earlier version */ + if (version_compare($vtiger_current_version, '7.0.0') < 0) { + /* NOTE: Add list-of modules that you own / sure to upgrade later */ + $skipCheckForModules = array(); - $moduleModelsListByName = array(); - $moduleModelsListByLabel = array(); - foreach ($moduleModelsList as $moduleId => $moduleModel) { - if ($moduleModel->get('name') != $moduleModel->get('label')) { - $moduleModelsListByName[$moduleModel->get('name')] = $moduleModel; - } else { - $moduleModelsListByLabel[$moduleModel->get('label')] = $moduleModel; - } - } + $extensionStoreInstance = Settings_ExtensionStore_Extension_Model::getInstance(); + $vtigerStandardModules = array('Accounts', 'Assets', 'Calendar', 'Campaigns', 'Contacts', 'CustomerPortal', + 'Dashboard', 'Emails', 'EmailTemplates', 'Events', 'ExtensionStore', + 'Faq', 'Google', 'HelpDesk', 'Home', 'Import', 'Invoice', 'Leads', + 'MailManager', 'Mobile', 'ModComments', 'ModTracker', + 'PBXManager', 'Portal', 'Potentials', 'PriceBooks', 'Products', 'Project', 'ProjectMilestone', + 'ProjectTask', 'PurchaseOrder', 'Quotes', 'RecycleBin', 'Reports', 'Rss', 'SalesOrder', + 'ServiceContracts', 'Services', 'SMSNotifier', 'Users', 'Vendors', + 'Webforms', 'Webmails', 'WSAPP'); - if ($moduleModelsList) { - while($row = $db->fetch_row($result)) { - $moduleName = $row['name'];//label - if ($moduleName) { - unset($moduleModel); - if (array_key_exists($moduleName, $moduleModelsListByName)) { - $moduleModel = $moduleModelsListByName[$moduleName]; - } else if (array_key_exists($moduleName, $moduleModelsListByLabel)) { - $moduleModel = $moduleModelsListByLabel[$moduleName]; - } + $skipCheckForModules = array_merge($skipCheckForModules, $vtigerStandardModules); - if ($moduleModel) { - $vtigerVersion = $moduleModel->get('vtigerVersion'); - $vtigerMaxVersion = $moduleModel->get('vtigerMaxVersion'); - if (($vtigerVersion && strpos($vtigerVersion, '7.') === false) - && ($vtigerMaxVersion && strpos($vtigerMaxVersion, '7.') === false)) { - $nonPortedExtns[] = $moduleName; - } - } - } - } + $nonPortedExtns = array(); + $moduleModelsList = array(); + $db = PearDatabase::getInstance(); + $result = $db->pquery('SELECT name FROM vtiger_tab WHERE isentitytype != ? AND presence != ? AND trim(name) NOT IN ('.generateQuestionMarks($skipCheckForModules).')', array(1, 1, $skipCheckForModules)); + if ($db->num_rows($result)) { + $moduleModelsList = $extensionStoreInstance->getListings(); + } - if ($nonPortedExtns) { - $portingMessage = 'Following custom modules are not compatible with Vtiger 7. Please disable these modules to proceed.'; - foreach ($nonPortedExtns as $moduleName) { - $portingMessage .= "<li>$moduleName</li>"; - } - $portingMessage .= '</ul>'; - } - } + $moduleModelsListByName = array(); + $moduleModelsListByLabel = array(); + foreach ($moduleModelsList as $moduleId => $moduleModel) { + if ($moduleModel->get('name') != $moduleModel->get('label')) { + $moduleModelsListByName[$moduleModel->get('name')] = $moduleModel; + } else { + $moduleModelsListByLabel[$moduleModel->get('label')] = $moduleModel; + } + } + + if ($moduleModelsList) { + while($row = $db->fetch_row($result)) { + $moduleName = $row['name'];//label + if ($moduleName) { + unset($moduleModel); + if (array_key_exists($moduleName, $moduleModelsListByName)) { + $moduleModel = $moduleModelsListByName[$moduleName]; + } else if (array_key_exists($moduleName, $moduleModelsListByLabel)) { + $moduleModel = $moduleModelsListByLabel[$moduleName]; + } + + if ($moduleModel) { + $vtigerVersion = $moduleModel->get('vtigerVersion'); + $vtigerMaxVersion = $moduleModel->get('vtigerMaxVersion'); + if (($vtigerVersion && strpos($vtigerVersion, '7.') === false) + && ($vtigerMaxVersion && strpos($vtigerMaxVersion, '7.') === false)) { + $nonPortedExtns[] = $moduleName; + } + } + } + } + + if ($nonPortedExtns) { + $portingMessage = 'Following custom modules are not compatible with Vtiger 7. Please disable these modules to proceed.'; + foreach ($nonPortedExtns as $moduleName) { + $portingMessage .= "<li>$moduleName</li>"; + } + $portingMessage .= '</ul>'; + } + } + } } ?> - +<!doctype> <html> <head> <title>Vtiger CRM Setup</title> @@ -205,4 +217,4 @@ if (!$errorMessage) { }); </script> </body> -</html> \ No newline at end of file +</html> -- GitLab