HOR-180
HOR-180 HOR-180
This commit is contained in:
@@ -229,7 +229,7 @@ class G
|
|||||||
* @param string $key
|
* @param string $key
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function encrypt ($string, $key)
|
public static function encrypt ($string, $key)
|
||||||
{
|
{
|
||||||
//print $string;
|
//print $string;
|
||||||
// if ( defined ( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes' ) {
|
// if ( defined ( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes' ) {
|
||||||
@@ -3368,7 +3368,7 @@ class G
|
|||||||
*
|
*
|
||||||
* @author Erik A.O. <erik@colosa.com>
|
* @author Erik A.O. <erik@colosa.com>
|
||||||
*/
|
*/
|
||||||
public function json_decode($Json, $assoc = false)
|
public static function json_decode($Json, $assoc = false)
|
||||||
{
|
{
|
||||||
if (function_exists('json_decode')) {
|
if (function_exists('json_decode')) {
|
||||||
return json_decode($Json, $assoc);
|
return json_decode($Json, $assoc);
|
||||||
@@ -5034,7 +5034,7 @@ class G
|
|||||||
$rest->handle();
|
$rest->handle();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function reservedWordsSql ()
|
public static function reservedWordsSql ()
|
||||||
{
|
{
|
||||||
//Reserved words SQL
|
//Reserved words SQL
|
||||||
$reservedWordsSql = array ("ACCESSIBLE","ACTION","ADD","ALL","ALTER","ANALYZE","AND","ANY","AS","ASC","ASENSITIVE","AUTHORIZATION","BACKUP","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BIT","BLOB","BOTH","BREAK","BROWSE","BULK","BY","CALL","CASCADE","CASE","CHANGE","CHAR","CHARACTER","CHECK","CHECKPOINT","CLOSE","CLUSTERED","COALESCE","COLLATE","COLUMN","COMMIT","COMPUTE","CONDITION","CONSTRAINT","CONTAINS","CONTAINSTABLE","CONTINUE","CONVERT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DATE","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DBCC","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DELAYED","DELETE","DENY","DESC","DESCRIBE","DETERMINISTIC","DISK","DISTINCT","DISTINCTROW",
|
$reservedWordsSql = array ("ACCESSIBLE","ACTION","ADD","ALL","ALTER","ANALYZE","AND","ANY","AS","ASC","ASENSITIVE","AUTHORIZATION","BACKUP","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BIT","BLOB","BOTH","BREAK","BROWSE","BULK","BY","CALL","CASCADE","CASE","CHANGE","CHAR","CHARACTER","CHECK","CHECKPOINT","CLOSE","CLUSTERED","COALESCE","COLLATE","COLUMN","COMMIT","COMPUTE","CONDITION","CONSTRAINT","CONTAINS","CONTAINSTABLE","CONTINUE","CONVERT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DATE","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DBCC","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DELAYED","DELETE","DENY","DESC","DESCRIBE","DETERMINISTIC","DISK","DISTINCT","DISTINCTROW",
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ class AdditionalTables extends BaseAdditionalTables
|
|||||||
$pmTable->remove();
|
$pmTable->remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPHPName($sName)
|
public static function getPHPName($sName)
|
||||||
{
|
{
|
||||||
$sName = trim($sName);
|
$sName = trim($sName);
|
||||||
$aAux = explode('_', $sName);
|
$aAux = explode('_', $sName);
|
||||||
|
|||||||
@@ -937,6 +937,11 @@ class pmTablesProxy extends HttpProxyController
|
|||||||
*/
|
*/
|
||||||
public function import ($httpData)
|
public function import ($httpData)
|
||||||
{
|
{
|
||||||
|
define('ERROR_PM_TABLES_OVERWRITE', '1');
|
||||||
|
define('ERROR_PROCESS_NOT_EXIST', '2');
|
||||||
|
define('ERROR_RP_TABLES_OVERWRITE', '3');
|
||||||
|
define('ERROR_NO_REPORT_TABLE', '4');
|
||||||
|
define('ERROR_OVERWRITE_RELATED_PROCESS', '5');
|
||||||
$fromAdmin = false;
|
$fromAdmin = false;
|
||||||
if (isset( $_POST["form"]["TYPE_TABLE"] ) && ! empty( $_POST["form"]["TYPE_TABLE"] )) {
|
if (isset( $_POST["form"]["TYPE_TABLE"] ) && ! empty( $_POST["form"]["TYPE_TABLE"] )) {
|
||||||
if($_POST["form"]["TYPE_TABLE"] == 'admin') {
|
if($_POST["form"]["TYPE_TABLE"] == 'admin') {
|
||||||
@@ -986,21 +991,223 @@ class pmTablesProxy extends HttpProxyController
|
|||||||
throw new Exception( G::loadTranslation( 'ID_PMTABLE_INVALID_FILE' ) );
|
throw new Exception( G::loadTranslation( 'ID_PMTABLE_INVALID_FILE' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
$fp = fopen( $PUBLIC_ROOT_PATH . $filename, "rb" );
|
$currentProUid = '';
|
||||||
$fsData = intval( fread( $fp, 9 ) ); //reading the metadata
|
if (isset( $_POST["form"]["PRO_UID_HELP"] ) && !empty($_POST["form"]["PRO_UID_HELP"])) {
|
||||||
$sType = fread( $fp, $fsData );
|
$currentProUid = $_POST["form"]["PRO_UID_HELP"];
|
||||||
|
} else {
|
||||||
//Ask for all Process
|
if(isset( $_POST["form"]["PRO_UID"]) && !empty( $_POST["form"]["PRO_UID"])){
|
||||||
$processMap = new processMap();
|
$currentProUid = $_POST["form"]["PRO_UID"];
|
||||||
$aProcess = json_decode ($processMap->getAllProcesses());
|
$_SESSION['PROCESS'] = $currentProUid;
|
||||||
foreach($aProcess as $key => $val){
|
} else{
|
||||||
if ($val->value != ''){
|
$currentProUid = $_SESSION['PROCESS'];
|
||||||
$proUids[] = $val->value;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// first create the tables structures
|
|
||||||
|
|
||||||
while (! feof( $fp )) {
|
//First Validate the file
|
||||||
|
$pathPmtableFile = $PUBLIC_ROOT_PATH . $filename;
|
||||||
|
$arrayOverwrite = array();
|
||||||
|
$arrayRelated = array();
|
||||||
|
$arrayMessage = array();
|
||||||
|
$validationType = 0;
|
||||||
|
if(!$fromConfirm){
|
||||||
|
$aErrors = $this->checkPmtFileThrowErrors($pathPmtableFile,$filename,$fromAdmin,$overWrite,$currentProUid);
|
||||||
|
$countC = 0;
|
||||||
|
$countM = 0;
|
||||||
|
$countI = 0;
|
||||||
|
foreach($aErrors as $row){
|
||||||
|
if($row['ERROR_TYPE'] == ERROR_PM_TABLES_OVERWRITE || $row['ERROR_TYPE'] == ERROR_RP_TABLES_OVERWRITE){
|
||||||
|
$arrayOverwrite[$countC] = $row;
|
||||||
|
$countC++;
|
||||||
|
} else {
|
||||||
|
if($row['ERROR_TYPE'] == ERROR_OVERWRITE_RELATED_PROCESS){
|
||||||
|
$arrayRelated[$countI] = $row;
|
||||||
|
$countI++;
|
||||||
|
} else {
|
||||||
|
$arrayMessage[$countM] = $row;
|
||||||
|
$countM++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(sizeof($aErrors)){
|
||||||
|
$validationType = 1; //Yes no
|
||||||
|
throw new Exception(G::loadTranslation( 'ID_PMTABLE_IMPORT_WITH_ERRORS', array ($filename)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Then create the tables
|
||||||
|
if(isset($_POST["form"]["TABLES_OF_NO"])){
|
||||||
|
$arrayOfNo = $_POST["form"]["TABLES_OF_NO"];
|
||||||
|
$arrayOfNew = $_POST["form"]["TABLES_OF_NEW"];
|
||||||
|
$aTablesCreateNew = explode('|',$arrayOfNew);
|
||||||
|
$aTablesNoCreate = explode('|',$arrayOfNo);
|
||||||
|
$errors = $this->createStructureOfTables($pathPmtableFile, $fromAdmin, $currentProUid, true, $aTablesNoCreate, $aTablesCreateNew);
|
||||||
|
} else {
|
||||||
|
$errors = $this->createStructureOfTables($pathPmtableFile, $fromAdmin, $currentProUid, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($errors == '') {
|
||||||
|
$result->success = true;
|
||||||
|
$msg = G::loadTranslation( 'ID_DONE' );
|
||||||
|
} else {
|
||||||
|
$result->success = false;
|
||||||
|
$result->errorType = 'warning';
|
||||||
|
$msg = G::loadTranslation( 'ID_PMTABLE_IMPORT_WITH_ERRORS', array ($filename) ) . "\n\n" . $errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result->message = $msg;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$result = new stdClass();
|
||||||
|
$result->fromAdmin = $fromAdmin;
|
||||||
|
$result->arrayMessage = $arrayMessage;
|
||||||
|
$result->arrayRelated = $arrayRelated;
|
||||||
|
$result->arrayOverwrite = $arrayOverwrite;
|
||||||
|
$result->validationType = $validationType;
|
||||||
|
$result->errorType = 'error';
|
||||||
|
$result->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 = $match[3];
|
||||||
|
$result->type = G::loadTranslation( 'ID_ERROR' );
|
||||||
|
} else {
|
||||||
|
$result->message = $e->getMessage();
|
||||||
|
$result->type = G::loadTranslation( 'ID_EXCEPTION' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Review the *.pmt file and Throw all errors
|
||||||
|
* @param string $tableFile
|
||||||
|
* @param string $fileName
|
||||||
|
* @param bool $fromAdmin
|
||||||
|
* @param bool $overWrite
|
||||||
|
* @param string $currentProUid
|
||||||
|
* @return string $aErrors
|
||||||
|
*/
|
||||||
|
public static function checkPmtFileThrowErrors($tableFile,$fileName,$fromAdmin,$overWrite,$currentProUid){
|
||||||
|
$aErrors = array();
|
||||||
|
//Ask for all Process
|
||||||
|
$processMap = new processMap();
|
||||||
|
$aProcess = G::json_decode($processMap->getAllProcesses());
|
||||||
|
foreach($aProcess as $key => $val){
|
||||||
|
if ($val->value != ''){
|
||||||
|
$proUids[] = $val->value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$fp = fopen( $tableFile, "rb" );
|
||||||
|
$fsData = intval( fread( $fp, 9 ) ); //reading the metadata
|
||||||
|
$sType = fread( $fp, $fsData );
|
||||||
|
$count = 0;
|
||||||
|
while (! feof( $fp )) {
|
||||||
|
$validationType = 0;
|
||||||
|
switch ($sType) {
|
||||||
|
case '@META':
|
||||||
|
$fsData = intval( fread( $fp, 9 ) );
|
||||||
|
$METADATA = fread( $fp, $fsData );
|
||||||
|
break;
|
||||||
|
case '@SCHEMA':
|
||||||
|
$fsUid = intval( fread( $fp, 9 ) );
|
||||||
|
$uid = fread( $fp, $fsUid );
|
||||||
|
$fsData = intval( fread( $fp, 9 ) );
|
||||||
|
$schema = fread( $fp, $fsData );
|
||||||
|
$contentSchema = unserialize( $schema );
|
||||||
|
//The table exists?
|
||||||
|
$additionalTable = new additionalTables();
|
||||||
|
$tableExists = $additionalTable->loadByName( $contentSchema['ADD_TAB_NAME'] );
|
||||||
|
|
||||||
|
$tableProUid = isset($contentSchema["PRO_UID"])?$contentSchema["PRO_UID"]:$_POST["form"]["PRO_UID"];
|
||||||
|
$isPmTable = empty($contentSchema["PRO_UID"])? true : false;
|
||||||
|
|
||||||
|
if($fromAdmin) {
|
||||||
|
if($isPmTable){
|
||||||
|
if ($tableExists !== false && !$overWrite) {
|
||||||
|
$aErrors[$count]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME'];
|
||||||
|
$aErrors[$count]['ERROR_TYPE'] = ERROR_PM_TABLES_OVERWRITE;
|
||||||
|
$aErrors[$count]['ERROR_MESS'] = G::loadTranslation('ID_OVERWRITE_PMTABLE', array($contentSchema['ADD_TAB_NAME']));
|
||||||
|
$aErrors[$count]['IS_PMTABLE'] = $isPmTable;
|
||||||
|
$aErrors[$count]['PRO_UID'] = $tableProUid;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(!in_array($tableProUid, $proUids)){
|
||||||
|
$aErrors[$count]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME'];
|
||||||
|
$aErrors[$count]['ERROR_TYPE'] = ERROR_PROCESS_NOT_EXIST;
|
||||||
|
$aErrors[$count]['ERROR_MESS'] = G::loadTranslation('ID_PROCESS_NOT_EXIST', array($contentSchema['ADD_TAB_NAME']));
|
||||||
|
$aErrors[$count]['IS_PMTABLE'] = $isPmTable;
|
||||||
|
$aErrors[$count]['PRO_UID'] = $tableProUid;
|
||||||
|
} else {
|
||||||
|
$aErrors[$count]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME'];
|
||||||
|
$aErrors[$count]['ERROR_TYPE'] = ERROR_RP_TABLES_OVERWRITE;
|
||||||
|
$aErrors[$count]['ERROR_MESS'] = G::loadTranslation('ID_OVERWRITE_RPTABLE', array($contentSchema['ADD_TAB_NAME']));
|
||||||
|
$aErrors[$count]['IS_PMTABLE'] = $isPmTable;
|
||||||
|
$aErrors[$count]['PRO_UID'] = $tableProUid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if($isPmTable){
|
||||||
|
$aErrors[$count]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME'];
|
||||||
|
$aErrors[$count]['ERROR_TYPE'] = ERROR_NO_REPORT_TABLE;
|
||||||
|
$aErrors[$count]['ERROR_MESS'] = G::loadTranslation('ID_NO_REPORT_TABLE', array($contentSchema['ADD_TAB_NAME']));
|
||||||
|
$aErrors[$count]['IS_PMTABLE'] = $isPmTable;
|
||||||
|
$aErrors[$count]['PRO_UID'] = $tableProUid;
|
||||||
|
} else {
|
||||||
|
if(!$currentProUid != $tableProUid){
|
||||||
|
$aErrors[$count]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME'];
|
||||||
|
$aErrors[$count]['ERROR_TYPE'] = ERROR_OVERWRITE_RELATED_PROCESS;
|
||||||
|
$aErrors[$count]['ERROR_MESS'] = G::loadTranslation('ID_OVERWRITE_RELATED_PROCESS', array($contentSchema['ADD_TAB_NAME']));
|
||||||
|
$aErrors[$count]['IS_PMTABLE'] = $isPmTable;
|
||||||
|
$aErrors[$count]['PRO_UID'] = $tableProUid;
|
||||||
|
} else {
|
||||||
|
if ($tableExists !== false && !$overWrite) {
|
||||||
|
$aErrors[$count]['NAME_TABLE'] = $contentSchema['ADD_TAB_NAME'];
|
||||||
|
$aErrors[$count]['ERROR_TYPE'] = ERROR_RP_TABLES_OVERWRITE;
|
||||||
|
$aErrors[$count]['ERROR_MESS'] = G::loadTranslation('ID_OVERWRITE_RPTABLE', array($contentSchema['ADD_TAB_NAME']));
|
||||||
|
$aErrors[$count]['IS_PMTABLE'] = $isPmTable;
|
||||||
|
$aErrors[$count]['PRO_UID'] = $tableProUid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '@DATA':
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$fsData = intval( fread( $fp, 9 ) );
|
||||||
|
if ($fsData > 0) {
|
||||||
|
$sType = fread( $fp, $fsData );
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
fclose( $fp );
|
||||||
|
return $aErrors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the structure of tables
|
||||||
|
* @param string $tableFile,
|
||||||
|
* @param bool $fromAdmin
|
||||||
|
* @param string $currentProUid
|
||||||
|
* @param bool $overWrite
|
||||||
|
* @param array $aTables
|
||||||
|
* @return string $errors
|
||||||
|
*/
|
||||||
|
public function createStructureOfTables($tableFile,$fromAdmin,$currentProUid,$overWrite = true, $aTables=array(), $aTablesNew=array()){
|
||||||
|
|
||||||
|
$fp = fopen( $tableFile, "rb" );
|
||||||
|
$fsData = intval( fread( $fp, 9 ) );
|
||||||
|
$sType = fread( $fp, $fsData );
|
||||||
|
$errors = '';
|
||||||
|
$tableNameMap = array();
|
||||||
|
$processQueue = array();
|
||||||
|
$processQueueTables = array();
|
||||||
|
while (! feof( $fp )) {
|
||||||
|
$validationType = 0;
|
||||||
switch ($sType) {
|
switch ($sType) {
|
||||||
case '@META':
|
case '@META':
|
||||||
$fsData = intval( fread( $fp, 9 ) );
|
$fsData = intval( fread( $fp, 9 ) );
|
||||||
@@ -1013,115 +1220,86 @@ class pmTablesProxy extends HttpProxyController
|
|||||||
$schema = fread( $fp, $fsData );
|
$schema = fread( $fp, $fsData );
|
||||||
$contentSchema = unserialize( $schema );
|
$contentSchema = unserialize( $schema );
|
||||||
$additionalTable = new additionalTables();
|
$additionalTable = new additionalTables();
|
||||||
$tableExists = $additionalTable->loadByName( $contentSchema['ADD_TAB_NAME'] );
|
if(!in_array($contentSchema['ADD_TAB_NAME'],$aTables)){
|
||||||
$tableNameMap[$contentSchema['ADD_TAB_NAME']] = $contentSchema['ADD_TAB_NAME'];
|
$tableExists = $additionalTable->loadByName( $contentSchema['ADD_TAB_NAME'] );
|
||||||
|
$tableNameMap[$contentSchema['ADD_TAB_NAME']] = $contentSchema['ADD_TAB_NAME'];
|
||||||
$tableData = new stdClass();
|
|
||||||
|
|
||||||
if(isset( $contentSchema["PRO_UID"] )){
|
$tableData = new stdClass();
|
||||||
$tableData->PRO_UID = $contentSchema["PRO_UID"];
|
|
||||||
}else{
|
|
||||||
$tableData->PRO_UID = $_POST["form"]["PRO_UID"];
|
|
||||||
}
|
|
||||||
$isPmTable = false; /*is a report table*/
|
|
||||||
if($contentSchema["PRO_UID"] == "" ) {
|
|
||||||
$isPmTable = true;
|
|
||||||
}
|
|
||||||
$currentPRO_UID = '';
|
|
||||||
if (isset( $_POST["form"]["PRO_UID_HELP"] ) && !empty($_POST["form"]["PRO_UID_HELP"])) {
|
|
||||||
$currentPRO_UID = $_POST["form"]["PRO_UID_HELP"];
|
|
||||||
} else {
|
|
||||||
if(isset( $_POST["form"]["PRO_UID"]) && !empty( $_POST["form"]["PRO_UID"])){
|
|
||||||
$currentPRO_UID = $_POST["form"]["PRO_UID"];
|
|
||||||
$_SESSION['PROCESS'] = $currentPRO_UID;
|
|
||||||
} else{
|
|
||||||
$currentPRO_UID = $_SESSION['PROCESS'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if($fromAdmin) { /* from admin tab */
|
if(isset( $contentSchema["PRO_UID"] )){
|
||||||
if ($tableExists !== false && !$fromConfirm && !$overWrite) {
|
$tableData->PRO_UID = $contentSchema["PRO_UID"];
|
||||||
$validationType = 1;
|
}else{
|
||||||
throw new Exception( G::loadTranslation( 'ID_OVERWRITE_PMTABLE' ) );
|
$tableData->PRO_UID = $_POST["form"]["PRO_UID"];
|
||||||
}
|
}
|
||||||
if(!in_array($tableData->PRO_UID, $proUids) && !$isPmTable) {
|
$isPmTable = false; /*is a report table*/
|
||||||
$validationType = 2;
|
if($contentSchema["PRO_UID"] === '' ) {
|
||||||
throw new Exception( G::loadTranslation( 'ID_NO_RELATED_PROCESS' ) );
|
$isPmTable = true;
|
||||||
}
|
}
|
||||||
} else { /* from designer tab */
|
if(!$fromAdmin && !$isPmTable) {
|
||||||
if($isPmTable){
|
$tableData->PRO_UID = $currentProUid;
|
||||||
$validationType = '';
|
|
||||||
throw new Exception( G::loadTranslation( 'ID_NO_REPORT_TABLE' ) );
|
|
||||||
}
|
}
|
||||||
if ($tableExists !== false && !$fromConfirm && !$overWrite) {
|
if(in_array($contentSchema['ADD_TAB_NAME'],$aTablesNew)){
|
||||||
$validationType = 1;
|
$overWrite = false;
|
||||||
throw new Exception( G::loadTranslation( 'ID_OVERWRITE_PMTABLE' ) );
|
|
||||||
}
|
}
|
||||||
if($currentPRO_UID != $tableData->PRO_UID) {
|
if ($overWrite) {
|
||||||
if(!in_array($tableData->PRO_UID, $proUids)) {
|
if ($tableExists !== false) {
|
||||||
$validationType = 2;
|
$additionalTable->deleteAll( $tableExists['ADD_TAB_UID'] );
|
||||||
if(($fromConfirm == $validationType || !$fromConfirm) && !$isPmTable) {
|
}
|
||||||
throw new Exception( G::loadTranslation( 'ID_OVERWRITE_RELATED_PROCESS' ) );
|
} else {
|
||||||
} else {
|
if ($tableExists !== false) {
|
||||||
$tableData->PRO_UID = $currentPRO_UID;
|
// some table exists with the same name
|
||||||
}
|
// renaming...
|
||||||
} else {
|
$tNameOld = $contentSchema['ADD_TAB_NAME'];
|
||||||
$validationType = 3;
|
$newTableName = $contentSchema['ADD_TAB_NAME'] . '_' . date( 'YmdHis' );
|
||||||
throw new Exception( G::loadTranslation( 'ID_ALREADY_RELATED_TABLE ' ) );
|
$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 ($overWrite) {
|
if (! $contentSchema['DBS_UID'] || $contentSchema['DBS_UID'] == '0' || ! $contentSchema['DBS_UID']) {
|
||||||
if ($tableExists !== false) {
|
$contentSchema['DBS_UID'] = 'workflow';
|
||||||
$additionalTable->deleteAll( $tableExists['ADD_TAB_UID'] );
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if ($tableExists !== false) {
|
$columns = array ();
|
||||||
// some table exists with the same name
|
foreach ($contentSchema['FIELDS'] as $field) {
|
||||||
// renaming...
|
$column = array (
|
||||||
$tNameOld = $contentSchema['ADD_TAB_NAME'];
|
'uid' => '',
|
||||||
$newTableName = $contentSchema['ADD_TAB_NAME'] . '_' . date( 'YmdHis' );
|
'field_uid' => '',
|
||||||
$contentSchema['ADD_TAB_UID'] = G::generateUniqueID();
|
'field_name' => $field['FLD_NAME'],
|
||||||
$contentSchema['ADD_TAB_NAME'] = $newTableName;
|
'field_dyn' => isset( $field['FLD_DYN_NAME'] ) ? $field['FLD_DYN_NAME'] : '',
|
||||||
$contentSchema['ADD_TAB_CLASS_NAME'] = additionalTables::getPHPName( $newTableName );
|
'field_label' => isset( $field['FLD_DESCRIPTION'] ) ? $field['FLD_DESCRIPTION'] : '',
|
||||||
//mapping the table name for posterior uses
|
'field_type' => $field['FLD_TYPE'],'field_size' => $field['FLD_SIZE'],
|
||||||
$tableNameMap[$tNameOld] = $contentSchema['ADD_TAB_NAME'];
|
'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
|
||||||
|
);
|
||||||
|
$columns[] = $column;
|
||||||
|
}
|
||||||
|
|
||||||
|
$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->save( $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";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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 = array ();
|
|
||||||
foreach ($contentSchema['FIELDS'] as $field) {
|
|
||||||
$column = array ('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
|
|
||||||
);
|
|
||||||
$columns[] = $column;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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->save( $tableData, $alterTable );
|
|
||||||
|
|
||||||
if ($result->success) {
|
|
||||||
$processQueueTables[$contentSchema['DBS_UID']][] = $contentSchema['ADD_TAB_NAME'];
|
|
||||||
} else {
|
|
||||||
$errors .= 'Error creating table: ' . $tableData->REP_TAB_NAME . '-> ' . $result->message . "\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case '@DATA':
|
case '@DATA':
|
||||||
$fstName = intval( fread( $fp, 9 ) );
|
$fstName = intval( fread( $fp, 9 ) );
|
||||||
@@ -1140,79 +1318,73 @@ class pmTablesProxy extends HttpProxyController
|
|||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fclose( $fp );
|
||||||
|
|
||||||
fclose( $fp );
|
G::loadClass( 'pmTable' );
|
||||||
G::loadClass( 'pmTable' );
|
foreach ($processQueueTables as $dbsUid => $tables) {
|
||||||
|
|
||||||
foreach ($processQueueTables as $dbsUid => $tables) {
|
|
||||||
$pmTable = new pmTable();
|
$pmTable = new pmTable();
|
||||||
ob_start();
|
ob_start();
|
||||||
$pmTable->buildModelFor( $dbsUid, $tables );
|
$pmTable->buildModelFor( $dbsUid, $tables );
|
||||||
$buildResult = ob_get_contents();
|
$buildResult = ob_get_contents();
|
||||||
ob_end_clean();
|
ob_end_clean();
|
||||||
$errors .= $pmTable->upgradeDatabaseFor( $pmTable->getDataSource(), $tables );
|
$errors .= $pmTable->upgradeDatabaseFor( $pmTable->getDataSource(), $tables );
|
||||||
}
|
}
|
||||||
|
if(sizeof($tableNameMap)>0){
|
||||||
$fp = fopen( $PUBLIC_ROOT_PATH . $filename, "rb" );
|
$errors = $this->dataProcessingOfTables($tableFile,$tableNameMap);
|
||||||
$fsData = intval( fread( $fp, 9 ) );
|
}
|
||||||
$sType = fread( $fp, $fsData );
|
return $errors;
|
||||||
|
}
|
||||||
// data processing
|
/**
|
||||||
while (! feof( $fp )) {
|
* Review the *.pmt file and populate the data
|
||||||
|
* @param string $tableFile
|
||||||
|
* @param array $tableNameMap
|
||||||
|
* @return string errors
|
||||||
|
*/
|
||||||
|
public function dataProcessingOfTables($tableFile,$tableNameMap){
|
||||||
|
$fp = fopen( $tableFile, "rb" );
|
||||||
|
$fsData = intval( fread( $fp, 9 ) );
|
||||||
|
$sType = fread( $fp, $fsData );
|
||||||
|
$errors = '';
|
||||||
|
while (! feof( $fp )) {
|
||||||
switch ($sType) {
|
switch ($sType) {
|
||||||
case '@META':
|
case '@META':
|
||||||
$fsData = intval( fread( $fp, 9 ) );
|
|
||||||
$METADATA = fread( $fp, $fsData );
|
|
||||||
break;
|
|
||||||
case '@SCHEMA':
|
case '@SCHEMA':
|
||||||
$fsUid = intval( fread( $fp, 9 ) );
|
|
||||||
$uid = fread( $fp, $fsUid );
|
|
||||||
$fsData = intval( fread( $fp, 9 ) );
|
|
||||||
$schema = fread( $fp, $fsData );
|
|
||||||
$contentSchema = unserialize( $schema );
|
|
||||||
$additionalTable = new additionalTables();
|
|
||||||
$table = $additionalTable->loadByName( $tableNameMap[$contentSchema['ADD_TAB_NAME']] );
|
|
||||||
if ($table['PRO_UID'] != '') {
|
|
||||||
// is a report table, try populate it
|
|
||||||
$additionalTable->populateReportTable( $table['ADD_TAB_NAME'], pmTable::resolveDbSource( $table['DBS_UID'] ), $table['ADD_TAB_TYPE'], $table['PRO_UID'], $table['ADD_TAB_GRID'], $table['ADD_TAB_UID'] );
|
|
||||||
}
|
|
||||||
G::auditLog("ImportTable", $table['ADD_TAB_NAME']." (".$table['ADD_TAB_UID'].") ");
|
|
||||||
break;
|
break;
|
||||||
case '@DATA':
|
case '@DATA':
|
||||||
$fstName = intval( fread( $fp, 9 ) );
|
$fstName = intval( fread( $fp, 9 ) );
|
||||||
$tableName = fread( $fp, $fstName );
|
$tableName = fread( $fp, $fstName );
|
||||||
$fsData = intval( fread( $fp, 9 ) );
|
$fsData = intval( fread( $fp, 9 ) );
|
||||||
|
|
||||||
if ($fsData > 0) {
|
if ($fsData > 0) {
|
||||||
$data = fread( $fp, $fsData );
|
$data = fread( $fp, $fsData );
|
||||||
$contentData = unserialize( $data );
|
$contentData = unserialize( $data );
|
||||||
$tableName = $tableNameMap[$tableName];
|
if(isset($tableNameMap[$tableName])){
|
||||||
|
$tableName = $tableNameMap[$tableName];
|
||||||
|
|
||||||
$oAdditionalTables = new AdditionalTables();
|
$oAdditionalTables = new AdditionalTables();
|
||||||
$table = $oAdditionalTables->loadByName( $tableName );
|
$table = $oAdditionalTables->loadByName( $tableName );
|
||||||
$isReport = $table['PRO_UID'] !== '' ? true : false;
|
$isReport = $table['PRO_UID'] !== '' ? true : false;
|
||||||
|
|
||||||
if ($table !== false) {
|
if ($table !== false) {
|
||||||
if (! $isReport) {
|
if (! $isReport) {
|
||||||
if (count( $contentData ) > 0) {
|
if (count( $contentData ) > 0) {
|
||||||
$oAdditionalTables->load( $table['ADD_TAB_UID'], true );
|
$oAdditionalTables->load( $table['ADD_TAB_UID'], true );
|
||||||
$primaryKeys = $oAdditionalTables->getPrimaryKeys();
|
$primaryKeys = $oAdditionalTables->getPrimaryKeys();
|
||||||
// Obtain a list of columns
|
// Obtain a list of columns
|
||||||
$primaryKeyColumn = array();
|
$primaryKeyColumn = array();
|
||||||
foreach ($contentData as $key => $row) {
|
foreach ($contentData as $key => $row) {
|
||||||
$primaryKeyColumn[$key] = $row[$primaryKeys[0]['FLD_NAME']];
|
$primaryKeyColumn[$key] = $row[$primaryKeys[0]['FLD_NAME']];
|
||||||
}
|
}
|
||||||
unset($row);
|
unset($row);
|
||||||
array_multisort($primaryKeyColumn, SORT_ASC, $contentData);
|
array_multisort($primaryKeyColumn, SORT_ASC, $contentData);
|
||||||
foreach ($contentData as $row) {
|
foreach ($contentData as $row) {
|
||||||
$data = new StdClass();
|
$data = new StdClass();
|
||||||
$data->id = $table['ADD_TAB_UID'];
|
$data->id = $table['ADD_TAB_UID'];
|
||||||
$data->rows = base64_encode( serialize( $row ) );
|
$data->rows = base64_encode( serialize( $row ) );
|
||||||
$res = $this->dataCreate( $data, 'base64' );
|
$res = $this->dataCreate( $data, 'base64' );
|
||||||
if (! $res->success) {
|
if (! $res->success) {
|
||||||
$errors .= $res->message;
|
$errors .= $res->message;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1228,44 +1400,8 @@ class pmTablesProxy extends HttpProxyController
|
|||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
////////////
|
|
||||||
|
|
||||||
|
|
||||||
if ($errors == '') {
|
|
||||||
$result->success = true;
|
|
||||||
$msg = G::loadTranslation( 'ID_PMTABLE_IMPORT_SUCCESS', array ($filename
|
|
||||||
) );
|
|
||||||
} else {
|
|
||||||
$result->success = false;
|
|
||||||
$result->errorType = 'warning';
|
|
||||||
$msg = G::loadTranslation( 'ID_PMTABLE_IMPORT_WITH_ERRORS', array ($filename
|
|
||||||
) ) . "\n\n" . $errors;
|
|
||||||
}
|
|
||||||
|
|
||||||
$result->message = $msg;
|
|
||||||
} catch (Exception $e) {
|
|
||||||
$result = new stdClass();
|
|
||||||
$result->fromAdmin = $fromAdmin;
|
|
||||||
$result->validationType = $validationType;
|
|
||||||
$result->errorType = 'error';
|
|
||||||
$result->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 = $match[3];
|
|
||||||
$result->type = G::loadTranslation( 'ID_ERROR' );
|
|
||||||
} else {
|
|
||||||
$result->message = $e->getMessage();
|
|
||||||
$result->type = G::loadTranslation( 'ID_EXCEPTION' );
|
|
||||||
}
|
|
||||||
//$result->trace = $e->getTraceAsString();
|
|
||||||
}
|
}
|
||||||
|
return $errors;
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -515,6 +515,9 @@ DeletePMTable = function() {
|
|||||||
//Load Import PM Table Form
|
//Load Import PM Table Form
|
||||||
ImportPMTable = function(){
|
ImportPMTable = function(){
|
||||||
|
|
||||||
|
var aOverwrite,
|
||||||
|
aRelated,
|
||||||
|
aMessage;
|
||||||
var w = new Ext.Window({
|
var w = new Ext.Window({
|
||||||
id: 'windowPmTableUploaderImport',
|
id: 'windowPmTableUploaderImport',
|
||||||
title: '',
|
title: '',
|
||||||
@@ -550,12 +553,6 @@ ImportPMTable = function(){
|
|||||||
buttonCfg: {
|
buttonCfg: {
|
||||||
iconCls: 'upload-icon'
|
iconCls: 'upload-icon'
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
id: 'importPMTableOverwrite',
|
|
||||||
xtype: 'checkbox',
|
|
||||||
fieldLabel: '',
|
|
||||||
boxLabel: _('ID_OVERWRITE_EXIST'), // 'Overwrite if exists?',
|
|
||||||
name: 'form[OVERWRITE]'
|
|
||||||
}, {
|
}, {
|
||||||
xtype: 'hidden',
|
xtype: 'hidden',
|
||||||
name: 'form[TYPE_TABLE]',
|
name: 'form[TYPE_TABLE]',
|
||||||
@@ -580,7 +577,7 @@ ImportPMTable = function(){
|
|||||||
var result = Ext.util.JSON.decode(resp.response.responseText);
|
var result = Ext.util.JSON.decode(resp.response.responseText);
|
||||||
|
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
PMExt.notify(_('ID_IMPORT_RESULT'), result.message);
|
PMExt.notify('', result.message);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
win = new Ext.Window({
|
win = new Ext.Window({
|
||||||
@@ -613,219 +610,34 @@ ImportPMTable = function(){
|
|||||||
|
|
||||||
var result = Ext.util.JSON.decode(resp.response.responseText);
|
var result = Ext.util.JSON.decode(resp.response.responseText);
|
||||||
if (result.errorType == 'warning') {
|
if (result.errorType == 'warning') {
|
||||||
PMExt.warning(_('ID_WARNING'), result.message.replace(/\n/g,' <br>'));
|
Ext.MessageBox.show({
|
||||||
}
|
title: _('ID_WARNING_PMTABLES'),
|
||||||
else {
|
width: 510,
|
||||||
|
height: 300,
|
||||||
|
msg: "<div style=\"overflow: auto; width: 439px; height: 200px;\">" + result.message.replace(/\n/g,' <br>') + "</div>",
|
||||||
|
buttons: Ext.MessageBox.OK,
|
||||||
|
animEl: 'mb9',
|
||||||
|
fn: function(){},
|
||||||
|
icon: Ext.MessageBox.INFO
|
||||||
|
});
|
||||||
|
} else {
|
||||||
if(result.fromAdmin) { /* from admin tab */
|
if(result.fromAdmin) { /* from admin tab */
|
||||||
if(result.validationType == 1) {
|
aOverwrite = result.arrayOverwrite;
|
||||||
Ext.MessageBox.confirm('Confirmation', result.message.replace(/\n/g,' <br>'), function(btn, text){
|
aRelated = result.arrayRelated;
|
||||||
if (btn == 'yes'){
|
aMessage = result.arrayMessage;
|
||||||
Ext.Ajax.request({
|
pmtablesErrors(aOverwrite,aRelated,aMessage);
|
||||||
url: 'pmTablesProxy/import',
|
|
||||||
params: {
|
|
||||||
'form[FROM_CONFIRM]':'overWrite',
|
|
||||||
'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'),
|
|
||||||
'form[OVERWRITE]':true
|
|
||||||
},
|
|
||||||
success: function(resp){
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
if (result.success) {
|
|
||||||
PMExt.notify(_('ID_IMPORT_RESULT'), result.message);
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
} else {
|
|
||||||
if(result.validationType == 2) {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
failure: function(obj, resp){
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
if(result.validationType == 2) {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
Ext.Ajax.request({
|
|
||||||
url: 'pmTablesProxy/import',
|
|
||||||
params: {
|
|
||||||
'form[FROM_CONFIRM]':'clear',
|
|
||||||
'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin')
|
|
||||||
},
|
|
||||||
success: function(resp) {
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
PMExt.notify(_('ID_IMPORT_RESULT'), result.message);
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
} else { /* from designer tab */
|
} else { /* from designer tab */
|
||||||
if(result.validationType == 1) {
|
aOverwrite = result.arrayOverwrite;
|
||||||
Ext.MessageBox.confirm('Confirmation', result.message.replace(/\n/g,' <br>'), function(btn, text){
|
aRelated = result.arrayRelated;
|
||||||
if (btn == 'yes'){
|
aMessage = result.arrayMessage;
|
||||||
Ext.Ajax.request({
|
pmtablesErrors(aOverwrite,aRelated,aMessage);
|
||||||
url: 'pmTablesProxy/import',
|
|
||||||
params: {
|
|
||||||
'form[FROM_CONFIRM]':'2',
|
|
||||||
'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'),
|
|
||||||
'form[OVERWRITE]':true
|
|
||||||
},
|
|
||||||
success: function(resp){
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
if (result.success) {
|
|
||||||
PMExt.notify(_('ID_IMPORT_RESULT'), result.message);
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
} else {
|
|
||||||
if(result.validationType == 2) {
|
|
||||||
Ext.MessageBox.confirm('Confirmation', result.message.replace(/\n/g,' <br>'), function(btn, text){
|
|
||||||
if (btn == 'yes'){
|
|
||||||
Ext.Ajax.request({
|
|
||||||
url: 'pmTablesProxy/import',
|
|
||||||
params: {
|
|
||||||
'form[FROM_CONFIRM]':'overWrite',
|
|
||||||
'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'),
|
|
||||||
'form[OVERWRITE]':true
|
|
||||||
},
|
|
||||||
success: function(resp){
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
if (result.success) {
|
|
||||||
PMExt.notify(_('ID_IMPORT_RESULT'), result.message);
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
} else {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
failure: function(obj, resp){
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
failure: function(obj, resp){
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
if(result.validationType == 2) {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
} else {
|
|
||||||
Ext.Ajax.request({
|
|
||||||
url: 'pmTablesProxy/import',
|
|
||||||
params: {
|
|
||||||
'form[FROM_CONFIRM]':'2',
|
|
||||||
'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'),
|
|
||||||
'form[PRO_UID_HELP]':PRO_UID
|
|
||||||
},
|
|
||||||
success: function(resp) {
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
if(result.validationType == 2) {
|
|
||||||
/*add code if related process*/
|
|
||||||
Ext.MessageBox.confirm('Confirmation', result.message.replace(/\n/g,' <br>'), function(btn, text){
|
|
||||||
if (btn == 'yes'){
|
|
||||||
Ext.Ajax.request({
|
|
||||||
url: 'pmTablesProxy/import',
|
|
||||||
params: {
|
|
||||||
'form[FROM_CONFIRM]':'overWrite',
|
|
||||||
'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'),
|
|
||||||
'form[PRO_UID_HELP]':PRO_UID
|
|
||||||
},
|
|
||||||
success: function(resp){
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
if (result.success) {
|
|
||||||
PMExt.notify(_('ID_IMPORT_RESULT'), result.message);
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
} else {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
failure: function(obj, resp){
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
if (result.success) {
|
|
||||||
PMExt.notify(_('ID_IMPORT_RESULT'), result.message);
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
} else {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//PMExt.notify(_('ID_IMPORT_RESULT'), result.message);
|
|
||||||
},
|
|
||||||
failure: function(obj, resp){
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(result.validationType == 2) {
|
|
||||||
Ext.MessageBox.confirm('Confirmation', result.message.replace(/\n/g,' <br>'), function(btn, text){
|
|
||||||
if (btn == 'yes'){
|
|
||||||
Ext.Ajax.request({
|
|
||||||
url: 'pmTablesProxy/import',
|
|
||||||
params: {
|
|
||||||
'form[FROM_CONFIRM]':'overWrite',
|
|
||||||
'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'),
|
|
||||||
'form[OVERWRITE]':true,
|
|
||||||
'form[PRO_UID_HELP]':PRO_UID
|
|
||||||
},
|
|
||||||
success: function(resp){
|
|
||||||
var result = Ext.util.JSON.decode(resp.responseText);
|
|
||||||
if (result.success) {
|
|
||||||
PMExt.notify(_('ID_IMPORT_RESULT'), result.message);
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
} else {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
failure: function(obj, resp){
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Ext.getCmp('infoGrid').getStore().reload();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,' <br>'));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}/*,{
|
},{
|
||||||
text: 'Reset',
|
|
||||||
handler: function(){
|
|
||||||
uploader = Ext.getCmp('uploader');
|
|
||||||
uploader.getForm().reset();
|
|
||||||
}
|
|
||||||
}*/,{
|
|
||||||
id: 'importPMTableButtonCancel',
|
id: 'importPMTableButtonCancel',
|
||||||
text: TRANSLATIONS.ID_CANCEL,
|
text: TRANSLATIONS.ID_CANCEL,
|
||||||
handler: function(){
|
handler: function(){
|
||||||
@@ -959,3 +771,167 @@ function updateTagPermissions(){
|
|||||||
var top = (Ext.getBody().getViewSize().height/3);
|
var top = (Ext.getBody().getViewSize().height/3);
|
||||||
var targetWin = window.open (pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
|
var targetWin = window.open (pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function pmtablesErrors(aOverwrite,aRelated,aMessage){
|
||||||
|
var jsonDataArray = [],
|
||||||
|
i,
|
||||||
|
fieldMessage,
|
||||||
|
fieldRadio2Options,
|
||||||
|
fieldRadio3Options,
|
||||||
|
win,
|
||||||
|
tablesOfNo,
|
||||||
|
tablesOfYes,
|
||||||
|
tablesOfNew,
|
||||||
|
valueSelected,
|
||||||
|
nameId,
|
||||||
|
number;
|
||||||
|
//Show the error message ERROR_PROCESS_NOT_EXIST or ERROR_NO_REPORT_TABLE
|
||||||
|
for (i = 0; i < aMessage.length; i++){
|
||||||
|
fieldMessage = {
|
||||||
|
xtype : 'fieldset',
|
||||||
|
title : aMessage[i]['ERROR_MESS'],
|
||||||
|
id : aMessage[i]['NAME_TABLE'],
|
||||||
|
autoHeight : true
|
||||||
|
};
|
||||||
|
jsonDataArray.push(fieldMessage);
|
||||||
|
}
|
||||||
|
//Check the ERROR_OVERWRITE_RELATED_PROCESS
|
||||||
|
for (i = 0; i < aRelated.length; i++){
|
||||||
|
fieldRadio2Options = {
|
||||||
|
xtype : 'fieldset',
|
||||||
|
title : aRelated[i]['ERROR_MESS'],
|
||||||
|
id : aRelated[i]['NAME_TABLE'],
|
||||||
|
autoHeight : true,
|
||||||
|
defaultType: 'radio', // each item will be a radio button
|
||||||
|
items: [{
|
||||||
|
checked : true,
|
||||||
|
boxLabel : _('ID_RADIO_RELATED_PROCESS'),
|
||||||
|
name : aRelated[i]['NAME_TABLE'],
|
||||||
|
inputValue : 'related'
|
||||||
|
}, {
|
||||||
|
boxLabel : _('ID_RADIO_NOT_IMPORTED_RPT'),
|
||||||
|
name : aRelated[i]['NAME_TABLE'],
|
||||||
|
inputValue : 'no'
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
jsonDataArray.push(fieldRadio2Options);
|
||||||
|
}
|
||||||
|
// check the ERROR_PM_TABLES_OVERWRITE or ERROR_RP_TABLES_OVERWRITE
|
||||||
|
for (i = 0; i < aOverwrite.length; i++){
|
||||||
|
fieldRadio3Options = {
|
||||||
|
xtype : 'fieldset',
|
||||||
|
title : aOverwrite[i]['ERROR_MESS'],
|
||||||
|
id : aOverwrite[i]['NAME_TABLE'],
|
||||||
|
autoHeight : true,
|
||||||
|
defaultType : 'radio', // each item will be a radio button
|
||||||
|
items: [{
|
||||||
|
boxLabel : _('ID_RADIO_CREATE_NEW'),
|
||||||
|
name : aOverwrite[i]['NAME_TABLE'],
|
||||||
|
inputValue : 'new'
|
||||||
|
}, {
|
||||||
|
boxLabel : _('ID_RADIO_OVERWRITE'),
|
||||||
|
name : aOverwrite[i]['NAME_TABLE'],
|
||||||
|
inputValue : 'overwrite'
|
||||||
|
}, {
|
||||||
|
checked : true,
|
||||||
|
boxLabel : _('ID_RADIO_NOT_IMPORTED'),
|
||||||
|
name : aOverwrite[i]['NAME_TABLE'],
|
||||||
|
inputValue : 'no'
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
jsonDataArray.push(fieldRadio3Options);
|
||||||
|
}
|
||||||
|
|
||||||
|
number = Math.floor((Math.random() * 100) + 1);
|
||||||
|
win = new Ext.Window({
|
||||||
|
id : 'winPmtableRptableErrors'+number,
|
||||||
|
layout : 'fit',
|
||||||
|
width : 700,
|
||||||
|
height : 400,
|
||||||
|
title : _('ID_WARNING_PMTABLES'),
|
||||||
|
modal : true,
|
||||||
|
maximizable: true,
|
||||||
|
constrain : true,
|
||||||
|
plain : true,
|
||||||
|
autoScroll : true,
|
||||||
|
items : jsonDataArray,
|
||||||
|
buttons : [{
|
||||||
|
text : _('ID_CONTINUE'),
|
||||||
|
handler: function(){
|
||||||
|
tablesOfNo = '';
|
||||||
|
tablesOfYes = '';
|
||||||
|
tablesOfNew = '';
|
||||||
|
for (i = 0; i < aMessage.length; i++){
|
||||||
|
nameId = aMessage[i]['NAME_TABLE'];
|
||||||
|
tablesOfNo = tablesOfNo.concat('|',nameId);
|
||||||
|
}
|
||||||
|
for (i = 0; i < aRelated.length; i++){
|
||||||
|
nameId = aRelated[i]['NAME_TABLE'];
|
||||||
|
valueSelected = Ext.getCmp(nameId).items.get(0).getGroupValue();
|
||||||
|
switch(valueSelected) {
|
||||||
|
case 'related':
|
||||||
|
tablesOfYes = tablesOfYes.concat('|',nameId);
|
||||||
|
break;
|
||||||
|
case 'no':
|
||||||
|
tablesOfNo = tablesOfNo.concat('|',nameId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i = 0; i < aOverwrite.length; i++){
|
||||||
|
nameId = aOverwrite[i]['NAME_TABLE'];
|
||||||
|
valueSelected = Ext.getCmp(nameId).items.get(0).getGroupValue();
|
||||||
|
switch(valueSelected) {
|
||||||
|
case 'new':
|
||||||
|
tablesOfNew = tablesOfNew.concat('|',nameId);
|
||||||
|
break;
|
||||||
|
case 'overwrite':
|
||||||
|
tablesOfYes = tablesOfYes.concat('|',nameId);
|
||||||
|
break;
|
||||||
|
case 'no':
|
||||||
|
tablesOfNo = tablesOfNo.concat('|',nameId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
win.close();
|
||||||
|
Ext.Ajax.request({
|
||||||
|
url: 'pmTablesProxy/import',
|
||||||
|
params: {
|
||||||
|
'form[FROM_CONFIRM]':'yes',
|
||||||
|
'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'),
|
||||||
|
'form[OVERWRITE]':true,
|
||||||
|
'form[TABLES_OF_NO]':tablesOfNo,
|
||||||
|
'form[TABLES_OF_YES]':tablesOfYes,
|
||||||
|
'form[TABLES_OF_NEW]':tablesOfNew
|
||||||
|
},
|
||||||
|
success: function(resp){
|
||||||
|
var result = Ext.util.JSON.decode(resp.responseText);
|
||||||
|
if (result.success) {
|
||||||
|
PMExt.notify('', result.message);
|
||||||
|
Ext.getCmp('infoGrid').getStore().reload();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
failure: function(obj, resp){
|
||||||
|
var result = Ext.util.JSON.decode(resp.responseText);
|
||||||
|
Ext.getCmp('infoGrid').getStore().reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
text: _('ID_CANCEL'),
|
||||||
|
handler: function(){
|
||||||
|
win.close();
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
win.show();
|
||||||
|
|
||||||
|
for (i = 0; i < aMessage.length; i++){
|
||||||
|
Ext.get(aMessage[i]['NAME_TABLE']).setStyle({border: '0', marginTop:'0'} );
|
||||||
|
}
|
||||||
|
for (i = 0; i < aRelated.length; i++){
|
||||||
|
Ext.get(aRelated[i]['NAME_TABLE']).setStyle({border: '0', marginTop:'0'} );
|
||||||
|
}
|
||||||
|
for (i = 0; i < aOverwrite.length; i++){
|
||||||
|
Ext.get(aOverwrite[i]['NAME_TABLE']).setStyle({border: '0', marginTop:'0'} );
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user