exposeMethod('step1'); $this->exposeMethod('step2'); $this->exposeMethod('applyDBChanges'); } public function checkPermission(Vtiger_Request $request){ return true; } public function process(Vtiger_Request $request) { // Override error reporting to production mode version_compare(PHP_VERSION, '5.5.0') <= 0 ? error_reporting(E_WARNING & ~E_NOTICE & ~E_DEPRECATED) : error_reporting(E_WARNING & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT); $mode = $request->getMode(); if(!empty($mode)) { $this->invokeExposedMethod($mode, $request); } } protected function step1(Vtiger_Request $request) { $moduleName = $request->getModule(); $viewer = $this->getViewer($request); $viewer->assign('MODULENAME', $moduleName); $viewer->view('MigrationStep1.tpl', $moduleName); } protected function step2(Vtiger_Request $request){ $moduleName = $request->getModule(); $viewer = $this->getViewer($request); $viewer->assign('MODULE', $moduleName); $viewer->view('MigrationStep2.tpl', $moduleName); } public function preProcess(Vtiger_Request $request, $display = true) { parent::preProcess($request, false); } public function getHeaderCss(Vtiger_Request $request) { $headerCssInstances = array(); $cssFileNames = array( '~/layouts/vlayout/modules/Migration/css/style.css', '~/layouts/vlayout/modules/Migration/css/mkCheckbox.css', '~/libraries/bootstrap/css/bootstrap-responsive.css', '~/libraries/bootstrap/css/bootstrap.min.css', ); $cssInstances = $this->checkAndConvertCssStyles($cssFileNames); $headerCssInstances = array_merge($headerCssInstances, $cssInstances); return $headerCssInstances; } public function getHeaderScripts(Vtiger_Request $request) { $headerScriptInstances = array(); $moduleName = $request->getModule(); $jsFileNames = array( "modules.$moduleName.resources.Index" ); $jsScriptInstances = $this->checkAndConvertJsScripts($jsFileNames); $headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances); return $headerScriptInstances; } public function applyDBChanges(){ $migrationModuleModel = Migration_Module_Model::getInstance(); $getAllowedMigrationVersions = $migrationModuleModel->getAllowedMigrationVersions(); $getDBVersion = str_replace(array('.', ' '),'', $migrationModuleModel->getDBVersion()); $getLatestSourceVersion = str_replace(array('.', ' '),'', $migrationModuleModel->getLatestSourceVersion()); $migrateVersions = array(); foreach($getAllowedMigrationVersions as $getAllowedMigrationVersion) { foreach($getAllowedMigrationVersion as $version => $label) { if(strcasecmp($version, $getDBVersion) == 0 || $reach == 1) { $reach = 1; $migrateVersions[] = $version; } } } $migrateVersions[] = $getLatestSourceVersion; $patchCount = count($migrateVersions); define('VTIGER_UPGRADE', true); for($i=0; $i<$patchCount; $i++){ $filename = "modules/Migration/schema/".$migrateVersions[$i]."_to_".$migrateVersions[$i+1].".php"; if(is_file($filename)) { if(!defined('INSTALLATION_MODE')) { echo "
".$migrateVersions[$i]." ==> ".$migrateVersions[$i+1]." Database changes -- Starts.
"; echo ""; } $_i_statesaved = $i; include($filename); $i = $_i_statesaved; if(!defined('INSTALLATION_MODE')) { echo "
".$migrateVersions[$i]." ==> ".$migrateVersions[$i+1]." Database changes -- Ends.
"; } } else if(isset($migrateVersions[$patchCount+1])){ echo "
There is no Database Changes from ".$migrateVersions[$i]." ==> ".$migrateVersions[$i+1]."
"; } } //update vtiger version in db $migrationModuleModel->updateVtigerVersion(); // To carry out all the necessary actions after migration $migrationModuleModel->postMigrateActivities(); } public static function ExecuteQuery($query, $params){ $adb = PearDatabase::getInstance(); $status = $adb->pquery($query, $params); if(!defined('INSTALLATION_MODE')) { $query = $adb->convert2sql($query, $params); if(is_object($status)) { echo ''.$query.'Success'; } else { echo ''.$query.'Failure'; } } return $status; } public static function insertSelectQuery() { global $adb; $genQueryId = $adb->getUniqueID("vtiger_selectquery"); if ($genQueryId != "") { $iquerysql = "insert into vtiger_selectquery (QUERYID,STARTINDEX,NUMOFOBJECTS) values (?,?,?)"; self::ExecuteQuery($iquerysql, array($genQueryId, 0, 0)); } return $genQueryId; } public static function insertSelectColumns($queryid, $columnname) { if ($queryid != "") { for ($i = 0; $i < count($columnname); $i++) { $icolumnsql = "insert into vtiger_selectcolumn (QUERYID,COLUMNINDEX,COLUMNNAME) values (?,?,?)"; self::ExecuteQuery($icolumnsql, array($queryid, $i, $columnname[$i])); } } } public static function insertReports($queryid, $folderid, $reportname, $description, $reporttype) { if ($queryid != "") { $ireportsql = "insert into vtiger_report (REPORTID,FOLDERID,REPORTNAME,DESCRIPTION,REPORTTYPE,QUERYID,STATE) values (?,?,?,?,?,?,?)"; $ireportparams = array($queryid, $folderid, $reportname, $description, $reporttype, $queryid, 'SAVED'); self::ExecuteQuery($ireportsql, $ireportparams); } } public static function insertReportModules($queryid, $primarymodule, $secondarymodule) { if ($queryid != "") { $ireportmodulesql = "insert into vtiger_reportmodules (REPORTMODULESID,PRIMARYMODULE,SECONDARYMODULES) values (?,?,?)"; self::ExecuteQuery($ireportmodulesql, array($queryid, $primarymodule, $secondarymodule)); } } public static function insertAdvFilter($queryid, $filters) { if ($queryid != "") { $columnIndexArray = array(); foreach ($filters as $i => $filter) { $irelcriteriasql = "insert into vtiger_relcriteria(QUERYID,COLUMNINDEX,COLUMNNAME,COMPARATOR,VALUE) values (?,?,?,?,?)"; self::ExecuteQuery($irelcriteriasql, array($queryid, $i, $filter['columnname'], $filter['comparator'], $filter['value'])); $columnIndexArray[] = $i; } $conditionExpression = implode(' and ', $columnIndexArray); self::ExecuteQuery('INSERT INTO vtiger_relcriteria_grouping VALUES(?,?,?,?)', array(1, $queryid, '', $conditionExpression)); } } /** * Function to transform workflow filter of old look in to new look * @param $conditions * @return */ public static function transformAdvanceFilterToWorkFlowFilter($conditions) { $wfCondition = array(); if(!empty($conditions)) { $previousConditionGroupId = 0; foreach($conditions as $condition) { $fieldName = $condition['fieldname']; $fieldNameContents = explode(' ', $fieldName); if (count($fieldNameContents) > 1) { $fieldName = '('. $fieldName .')'; } $groupId = $condition['groupid']; if (!$groupId) { $groupId = 0; } $groupCondition = 'or'; if ($groupId === $previousConditionGroupId || count($conditions) === 1) { $groupCondition = 'and'; } $joinCondition = 'or'; if (isset ($condition['joincondition'])) { $joinCondition = $condition['joincondition']; } elseif($groupId === 0) { $joinCondition = 'and'; } $value = $condition['value']; switch ($value) { case 'false:boolean' : $value = 0; break; case 'true:boolean' : $value = 1; break; default : $value; break; } $wfCondition[] = array( 'fieldname' => $fieldName, 'operation' => $condition['operation'], 'value' => $value, 'valuetype' => 'rawtext', 'joincondition' => $joinCondition, 'groupjoin' => $groupCondition, 'groupid' => $groupId ); $previousConditionGroupId = $groupId; } } return $wfCondition; } }