From ecb7afdbac7762b04af2b6d534b9854648b1334f Mon Sep 17 00:00:00 2001 From: satish <satish.dvnk@vtiger.com> Date: Tue, 23 May 2017 12:42:56 +0530 Subject: [PATCH] Migration script update to migrate 6.5 to 7 --- .../modules/Migration/MigrationStep1.tpl | 5 + migrate/index.php | 48 +++++-- modules/Install/models/Utils.php | 2 +- modules/Migration/actions/DisableModules.php | 4 +- modules/Migration/schema/660_to_700.php | 123 +++++++++--------- modules/Migration/views/Index.php | 5 +- 6 files changed, 110 insertions(+), 77 deletions(-) diff --git a/layouts/vlayout/modules/Migration/MigrationStep1.tpl b/layouts/vlayout/modules/Migration/MigrationStep1.tpl index fbf97fbfb..fe614d65f 100644 --- a/layouts/vlayout/modules/Migration/MigrationStep1.tpl +++ b/layouts/vlayout/modules/Migration/MigrationStep1.tpl @@ -50,3 +50,8 @@ </div> </div> </div> +<script> + jQuery(document).ready(function () { + location.reload(); + }); +</script> diff --git a/migrate/index.php b/migrate/index.php index 115429706..931d1b8b7 100644 --- a/migrate/index.php +++ b/migrate/index.php @@ -22,30 +22,52 @@ if (!$errorMessage) { '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)); - while($row = $db->fetch_row($result)) { - $module = $row['name'];//label - if ($module) { - $moduleModelsList = $extensionStoreInstance->findListings($module, 'Extension'); - if ($moduleModelsList) { - foreach ($moduleModelsList as $moduleId => $moduleModel) { + if ($db->num_rows($result)) { + $moduleModelsList = $extensionStoreInstance->getListings(); + } + + $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[] = $module; + $nonPortedExtns[] = $moduleName; } } } } - } - if ($nonPortedExtns) { - $portingMessage = 'Following custom modules are not compatible with Vtiger 7. Please disable these modules to proceed.'; - foreach ($nonPortedExtns as $module) { - $portingMessage .= "<li>$module</li>"; + + 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>'; } - $portingMessage .= '</ul>'; } } ?> diff --git a/modules/Install/models/Utils.php b/modules/Install/models/Utils.php index baa74c9cb..5e6e22d8b 100644 --- a/modules/Install/models/Utils.php +++ b/modules/Install/models/Utils.php @@ -426,7 +426,7 @@ class Install_Utils_Model { require_once('vtlib/Vtiger/Module.php'); require_once('include/utils/utils.php'); - $moduleFolders = array('packages/vtiger/mandatory', 'packages/vtiger/optional'); + $moduleFolders = array('packages/vtiger/mandatory', 'packages/vtiger/optional', 'packages/vtiger/marketplace'); foreach($moduleFolders as $moduleFolder) { if ($handle = opendir($moduleFolder)) { while (false !== ($file = readdir($handle))) { diff --git a/modules/Migration/actions/DisableModules.php b/modules/Migration/actions/DisableModules.php index f04fb9195..701862014 100644 --- a/modules/Migration/actions/DisableModules.php +++ b/modules/Migration/actions/DisableModules.php @@ -14,7 +14,9 @@ class Migration_DisableModules_Action extends Vtiger_Action_Controller { $modulesList = $request->get('modulesList'); if ($modulesList) { $moduleManagerModel = new Settings_ModuleManager_Module_Model(); - $moduleManagerModel->disableModule($modulesList); + foreach ($modulesList as $moduleName) { + $moduleManagerModel->disableModule($moduleName); + } } header('Location: migrate/index.php'); diff --git a/modules/Migration/schema/660_to_700.php b/modules/Migration/schema/660_to_700.php index 05fb66345..4d37e1f5b 100644 --- a/modules/Migration/schema/660_to_700.php +++ b/modules/Migration/schema/660_to_700.php @@ -95,6 +95,22 @@ if(defined('VTIGER_UPGRADE')) { } } + $columns = $db->getColumnNames('vtiger_relatedlists'); + if (!in_array('relationfieldid', $columns)) { + $db->pquery('ALTER TABLE vtiger_relatedlists ADD COLUMN relationfieldid INT(19)', array()); + } + if (!in_array('source', $columns)) { + $db->pquery('ALTER TABLE vtiger_relatedlists ADD COLUMN source VARCHAR(25)', array()); + } + if (!in_array('relationtype', $columns)) { + $db->pquery('ALTER TABLE vtiger_relatedlists ADD COLUMN relationtype VARCHAR(10)', array()); + } + $result = $db->pquery('SELECT relation_id FROM vtiger_relatedlists ORDER BY relation_id DESC LIMIT 1', array()); + $db->pquery('UPDATE vtiger_relatedlists_seq SET id=?', array($db->query_result($result, 0, 'relation_id'))); + + $accountsTabId = getTabId('Accounts'); + $db->pquery('UPDATE vtiger_relatedlists SET name=? WHERE name=? and tabid=?', array('get_merged_list', 'get_dependents_list', $accountsTabId)); + $invoiceModuleInstance = Vtiger_Module::getInstance('Invoice'); $blockInstance = Vtiger_Block::getInstance('LBL_INVOICE_INFORMATION', $invoiceModuleInstance); if ($blockInstance) { @@ -306,22 +322,6 @@ if(defined('VTIGER_UPGRADE')) { $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Faq'), 'Faq', true); } - $columns = $db->getColumnNames('vtiger_relatedlists'); - if (!in_array('relationfieldid', $columns)) { - $db->pquery('ALTER TABLE vtiger_relatedlists ADD COLUMN relationfieldid INT(19)', array()); - } - if (!in_array('source', $columns)) { - $db->pquery('ALTER TABLE vtiger_relatedlists ADD COLUMN source VARCHAR(25)', array()); - } - if (!in_array('relationtype', $columns)) { - $db->pquery('ALTER TABLE vtiger_relatedlists ADD COLUMN relationtype VARCHAR(10)', array()); - } - $result = $db->pquery('SELECT relation_id FROM vtiger_relatedlists ORDER BY relation_id DESC LIMIT 1', array()); - $db->pquery('UPDATE vtiger_relatedlists_seq SET id=?', array($db->query_result($result, 0, 'relation_id'))); - - $accountsTabId = getTabId('Accounts'); - $db->pquery('UPDATE vtiger_relatedlists SET name=? WHERE name=? and tabid=?', array('get_merged_list', 'get_dependents_list', $accountsTabId)); - //Update relation field for existing relation ships $ignoreRelationFieldMapping = array('Emails'); $query = 'SELECT * FROM vtiger_relatedlists ORDER BY tabid '; @@ -586,6 +586,36 @@ if(defined('VTIGER_UPGRADE')) { $fieldInstance->typeofdata = 'I~O'; $blockInstance->addField($fieldInstance); } + unset($fieldInstance); + + $fieldInstance = Vtiger_Field::getInstance('filename', $modCommentsInstance); + if (!$fieldInstance) { + $fieldInstance = new Vtiger_Field(); + $fieldInstance->name = 'filename'; + $fieldInstance->column = 'filename'; + $fieldInstance->label = 'Attachment'; + $fieldInstance->columntype = 'VARCHAR(255)'; + $fieldInstance->table = 'vtiger_modcomments'; + $fieldInstance->typeofdata = 'V~O'; + $fieldInstance->uitype = '61'; + $fieldInstance->presence = '0'; + $blockInstance->addField($fieldInstance); + } + unset($fieldInstance); + + $fieldInstance = Vtiger_Field::getInstance('related_email_id', $modCommentsInstance); + if (!$fieldInstance) { + $fieldInstance = new Vtiger_Field(); + $fieldInstance->name = 'related_email_id'; + $fieldInstance->label = 'Related Email Id'; + $fieldInstance->uitype = 1; + $fieldInstance->column = $fieldInstance->name; + $fieldInstance->columntype = 'INT(11)'; + $fieldInstance->typeofdata = 'I~O'; + $fieldInstance->defaultvalue= 0; + $blockInstance->addField($fieldInstance); + } + unset($fieldInstance); } $internalCommentModules = Vtiger_Functions::getPrivateCommentModules(); @@ -656,16 +686,13 @@ if(defined('VTIGER_UPGRADE')) { $updateQuery = 'UPDATE vtiger_field SET typeofdata=? WHERE fieldname=? AND tabid=?'; $db->pquery($updateQuery, array('T~M', 'time_start', getTabid('Calendar'))); - $result = $db->pquery('SELECT name FROM vtiger_tab WHERE isentitytype=?', array(1)); + $ignoreModules = array('SMSNotifier', 'ModComments'); + $result = $db->pquery('SELECT name FROM vtiger_tab WHERE isentitytype=? AND name NOT IN ('.generateQuestionMarks($ignoreModules).')', array(1, $ignoreModules)); while ($row = $db->fetchByAssoc($result)) { $modules[] = $row['name']; } - $ignoreModules = array('SMSNotifier', 'ModComments'); foreach ($modules as $module) { - if (in_array($module, $ignoreModules)) { - continue; - } $moduleInstance = Vtiger_Module::getInstance($module); if ($moduleInstance) { $fieldInstance = Vtiger_Field::getInstance('source', $moduleInstance); @@ -692,6 +719,7 @@ if(defined('VTIGER_UPGRADE')) { } } } + $projectModule = Vtiger_Module_Model::getInstance('Project'); $emailModule = Vtiger_Module_Model::getInstance('Emails'); $projectModule->setRelatedList($emailModule, 'Emails', 'ADD', 'get_emails'); @@ -1187,39 +1215,6 @@ if(defined('VTIGER_UPGRADE')) { transition_data VARCHAR(1000) NOT NULL)', true); } - $modCommentsInstance = Vtiger_Module::getInstance('ModComments'); - $blockInstance = Vtiger_Block::getInstance('LBL_MODCOMMENTS_INFORMATION', $modCommentsInstance); - if ($blockInstance) { - $fieldInstance = Vtiger_Field::getInstance('filename', $modCommentsInstance); - if (!$fieldInstance) { - $fieldInstance = new Vtiger_Field(); - $fieldInstance->name = 'filename'; - $fieldInstance->column = 'filename'; - $fieldInstance->label = 'Attachment'; - $fieldInstance->columntype = 'VARCHAR(255)'; - $fieldInstance->table = 'vtiger_modcomments'; - $fieldInstance->typeofdata = 'V~O'; - $fieldInstance->uitype = '61'; - $fieldInstance->presence = '0'; - $blockInstance->addField($fieldInstance); - } - unset($fieldInstance); - - $fieldInstance = Vtiger_Field::getInstance('related_email_id', $modCommentsInstance); - if (!$fieldInstance) { - $fieldInstance = new Vtiger_Field(); - $fieldInstance->name = 'related_email_id'; - $fieldInstance->label = 'Related Email Id'; - $fieldInstance->uitype = 1; - $fieldInstance->column = $fieldInstance->name; - $fieldInstance->columntype = 'INT(11)'; - $fieldInstance->typeofdata = 'I~O'; - $fieldInstance->defaultvalue= 0; - $blockInstance->addField($fieldInstance); - } - unset($fieldInstance); - } - //Adding user specific field to Calendar table instead of events table $db->pquery('UPDATE vtiger_field SET tablename=? WHERE tablename=?', array('vtiger_calendar_user_field', 'vtiger_events_user_field')); @@ -1230,16 +1225,12 @@ if(defined('VTIGER_UPGRADE')) { } $ignoreModules = array('SMSNotifier', 'ModComments'); - $modules = array(); - $result = $db->pquery('SELECT name FROM vtiger_tab WHERE isentitytype=?', array(1)); + $result = $db->pquery('SELECT name FROM vtiger_tab WHERE isentitytype=? AND name NOT IN ('.generateQuestionMarks($ignoreModules).')', array(1, $ignoreModules)); while ($row = $db->fetchByAssoc($result)) { $modules[] = $row['name']; } foreach ($modules as $module) { - if (in_array($module, $ignoreModules)) { - continue; - } $moduleUserSpecificTable = Vtiger_Functions::getUserSpecificTableName($module); if (!Vtiger_Utils::CheckTable($moduleUserSpecificTable)) { Vtiger_Utils::CreateTable($moduleUserSpecificTable, @@ -1827,7 +1818,10 @@ if(defined('VTIGER_UPGRADE')) { } } - $db->pquery('ALTER TABLE vtiger_potential ADD converted INT(1) NOT NULL DEFAULT 0', array()); + $columns = $db->getColumnNames('vtiger_potential'); + if (!in_array('converted', $columns)) { + $db->pquery('ALTER TABLE vtiger_potential ADD converted INT(1) NOT NULL DEFAULT 0', array()); + } $Vtiger_Utils_Log = true; $moduleArray = array('Project' => 'LBL_PROJECT_INFORMATION'); @@ -1906,7 +1900,10 @@ if(defined('VTIGER_UPGRADE')) { } if (Vtiger_Utils::CheckTable('vtiger_mailscanner_ids')) { - $db->pquery('ALTER TABLE vtiger_mailscanner_ids ADD COLUMN refids MEDIUMTEXT', array()); + $columns = $db->getColumnNames('vtiger_mailscanner_ids'); + if (!in_array('refids', $columns)) { + $db->pquery('ALTER TABLE vtiger_mailscanner_ids ADD COLUMN refids MEDIUMTEXT', array()); + } $db->pquery('ALTER TABLE vtiger_mailscanner_ids ADD INDEX messageids_crmid_idx(crmid)',array()); } @@ -2218,6 +2215,10 @@ if(defined('VTIGER_UPGRADE')) { } } + if (is_dir('modules/Vtiger/resources')) { + rename('modules/Vtiger/resources', 'modules/Vtiger/resources_650'); + } + //Update existing package modules Install_Utils_Model::installModules(); diff --git a/modules/Migration/views/Index.php b/modules/Migration/views/Index.php index 449391540..8304d97f7 100644 --- a/modules/Migration/views/Index.php +++ b/modules/Migration/views/Index.php @@ -8,7 +8,7 @@ * All Rights Reserved. ************************************************************************************/ -class Migration_Index_View extends Vtiger_Basic_View { +class Migration_Index_View extends Vtiger_View_Controller { function __construct() { parent::__construct(); @@ -49,6 +49,9 @@ class Migration_Index_View extends Vtiger_Basic_View { public function preProcess(Vtiger_Request $request, $display = true) { + $viewer = $this->getViewer($request); + $selectedModule = $request->getModule(); + $viewer->assign('MODULE', $selectedModule); parent::preProcess($request, false); } -- GitLab