uid = ''; $application->field_dyn = ''; $application->field_uid = ''; $application->field_name = 'APP_UID'; $application->field_label = 'APP_UID'; $application->field_type = 'VARCHAR'; $application->field_size = 32; $application->field_dyn = ''; $application->field_key = 1; $application->field_index = 1; $application->field_null = 0; $application->field_filter = false; $application->field_autoincrement = false; array_push($defaultColumns, $application); $application = new \stdClass(); //APP_NUMBER $application->uid = ''; $application->field_dyn = ''; $application->field_uid = ''; $application->field_name = 'APP_NUMBER'; $application->field_label = 'APP_NUMBER'; $application->field_type = 'INTEGER'; $application->field_size = 11; $application->field_dyn = ''; $application->field_key = 0; $application->field_null = 0; $application->field_filter = false; $application->field_autoincrement = false; array_push($defaultColumns, $application); $application = new \stdClass(); //APP_STATUS $application->uid = ''; $application->field_dyn = ''; $application->field_uid = ''; $application->field_name = 'APP_STATUS'; $application->field_label = 'APP_STATUS'; $application->field_type = 'VARCHAR'; $application->field_size = 10; $application->field_dyn = ''; $application->field_key = 0; $application->field_null = 0; $application->field_filter = false; $application->field_autoincrement = false; array_push($defaultColumns, $application); //If it is a grid report table if ($type == 'GRID') { //GRID INDEX $gridIndex = new \stdClass(); $gridIndex->uid = ''; $gridIndex->field_dyn = ''; $gridIndex->field_uid = ''; $gridIndex->field_name = 'ROW'; $gridIndex->field_label = 'ROW'; $gridIndex->field_type = 'INTEGER'; $gridIndex->field_size = '11'; $gridIndex->field_dyn = ''; $gridIndex->field_key = 1; $gridIndex->field_null = 0; $gridIndex->field_filter = false; $gridIndex->field_autoincrement = false; array_push($defaultColumns, $gridIndex); } return $defaultColumns; } /** * Populate the data * * @param array $arrayTableData * @param array $tableNameMap * * @return string */ private function __populateData(array $arrayTableData, array $tableNameMap) { try { $errors = ''; foreach ($arrayTableData as $key => $value) { $tableName = $key; $contentData = $value; if (isset($tableNameMap[$tableName])) { $tableName = $tableNameMap[$tableName]; $additionalTable = new \AdditionalTables(); $arrayAdditionalTableData = $additionalTable->loadByName($tableName); if ($arrayAdditionalTableData !== false) { $flagIsPmTable = $arrayAdditionalTableData['PRO_UID'] == ''; if ($flagIsPmTable && !empty($contentData)) { $additionalTable->load($arrayAdditionalTableData['ADD_TAB_UID'], true); $primaryKeys = $additionalTable->getPrimaryKeys(); //Obtain a list of columns $primaryKeyColumn = []; foreach ($contentData as $key => $row) { $primaryKeyColumn[$key] = $row[$primaryKeys[0]['FLD_NAME']]; } array_multisort($primaryKeyColumn, SORT_ASC, $contentData); foreach ($contentData as $row) { $arrayResult = $this->createRecord( [ 'id' => $arrayAdditionalTableData['ADD_TAB_UID'], 'rows' => base64_encode(serialize($row)), ], 'base64' ); if (!$arrayResult['success']) { $errors .= $arrayResult['message']; } } } } } } //Return return $errors; } catch (\Exception $e) { throw $e; } } /** * Create record * * @param array $arrayData * @param string $codification * * @return array */ public function createRecord(array $arrayData, $codification = 'json') { try { $additionalTable = new \AdditionalTables(); $arrayAdditionalTableData = $additionalTable->load($arrayData['id'], true); $additionalTableClassName = $arrayAdditionalTableData['ADD_TAB_CLASS_NAME']; $additionalTableClassPeerName = $additionalTableClassName . 'Peer'; $row = ($codification == 'base64')? unserialize(base64_decode($arrayData['rows'])) : \G::json_decode($arrayData['rows']); $row = (array)($row); $row = array_merge(array_change_key_case($row, CASE_LOWER), array_change_key_case($row, CASE_UPPER)); $flagSave = false; if (!file_exists(PATH_WORKSPACE . 'classes' . PATH_SEP . $additionalTableClassName . '.php')) { throw new Exception(\G::LoadTranslation('ID_PMTABLE_CLASS_DOESNT_EXIST', [$additionalTableClassName])); } require_once(PATH_WORKSPACE . 'classes' . PATH_SEP . $additionalTableClassName . '.php'); if (!empty($row)) { eval('$con = \\Propel::getConnection(' . $additionalTableClassPeerName . '::DATABASE_NAME);'); eval('$obj = new \\' . $additionalTableClassName . '();'); $obj->fromArray($row, \BasePeer::TYPE_FIELDNAME); if ($obj->validate()) { $obj->save(); $primaryKeysValues = []; foreach ($additionalTable->getPrimaryKeys() as $primaryKey) { $method = 'get' . \AdditionalTables::getPHPName($primaryKey['FLD_NAME']); $primaryKeysValues[] = $obj->$method(); } $index = \G::encrypt(implode(',', $primaryKeysValues), 'pmtable'); \G::auditLog( 'AddDataPmtable', 'Table Name: ' . $arrayAdditionalTableData['ADD_TAB_NAME'] . ' Table ID: (' . $arrayAdditionalTableData['ADD_TAB_UID'] . ')' ); $flagSave = true; } else { $msg = ''; foreach ($obj->getValidationFailures() as $objValidationFailure) { $msg .= $objValidationFailure->getMessage() . "\n"; } throw new Exception( \G::LoadTranslation('ID_ERROR_TRYING_INSERT') . '"' . $arrayAdditionalTableData['ADD_TAB_NAME'] . "\"\n" . $msg ); } } else { $flagSave = false; } //Return return [ 'success' => $flagSave, 'message' => ($flagSave)? \G::LoadTranslation('ID_RECORD_SAVED_SUCCESFULLY') : '', 'rows' => ($flagSave)? $obj->toArray(\BasePeer::TYPE_FIELDNAME) : [], 'index' => ($flagSave)? $index : '', ]; } catch (\Exception $e) { throw $e; } } /** * Review the table schema and throw all errors * * @param array $arrayTableSchema * @param string $processUid * @param bool $flagFromAdmin * @param bool $flagOverwrite * @param string $postProUid * * @return array */ public function checkPmtFileThrowErrors( array $arrayTableSchema, $processUid, $flagFromAdmin, $flagOverwrite, $postProUid ) { try { $arrayError = []; //Ask for all Process $processMap = new \processMap(); $arrayProcessUid = []; foreach (\G::json_decode($processMap->getAllProcesses()) as $value) { if ($value->value != '') { $arrayProcessUid[] = $value->value; } } $i = 0; foreach ($arrayTableSchema as $value) { $contentSchema = $value; //The table exists? $additionalTable = new \AdditionalTables(); $arrayAdditionalTableData = $additionalTable->loadByName($contentSchema['ADD_TAB_NAME']); $tableProUid = (isset($contentSchema['PRO_UID']))? $contentSchema['PRO_UID'] : $postProUid; $flagIsPmTable = ($contentSchema['PRO_UID'] == '')? true : false; if ($flagFromAdmin) { if ($flagIsPmTable) { if ($arrayAdditionalTableData !== false && !$flagOverwrite) { $arrayError[$i]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME']; $arrayError[$i]['ERROR_TYPE'] = 1; //ERROR_PM_TABLES_OVERWRITE $arrayError[$i]['ERROR_MESS'] = \G::LoadTranslation('ID_OVERWRITE_PMTABLE', [$contentSchema['ADD_TAB_NAME']]); $arrayError[$i]['IS_PMTABLE'] = $flagIsPmTable; $arrayError[$i]['PRO_UID'] = $tableProUid; } } else { if (!in_array($tableProUid, $arrayProcessUid)) { $arrayError[$i]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME']; $arrayError[$i]['ERROR_TYPE'] = 2; //ERROR_PROCESS_NOT_EXIST $arrayError[$i]['ERROR_MESS'] = \G::LoadTranslation('ID_PROCESS_NOT_EXIST', [$contentSchema['ADD_TAB_NAME']]); $arrayError[$i]['IS_PMTABLE'] = $flagIsPmTable; $arrayError[$i]['PRO_UID'] = $tableProUid; } else { if ($arrayAdditionalTableData !== false && !$flagOverwrite) { $arrayError[$i]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME']; $arrayError[$i]['ERROR_TYPE'] = 3; //ERROR_RP_TABLES_OVERWRITE $arrayError[$i]['ERROR_MESS'] = \G::LoadTranslation('ID_OVERWRITE_RPTABLE', [$contentSchema['ADD_TAB_NAME']]); $arrayError[$i]['IS_PMTABLE'] = $flagIsPmTable; $arrayError[$i]['PRO_UID'] = $tableProUid; } } } } else { if ($flagIsPmTable) { $arrayError[$i]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME']; $arrayError[$i]['ERROR_TYPE'] = 4; //ERROR_NO_REPORT_TABLE $arrayError[$i]['ERROR_MESS'] = \G::LoadTranslation('ID_NO_REPORT_TABLE', [$contentSchema['ADD_TAB_NAME']]); $arrayError[$i]['IS_PMTABLE'] = $flagIsPmTable; $arrayError[$i]['PRO_UID'] = $tableProUid; } else { if ($tableProUid != $processUid) { $arrayError[$i]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME']; $arrayError[$i]['ERROR_TYPE'] = 5; //ERROR_OVERWRITE_RELATED_PROCESS $arrayError[$i]['ERROR_MESS'] = \G::LoadTranslation('ID_OVERWRITE_RELATED_PROCESS', [$contentSchema['ADD_TAB_NAME']]); $arrayError[$i]['IS_PMTABLE'] = $flagIsPmTable; $arrayError[$i]['PRO_UID'] = $tableProUid; } else { if ($arrayAdditionalTableData !== false && !$flagOverwrite) { $arrayError[$i]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME']; $arrayError[$i]['ERROR_TYPE'] = 3; //ERROR_RP_TABLES_OVERWRITE $arrayError[$i]['ERROR_MESS'] = \G::LoadTranslation('ID_OVERWRITE_RPTABLE', [$contentSchema['ADD_TAB_NAME']]); $arrayError[$i]['IS_PMTABLE'] = $flagIsPmTable; $arrayError[$i]['PRO_UID'] = $tableProUid; } } } } $i++; } //Return return $arrayError; } catch (\Exception $e) { throw $e; } } /** * Save structure of table * * @param array $arrayData * @param bool $flagAlterTable * * @return object */ public function saveStructureOfTable($arrayData, $flagAlterTable = true) { $result = new \stdClass(); try { $additionalTableUid = $arrayData['REP_TAB_UID']; $flagNew = 0; $additionalTables = \AdditionalTablesPeer::retrieveByPK($arrayData['REP_TAB_UID']); if (!is_null($additionalTables)){ $arrayData['REP_TAB_NAME'] = 'PMT_' . trim($arrayData['REP_TAB_NAME']); if ($additionalTables->getAddTabName() != $arrayData['REP_TAB_NAME']) { $arrayData['REP_TAB_UID'] = ''; $flagNew = 1; } } ob_start(); $arrayData['PRO_UID'] = trim($arrayData['PRO_UID']); $arrayData['columns'] = \G::json_decode(stripslashes($arrayData['columns'])); //Decofing data columns if ($flagNew == 1) { $arrayNewColumn = []; $counter = 0; foreach ($arrayData['columns'] as $value) { $column = $value; if (!preg_match('/^(?:APP_UID|APP_NUMBER|APP_STATUS|ROW)$/', $column->field_name)) { $column->uid = ''; $column->_index = $counter; $arrayNewColumn[] = $column; $counter++; } } $arrayData['columns'] = $arrayNewColumn; } $additionalTable = new \AdditionalTables(); $repTabClassName = $additionalTable->getPHPName($arrayData['REP_TAB_NAME']); $flagIsReportTable = ($arrayData['PRO_UID'] != '')? true : false; $columns = $arrayData['columns']; //Reserved Words Table $reservedWords = [ 'ALTER', 'CLOSE', 'COMMIT', 'CREATE','DECLARE','DELETE','DROP','FETCH','FUNCTION','GRANT','INDEX', 'INSERT','OPEN','REVOKE','ROLLBACK','SELECT','SYNONYM','TABLE','UPDATE','VIEW','APP_UID','ROW','PMTABLE' ]; //Reserved Words Field $reservedWordsPhp = [ 'case','catch','cfunction','class','clone','const','continue','declare','default','do','else','elseif', 'enddeclare','endfor','endforeach','endif','endswitch','endwhile','extends','final','for','foreach', 'function','global','goto','if','implements','interface','instanceof','private','namespace','new', 'old_function','or','throw','protected','public','static','switch','xor','try','use','var','while' ]; $reservedWordsSql = \G::reservedWordsSql(); //Verify if exists if ($arrayData['REP_TAB_UID'] == '' || (isset($arrayData['forceUid']) && $arrayData['forceUid'])) { //New report table if ($flagIsReportTable && $flagAlterTable) { //Setting default columns $defaultColumns = $this->__getDefaultColumns($arrayData['REP_TAB_TYPE']); $columns = array_merge($defaultColumns, $columns); } //Validations if (is_array($additionalTable->loadByName($arrayData['REP_TAB_NAME']))) { throw new \Exception(\G::LoadTranslation('ID_PMTABLE_ALREADY_EXISTS', [$arrayData['REP_TAB_NAME']])); } if (in_array(strtoupper($arrayData['REP_TAB_NAME']), $reservedWords) || in_array(strtoupper($arrayData['REP_TAB_NAME']), $reservedWordsSql) ) { throw new \Exception(\G::LoadTranslation('ID_PMTABLE_INVALID_NAME', [$arrayData['REP_TAB_NAME']])); } } //Backward compatility foreach ($columns as $i => $column) { if (in_array(strtoupper($columns[$i]->field_name), $reservedWordsSql) || in_array(strtolower($columns[$i]->field_name), $reservedWordsPhp) ) { throw new \Exception(\G::LoadTranslation('ID_PMTABLE_INVALID_FIELD_NAME', [$columns[$i]->field_name])); } switch ($column->field_type) { case 'INT': $columns[$i]->field_type = 'INTEGER'; break; case 'TEXT': $columns[$i]->field_type = 'LONGVARCHAR'; break; case 'DATETIME': //Propel: DATETIME equivalent is TIMESTAMP $columns[$i]->field_type = 'TIMESTAMP'; break; } //Validations if ($columns[$i]->field_autoincrement) { $typeCol = $columns[$i]->field_type; if (!($typeCol === 'INTEGER' || $typeCol === 'TINYINT' || $typeCol === 'SMALLINT' || $typeCol === 'BIGINT')) { $columns[$i]->field_autoincrement = false; } } } $pmTable = new \PmTable($arrayData['REP_TAB_NAME']); $pmTable->setDataSource($arrayData['REP_TAB_CONNECTION']); $pmTable->setColumns($columns); $pmTable->setAlterTable($flagAlterTable); if (isset($arrayData['REP_TAB_NAME_OLD_NAME'])) { $pmTable->setOldTableName($arrayData['REP_TAB_NAME_OLD_NAME']); } if (isset($arrayData['keepData']) && $arrayData['keepData'] == 1) { //PM Table $pmTable->setKeepData(true); } $pmTable->build(); $buildResult = ob_get_contents(); ob_end_clean(); //Updating additional table struture information $addTabData = [ 'ADD_TAB_UID' => $arrayData['REP_TAB_UID'], 'ADD_TAB_NAME' => $arrayData['REP_TAB_NAME'], 'ADD_TAB_CLASS_NAME' => $repTabClassName, 'ADD_TAB_DESCRIPTION' => $arrayData['REP_TAB_DSC'], 'ADD_TAB_PLG_UID' => '', 'DBS_UID' => ($arrayData['REP_TAB_CONNECTION'])? $arrayData['REP_TAB_CONNECTION'] : 'workflow', 'PRO_UID' => $arrayData['PRO_UID'], 'ADD_TAB_TYPE' => $arrayData['REP_TAB_TYPE'], 'ADD_TAB_GRID' => $arrayData['REP_TAB_GRID'] ]; if ($arrayData['REP_TAB_UID'] == '' || (isset($arrayData['forceUid']) && $arrayData['forceUid'])) { //New report table //create record $addTabUid = $additionalTable->create($addTabData); } else { //Editing report table //updating record $addTabUid = $arrayData['REP_TAB_UID']; $additionalTable->update($addTabData); //Removing old data fields references $oCriteria = new \Criteria('workflow'); $oCriteria->add(\FieldsPeer::ADD_TAB_UID, $arrayData['REP_TAB_UID']); \FieldsPeer::doDelete($oCriteria); } //Updating pmtable fields $field = new \Fields(); foreach ($columns as $i => $column) { $field->create([ 'FLD_UID' => $column->uid, 'FLD_INDEX' => $i, 'ADD_TAB_UID' => $addTabUid, 'FLD_NAME' => $column->field_name, 'FLD_DESCRIPTION' => $column->field_label, 'FLD_TYPE' => $column->field_type, 'FLD_SIZE' => ($column->field_size == '')? null : $column->field_size, 'FLD_NULL' => ($column->field_null)? 1 : 0, 'FLD_AUTO_INCREMENT' => ($column->field_autoincrement)? 1 : 0, 'FLD_KEY' => ($column->field_key)? 1 : 0, 'FLD_TABLE_INDEX' => (isset($column->field_index) && $column->field_index)? 1 : 0, 'FLD_FOREIGN_KEY' => 0, 'FLD_FOREIGN_KEY_TABLE' => '', 'FLD_DYN_NAME' => $column->field_dyn, 'FLD_DYN_UID' => $column->field_uid, 'FLD_FILTER' => (isset($column->field_filter) && $column->field_filter)? 1 : 0 ]); } if ($flagIsReportTable && $flagAlterTable) { //The table was create successfully but we're catching problems while populating table try { $additionalTable->populateReportTable( $arrayData['REP_TAB_NAME'], $pmTable->getDataSource(), $arrayData['REP_TAB_TYPE'], $arrayData['PRO_UID'], $arrayData['REP_TAB_GRID'], $addTabUid ); } catch (\Exception $e) { $result->message = $result->msg = $e->getMessage(); } } //Audit Log $nFields = count($columns) - 1; $fieldsName = ''; foreach ($columns as $i => $column) { if ($i != $nFields) { $fieldsName = $fieldsName . $columns[$i]->field_name . ' [' . implode(', ', get_object_vars($column)) . '], '; } else { $fieldsName = $fieldsName . $columns[$i]->field_name . ' [' . implode(', ', get_object_vars($column)) . '].'; } } \G::auditLog( (isset($arrayData['REP_TAB_UID']) && $arrayData['REP_TAB_UID'] == '')? 'CreatePmtable' : 'UpdatePmtable', 'Fields: ' . $fieldsName ); $result->success = true; $result->message = $result->msg = $buildResult; require_once(PATH_CORE . 'controllers/pmTablesProxy.php'); if ($flagNew == 1) { $pmTablesProxy = new \pmTablesProxy(); $obj = new \stdClass(); $obj->rows = \G::json_encode([['id' => $additionalTableUid, 'type' => '']]); //Delete Report Table $resultDeleteReportTable = $pmTablesProxy->delete($obj); } } catch (\Exception $e) { $buildResult = ob_get_contents(); ob_end_clean(); $result->success = false; //If it is a propel exception message if (preg_match('/(.*)\s\[(.*):\s(.*)\]\s\[(.*):\s(.*)\]/', $e->getMessage(), $match)) { $result->message = $result->msg = $match[3]; $result->type = ucfirst($pmTable->getDbConfig()->adapter); } else { $result->message = $result->msg = $e->getMessage(); $result->type = \G::LoadTranslation('ID_EXCEPTION'); } $result->trace = $e->getTraceAsString(); } //Return return $result; } /** * Create the structure of tables * * @param array $arrayTableSchema, * @param array $arrayTableData, * @param string $processUid * @param bool $flagFromAdmin * @param bool $flagOverwrite * @param array $arrayTablesToExclude * @param array $arrayTablesToCreate * * @return string */ public function createStructureOfTables( array $arrayTableSchema, array $arrayTableData, $processUid, $flagFromAdmin, $flagOverwrite = true, array $arrayTablesToExclude = [], array $arrayTablesToCreate = [] ) { try { $errors = ''; $tableNameMap = []; $processQueue = []; $processQueueTables = []; foreach ($arrayTableSchema as $value) { $contentSchema = $value; if (!in_array($contentSchema['ADD_TAB_NAME'], $arrayTablesToExclude)) { $additionalTable = new \AdditionalTables(); $arrayAdditionalTableData = $additionalTable->loadByName($contentSchema['ADD_TAB_NAME']); $tableNameMap[$contentSchema['ADD_TAB_NAME']] = $contentSchema['ADD_TAB_NAME']; $tableData = new \stdClass(); if (isset( $contentSchema['PRO_UID'] )) { $tableData->PRO_UID = $contentSchema['PRO_UID']; } else { $tableData->PRO_UID = $_POST['form']['PRO_UID']; } $flagIsPmTable = $contentSchema['PRO_UID'] === ''; if (!$flagFromAdmin && !$flagIsPmTable) { $tableData->PRO_UID = $processUid; } $flagOverwrite2 = $flagOverwrite; if (in_array($contentSchema['ADD_TAB_NAME'], $arrayTablesToCreate)) { $flagOverwrite2 = false; } //Overwrite if ($flagOverwrite2) { if ($arrayAdditionalTableData !== false) { $additionalTable->deleteAll($arrayAdditionalTableData['ADD_TAB_UID']); } } else { if ($arrayAdditionalTableData !== false) { //Some table exists with the same name //renaming... $tNameOld = $contentSchema['ADD_TAB_NAME']; $newTableName = $contentSchema['ADD_TAB_NAME'] . '_' . date('YmdHis'); $contentSchema['ADD_TAB_UID'] = \G::generateUniqueID(); $contentSchema['ADD_TAB_NAME'] = $newTableName; $contentSchema['ADD_TAB_CLASS_NAME'] = \AdditionalTables::getPHPName($newTableName); //Mapping the table name for posterior uses $tableNameMap[$tNameOld] = $contentSchema['ADD_TAB_NAME']; } } //Validating invalid bds_uid in old tables definition -> mapped to workflow if (!$contentSchema['DBS_UID'] || $contentSchema['DBS_UID'] == '0' || !$contentSchema['DBS_UID']) { $contentSchema['DBS_UID'] = 'workflow'; } $columns = []; foreach ($contentSchema['FIELDS'] as $field) { $columns[] = [ 'uid' => '', 'field_uid' => '', 'field_name' => $field['FLD_NAME'], 'field_dyn' => (isset($field['FLD_DYN_NAME']))? $field['FLD_DYN_NAME'] : '', 'field_label' => (isset($field['FLD_DESCRIPTION']))? $field['FLD_DESCRIPTION'] : '', 'field_type' => $field['FLD_TYPE'], 'field_size' => $field['FLD_SIZE'], 'field_key' => (isset($field['FLD_KEY']))? $field['FLD_KEY'] : 0, 'field_null' => (isset($field['FLD_NULL']))? $field['FLD_NULL'] : 1, 'field_autoincrement' => (isset($field['FLD_AUTO_INCREMENT']))? $field['FLD_AUTO_INCREMENT'] : 0 ]; } $tableData->REP_TAB_UID = $contentSchema['ADD_TAB_UID']; $tableData->REP_TAB_NAME = $contentSchema['ADD_TAB_NAME']; $tableData->REP_TAB_DSC = $contentSchema['ADD_TAB_DESCRIPTION']; $tableData->REP_TAB_CONNECTION = $contentSchema['DBS_UID']; $tableData->REP_TAB_TYPE = (isset($contentSchema['ADD_TAB_TYPE']))? $contentSchema['ADD_TAB_TYPE'] : ''; $tableData->REP_TAB_GRID = (isset($contentSchema['ADD_TAB_GRID']))? $contentSchema['ADD_TAB_GRID'] : ''; $tableData->columns = \G::json_encode($columns); $tableData->forceUid = true; //Save the table $alterTable = false; $result = $this->saveStructureOfTable((array)($tableData), $alterTable); if ($result->success) { \G::auditLog( 'ImportTable', $contentSchema['ADD_TAB_NAME'] . ' (' . $contentSchema['ADD_TAB_UID'] . ')' ); $processQueueTables[$contentSchema['DBS_UID']][] = $contentSchema['ADD_TAB_NAME']; } else { $errors .= \G::LoadTranslation('ID_ERROR_CREATE_TABLE') . $tableData->REP_TAB_NAME . '-> ' . $result->message . '\n\n'; } } } foreach ($processQueueTables as $dbsUid => $tables) { $pmTable = new \PmTable(); ob_start(); $pmTable->buildModelFor($dbsUid, $tables); $buildResult = ob_get_contents(); ob_end_clean(); $errors .= $pmTable->upgradeDatabaseFor($pmTable->getDataSource(), $tables); } if (!empty($tableNameMap)) { $errors = $this->__populateData($arrayTableData, $tableNameMap); } //Return return $errors; } catch (\Exception $e) { throw $e; } } }