Merged in feature/HOR-4740 (pull request #6559)
HOR-4740 Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
@@ -50,9 +50,6 @@ CLI::taskOpt("workspace", "Specify which workspace to restore if multiple worksp
|
||||
Ex: -wworkflow.", "w:", "workspace=");
|
||||
CLI::taskOpt("lang", "Specify the language which will be used to rebuild the case cache list. If this option isn't included, then 'en' (English) will be used by default.", "l:", "lang=");
|
||||
CLI::taskOpt("port", "Specify the port number used by MySQL. If not specified, then the port 3306 will be used by default.", "p:");
|
||||
/*----------------------------------********---------------------------------*/
|
||||
CLI::taskOpt('keep_dyn_content', "Include the DYN_CONTENT_HISTORY value. Ex: --keep_dyn_content", 'd', 'keep_dyn_content');
|
||||
/*----------------------------------********---------------------------------*/
|
||||
CLI::taskRun("run_workspace_restore");
|
||||
|
||||
CLI::taskName('cacheview-repair');
|
||||
@@ -356,9 +353,19 @@ EOT
|
||||
);
|
||||
CLI::taskArg('workspace');
|
||||
CLI::taskRun('migrate_history_data');
|
||||
CLI::taskOpt('keep_dyn_content', "Include the DYN_CONTENT_HISTORY value. Ex: --keep_dyn_content", 'i', 'keep_dyn_content');
|
||||
/*----------------------------------********---------------------------------*/
|
||||
|
||||
/**
|
||||
* Remove the DYN_CONTENT_HISTORY
|
||||
*/
|
||||
CLI::taskName('clear-dyn-content-history-data');
|
||||
CLI::taskDescription(<<<EOT
|
||||
Clear History of Use data from APP_HISTORY table
|
||||
EOT
|
||||
);
|
||||
CLI::taskArg('workspace');
|
||||
CLI::taskRun("run_clear_dyn_content_history_data");
|
||||
|
||||
/**
|
||||
* Function run_info
|
||||
*
|
||||
@@ -1300,19 +1307,6 @@ function regenerate_pmtable_classes($args, $opts)
|
||||
*/
|
||||
function migrate_history_data($args, $opts)
|
||||
{
|
||||
foreach ($args as $key => $value) {
|
||||
if ($args[$key] === '--keep_dyn_content' || $args[$key] === '-i') {
|
||||
unset($args[$key]);
|
||||
$opts['keep_dyn_content'] = '';
|
||||
}
|
||||
}
|
||||
$option = '';
|
||||
$removedDynContentHistory = true;
|
||||
$exist = array_key_exists('keep_dyn_content', $opts);
|
||||
if ($exist) {
|
||||
$removedDynContentHistory = false;
|
||||
$option = '--keep_dyn_content';
|
||||
}
|
||||
if (count($args) === 1) {
|
||||
$start = microtime(true);
|
||||
CLI::logging("> Migrating history data...\n");
|
||||
@@ -1320,15 +1314,37 @@ function migrate_history_data($args, $opts)
|
||||
Bootstrap::setConstantsRelatedWs($args[0]);
|
||||
|
||||
$workspaceTools = new WorkspaceTools($args[0]);
|
||||
$workspaceTools->migrateAppHistoryToAppDataChangeLog(true, $removedDynContentHistory);
|
||||
$workspaceTools->migrateAppHistoryToAppDataChangeLog(true);
|
||||
|
||||
$stop = microtime(true);
|
||||
CLI::logging("<*> Migrating history data took " . ($stop - $start) . " seconds.\n");
|
||||
} else {
|
||||
$workspaces = get_workspaces_from_args($args);
|
||||
foreach ($workspaces as $workspace) {
|
||||
passthru(PHP_BINARY . ' processmaker migrate-history-data ' . $workspace->name . ' ' . $option);
|
||||
passthru(PHP_BINARY . ' processmaker migrate-history-data ' . $workspace->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
/*----------------------------------********---------------------------------*/
|
||||
|
||||
/**
|
||||
* Will be clean the History of use from the table
|
||||
* Will be remove the DYN_CONTENT_HISTORY from APP_HISTORY
|
||||
*
|
||||
* @param array $args
|
||||
* @param array $opts
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function run_clear_dyn_content_history_data($args, $opts)
|
||||
{
|
||||
$workspaces = get_workspaces_from_args($args);
|
||||
$start = microtime(true);
|
||||
CLI::logging("> Cleaning history data from APP_HISTORY...\n");
|
||||
foreach ($workspaces as $workspace) {
|
||||
CLI::logging('Remove history of use: ' . pakeColor::colorize($workspace->name, 'INFO') . "\n");
|
||||
$workspace->clearDynContentHistoryData(true);
|
||||
}
|
||||
$stop = microtime(true);
|
||||
CLI::logging("<*> Cleaning history data from APP_HISTORY process took " . ($stop - $start) . " seconds.\n");
|
||||
}
|
||||
|
||||
@@ -898,7 +898,6 @@ class Cases
|
||||
$appHistory = new AppHistory();
|
||||
$aFieldsHistory = $Fields;
|
||||
$appDataWithoutDynContentHistory = serialize($FieldsDifference);
|
||||
$FieldsDifference['DYN_CONTENT_HISTORY'] = base64_encode($currentDynaform["DYN_CONTENT"]);
|
||||
$aFieldsHistory['APP_DATA'] = serialize($FieldsDifference);
|
||||
$appHistory->insertHistory($aFieldsHistory);
|
||||
|
||||
|
||||
@@ -51,12 +51,6 @@ class PmDynaform
|
||||
if (is_array($this->fields) && !isset($this->fields["APP_UID"])) {
|
||||
$this->fields["APP_UID"] = null;
|
||||
}
|
||||
if (isset($this->fields["APP_DATA"]["DYN_CONTENT_HISTORY"])) {
|
||||
$decode = base64_decode($this->fields["APP_DATA"]["DYN_CONTENT_HISTORY"], true);
|
||||
if ($decode !== false) {
|
||||
$this->record["DYN_CONTENT"] = $decode;
|
||||
}
|
||||
}
|
||||
|
||||
//todo: compatibility checkbox
|
||||
if ($this->record !== null && isset($this->record["DYN_CONTENT"]) && $this->record["DYN_CONTENT"] !== "") {
|
||||
|
||||
@@ -342,12 +342,19 @@ class WorkspaceTools
|
||||
$this->migrateSingleton($workSpace);
|
||||
$stop = microtime(true);
|
||||
CLI::logging("<*> Migrating and populating plugin singleton data took " . ($stop - $start) . " seconds.\n");
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
|
||||
$keepDynContent = isset($optionMigrateHistoryData['keepDynContent']) && $optionMigrateHistoryData['keepDynContent'] === true;
|
||||
//Review if we need to remove the 'History of use' from APP_HISTORY
|
||||
$start = microtime(true);
|
||||
CLI::logging("> Clearing History of Use from APP_HISTORY table...\n");
|
||||
$this->clearDynContentHistoryData(false, $keepDynContent);
|
||||
$stop = microtime(true);
|
||||
CLI::logging("<*> Clearing History of Use from APP_HISTORY table took " . ($stop - $start) . " seconds.\n");
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
$start = microtime(true);
|
||||
CLI::logging("> Migrating history data...\n");
|
||||
$this->migrateAppHistoryToAppDataChangeLog(false, !$keepDynContent);
|
||||
$this->migrateAppHistoryToAppDataChangeLog(false);
|
||||
$stop = microtime(true);
|
||||
CLI::logging("<*> Migrating history data took " . ($stop - $start) . " seconds.\n");
|
||||
/*----------------------------------********---------------------------------*/
|
||||
@@ -2067,11 +2074,18 @@ class WorkspaceTools
|
||||
//Updating generated class files for PM Tables
|
||||
passthru(PHP_BINARY . ' processmaker regenerate-pmtable-classes ' . $workspace->name);
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
$keepDynContent = isset($optionMigrateHistoryData['keepDynContent']) && $optionMigrateHistoryData['keepDynContent'] === true;
|
||||
//Review if we need to remove the 'History of use' from APP_HISTORY
|
||||
$start = microtime(true);
|
||||
CLI::logging("> Clearing History of Use from APP_HISTORY table...\n");
|
||||
$workspace->clearDynContentHistoryData(false, $keepDynContent);
|
||||
$stop = microtime(true);
|
||||
CLI::logging("<*> Clearing History of Use from APP_HISTORY table took " . ($stop - $start) . " seconds.\n");
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
$start = microtime(true);
|
||||
CLI::logging("> Migrating history data...\n");
|
||||
$workspace->migrateAppHistoryToAppDataChangeLog(false, !$keepDynContent);
|
||||
$workspace->migrateAppHistoryToAppDataChangeLog(false);
|
||||
$stop = microtime(true);
|
||||
CLI::logging("<*> Migrating history data took " . ($stop - $start) . " seconds.\n");
|
||||
/*----------------------------------********---------------------------------*/
|
||||
@@ -4237,137 +4251,173 @@ class WorkspaceTools
|
||||
$this->setLastContentMigrateTable(true);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Remove the DYN_CONTENT_HISTORY from APP_HISTORY
|
||||
*
|
||||
* @param boolean $force
|
||||
* @param boolean $keepDynContent
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function clearDynContentHistoryData($force = false, $keepDynContent = false)
|
||||
{
|
||||
$this->initPropel(true);
|
||||
$conf = new Configurations();
|
||||
$exist = $conf->exists('CLEAN_DYN_CONTENT_HISTORY', 'history');
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
if ($force === false && $exist === true) {
|
||||
$config = (object)$conf->load('CLEAN_DYN_CONTENT_HISTORY', 'history');
|
||||
if ($config->updated) {
|
||||
CLI::logging("-> This was previously updated.\n");
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
if ($force === false && $keepDynContent) {
|
||||
CLI::logging("-> Keep DYN_CONTENT_HISTORY.\n");
|
||||
|
||||
return;
|
||||
}
|
||||
//We will to proceed to clean DYN_CONTENT_HISTORY
|
||||
$query = "UPDATE APP_HISTORY SET HISTORY_DATA = IF(LOCATE('DYN_CONTENT_HISTORY',HISTORY_DATA)>0, CONCAT( "
|
||||
. " SUBSTRING_INDEX(HISTORY_DATA, ':', 1), "
|
||||
. " ':', "
|
||||
. " CAST( "
|
||||
. " SUBSTRING( "
|
||||
. " SUBSTRING_INDEX(HISTORY_DATA, ':{', 1), "
|
||||
. " LOCATE(':', HISTORY_DATA)+1 "
|
||||
. " ) AS SIGNED "
|
||||
. " )-1, "
|
||||
. " SUBSTRING( "
|
||||
. " CONCAT( "
|
||||
. " SUBSTRING_INDEX(HISTORY_DATA, 's:19:\"DYN_CONTENT_HISTORY\";s:', 1), "
|
||||
. " SUBSTRING( "
|
||||
. " SUBSTRING( "
|
||||
. " HISTORY_DATA, "
|
||||
. " LOCATE('s:19:\"DYN_CONTENT_HISTORY\";s:', HISTORY_DATA)+29 "
|
||||
. " ), "
|
||||
. " LOCATE( "
|
||||
. " '\";', "
|
||||
. " SUBSTRING( "
|
||||
. " HISTORY_DATA, "
|
||||
. " LOCATE('s:19:\"DYN_CONTENT_HISTORY\";s:', HISTORY_DATA)+29 "
|
||||
. " ) "
|
||||
. " )+2 "
|
||||
. " ) "
|
||||
. " ), "
|
||||
. " LOCATE(':{', HISTORY_DATA) "
|
||||
. " ) "
|
||||
. "), HISTORY_DATA)";
|
||||
|
||||
$con = Propel::getConnection("workflow");
|
||||
$stmt = $con->createStatement();
|
||||
$stmt->executeQuery($query);
|
||||
CLI::logging("-> Table fixed for " . $this->dbName . ".APP_HISTORY\n");
|
||||
$stmt = $con->createStatement();
|
||||
|
||||
$conf->aConfig = ['updated' => true];
|
||||
$conf->saveConfig('CLEAN_DYN_CONTENT_HISTORY', 'history');
|
||||
|
||||
}
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
/**
|
||||
* Migrate the contents of table APP_HISTORY to table APP_DATA_CHANGE_LOG.
|
||||
*
|
||||
* @param boolean $force
|
||||
* @param boolean $removedDynContentHistory
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function migrateAppHistoryToAppDataChangeLog($force = false, $removedDynContentHistory = false)
|
||||
public function migrateAppHistoryToAppDataChangeLog($force = false)
|
||||
{
|
||||
$this->initPropel(true);
|
||||
|
||||
$conf = new Configurations();
|
||||
$exist = $conf->exists('MIGRATED_APP_HISTORY', 'history');
|
||||
if ($exist === true && $force === false) {
|
||||
$config = (object) $conf->load('MIGRATED_APP_HISTORY', 'history');
|
||||
$config = (object)$conf->load('MIGRATED_APP_HISTORY', 'history');
|
||||
if ($config->updated) {
|
||||
CLI::logging("> This was previously updated.\n");
|
||||
CLI::logging("-> This was previously updated.\n");
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$remove = ""
|
||||
. "CONCAT( "
|
||||
. " SUBSTRING_INDEX(A.HISTORY_DATA, ':', 1), "
|
||||
. " ':', "
|
||||
. " CAST( "
|
||||
. " SUBSTRING( "
|
||||
. " SUBSTRING_INDEX(A.HISTORY_DATA, ':{', 1), "
|
||||
. " LOCATE(':', A.HISTORY_DATA)+1 "
|
||||
. " ) AS SIGNED "
|
||||
. " )-1, "
|
||||
. " SUBSTRING( "
|
||||
. " CONCAT( "
|
||||
. " SUBSTRING_INDEX(A.HISTORY_DATA, 's:19:\"DYN_CONTENT_HISTORY\";s:', 1), "
|
||||
. " SUBSTRING( "
|
||||
. " SUBSTRING( "
|
||||
. " A.HISTORY_DATA, "
|
||||
. " LOCATE('s:19:\"DYN_CONTENT_HISTORY\";s:', A.HISTORY_DATA)+29 "
|
||||
. " ), "
|
||||
. " LOCATE( "
|
||||
. " '\";', "
|
||||
. " SUBSTRING( "
|
||||
. " A.HISTORY_DATA, "
|
||||
. " LOCATE('s:19:\"DYN_CONTENT_HISTORY\";s:', A.HISTORY_DATA)+29 "
|
||||
. " ) "
|
||||
. " )+2 "
|
||||
. " ) "
|
||||
. " ), "
|
||||
. " LOCATE(':{', A.HISTORY_DATA) "
|
||||
. " ) "
|
||||
. ") ";
|
||||
|
||||
$select = ""
|
||||
. "SELECT "
|
||||
. "A.HISTORY_DATE AS 'DATE', "
|
||||
. "B.APP_NUMBER AS 'APP_NUMBER', "
|
||||
. "A.DEL_INDEX AS 'DEL_INDEX', "
|
||||
. "C.PRO_ID AS 'PRO_ID', "
|
||||
. "D.TAS_ID AS 'TAS_ID', "
|
||||
. "E.USR_ID AS 'USR_ID', "
|
||||
. "IF( "
|
||||
. " A.OBJ_TYPE='DYNAFORM', "
|
||||
. " " . ChangeLog::DYNAFORM . ", "
|
||||
. " IF( "
|
||||
. " A.OBJ_TYPE='OUTPUT_DOCUMENT', "
|
||||
. " " . ChangeLog::OUTPUT_DOCUMENT . ", "
|
||||
. " IF( "
|
||||
. " A.OBJ_TYPE='INPUT_DOCUMENT', "
|
||||
. " " . ChangeLog::INPUT_DOCUMENT . ", "
|
||||
. " IF( "
|
||||
. " A.OBJ_TYPE='ASSIGN_TASK', "
|
||||
. " " . ChangeLog::TRIGGER . ", "
|
||||
. " IF( "
|
||||
. " A.OBJ_TYPE='EXTERNAL', "
|
||||
. " " . ChangeLog::EXTERNAL_STEP . ", "
|
||||
. " 0 "
|
||||
. " ) "
|
||||
. " ) "
|
||||
. " ) "
|
||||
. " ) "
|
||||
. ") AS 'OBJECT_TYPE', "
|
||||
. "IF( "
|
||||
. " F.DYN_ID IS NOT NULL, "
|
||||
. " F.DYN_ID, "
|
||||
. " IF( "
|
||||
. " G.OUT_DOC_ID IS NOT NULL, "
|
||||
. " G.OUT_DOC_ID, "
|
||||
. " IF( "
|
||||
. " H.INP_DOC_ID IS NOT NULL, "
|
||||
. " H.INP_DOC_ID, "
|
||||
. " 0 "
|
||||
. " ) "
|
||||
. " ) "
|
||||
. ") AS 'OBJECT_ID', "
|
||||
. "IF( "
|
||||
. " A.DYN_UID='-1' OR A.DYN_UID='-2', "
|
||||
. " 0,"
|
||||
. " A.DYN_UID "
|
||||
. ") AS 'OBJECT_UID', "
|
||||
. "IF( "
|
||||
. " A.DYN_UID='-1', "
|
||||
. " " . ChangeLog::BEFORE_ASSIGNMENT . ", "
|
||||
. " IF( "
|
||||
. " A.DYN_UID='-2', "
|
||||
. " " . ChangeLog::UNKNOW_STEP . ", "
|
||||
. " " . ChangeLog::UNKNOW_STEP . " "
|
||||
. " ) "
|
||||
. ") AS 'EXECUTED_AT', "
|
||||
. "" . ChangeLog::FromWeb . " AS 'SOURCE_ID', "
|
||||
. "IF(LOCATE('DYN_CONTENT_HISTORY',A.HISTORY_DATA)>0 AND " . ($removedDynContentHistory ? 'true' : 'false') . "=true, " . $remove . ", A.HISTORY_DATA) AS 'DATA', "
|
||||
. "IF(LOCATE('SYS_SKIN',B.APP_DATA)>0, SUBSTRING_INDEX(SUBSTRING(B.APP_DATA, LOCATE('SYS_SKIN',B.APP_DATA)+16),'\"',1), '') AS 'SKIN', "
|
||||
. "IF(LOCATE('SYS_LANG',B.APP_DATA)>0, SUBSTRING(B.APP_DATA, LOCATE('SYS_LANG',B.APP_DATA)+15,2), '') AS 'LANGUAGE', "
|
||||
. "1 AS ROW_MIGRATION "
|
||||
. "FROM " . $this->dbName . ".APP_HISTORY AS A "
|
||||
. "LEFT JOIN " . $this->dbName . ".APPLICATION AS B ON (B.APP_UID=A.APP_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".PROCESS AS C ON (C.PRO_UID=A.PRO_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".TASK AS D ON (D.TAS_UID=A.TAS_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".USERS AS E ON (E.USR_UID=A.USR_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".DYNAFORM AS F ON (F.DYN_UID=A.DYN_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".OUTPUT_DOCUMENT AS G ON (G.OUT_DOC_UID=A.DYN_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".INPUT_DOCUMENT AS H ON (H.INP_DOC_UID=A.DYN_UID) ";
|
||||
. "SELECT "
|
||||
. "A.HISTORY_DATE AS 'DATE', "
|
||||
. "B.APP_NUMBER AS 'APP_NUMBER', "
|
||||
. "A.DEL_INDEX AS 'DEL_INDEX', "
|
||||
. "C.PRO_ID AS 'PRO_ID', "
|
||||
. "D.TAS_ID AS 'TAS_ID', "
|
||||
. "E.USR_ID AS 'USR_ID', "
|
||||
. "IF( "
|
||||
. " A.OBJ_TYPE='DYNAFORM', "
|
||||
. " " . ChangeLog::DYNAFORM . ", "
|
||||
. " IF( "
|
||||
. " A.OBJ_TYPE='OUTPUT_DOCUMENT', "
|
||||
. " " . ChangeLog::OUTPUT_DOCUMENT . ", "
|
||||
. " IF( "
|
||||
. " A.OBJ_TYPE='INPUT_DOCUMENT', "
|
||||
. " " . ChangeLog::INPUT_DOCUMENT . ", "
|
||||
. " IF( "
|
||||
. " A.OBJ_TYPE='ASSIGN_TASK', "
|
||||
. " " . ChangeLog::TRIGGER . ", "
|
||||
. " IF( "
|
||||
. " A.OBJ_TYPE='EXTERNAL', "
|
||||
. " " . ChangeLog::EXTERNAL_STEP . ", "
|
||||
. " 0 "
|
||||
. " ) "
|
||||
. " ) "
|
||||
. " ) "
|
||||
. " ) "
|
||||
. ") AS 'OBJECT_TYPE', "
|
||||
. "IF( "
|
||||
. " F.DYN_ID IS NOT NULL, "
|
||||
. " F.DYN_ID, "
|
||||
. " IF( "
|
||||
. " G.OUT_DOC_ID IS NOT NULL, "
|
||||
. " G.OUT_DOC_ID, "
|
||||
. " IF( "
|
||||
. " H.INP_DOC_ID IS NOT NULL, "
|
||||
. " H.INP_DOC_ID, "
|
||||
. " 0 "
|
||||
. " ) "
|
||||
. " ) "
|
||||
. ") AS 'OBJECT_ID', "
|
||||
. "IF( "
|
||||
. " A.DYN_UID='-1' OR A.DYN_UID='-2', "
|
||||
. " 0,"
|
||||
. " A.DYN_UID "
|
||||
. ") AS 'OBJECT_UID', "
|
||||
. "IF( "
|
||||
. " A.DYN_UID='-1', "
|
||||
. " " . ChangeLog::BEFORE_ASSIGNMENT . ", "
|
||||
. " IF( "
|
||||
. " A.DYN_UID='-2', "
|
||||
. " " . ChangeLog::UNKNOW_STEP . ", "
|
||||
. " " . ChangeLog::UNKNOW_STEP . " "
|
||||
. " ) "
|
||||
. ") AS 'EXECUTED_AT', "
|
||||
. "" . ChangeLog::FromWeb . " AS 'SOURCE_ID', "
|
||||
. "A.HISTORY_DATA AS 'DATA', "
|
||||
. "IF(LOCATE('SYS_SKIN',B.APP_DATA)>0, SUBSTRING_INDEX(SUBSTRING(B.APP_DATA, LOCATE('SYS_SKIN',B.APP_DATA)+16),'\"',1), '') AS 'SKIN', "
|
||||
. "IF(LOCATE('SYS_LANG',B.APP_DATA)>0, SUBSTRING(B.APP_DATA, LOCATE('SYS_LANG',B.APP_DATA)+15,2), '') AS 'LANGUAGE', "
|
||||
. "1 AS ROW_MIGRATION "
|
||||
. "FROM " . $this->dbName . ".APP_HISTORY AS A "
|
||||
. "LEFT JOIN " . $this->dbName . ".APPLICATION AS B ON (B.APP_UID=A.APP_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".PROCESS AS C ON (C.PRO_UID=A.PRO_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".TASK AS D ON (D.TAS_UID=A.TAS_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".USERS AS E ON (E.USR_UID=A.USR_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".DYNAFORM AS F ON (F.DYN_UID=A.DYN_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".OUTPUT_DOCUMENT AS G ON (G.OUT_DOC_UID=A.DYN_UID) "
|
||||
. "LEFT JOIN " . $this->dbName . ".INPUT_DOCUMENT AS H ON (H.INP_DOC_UID=A.DYN_UID) ";
|
||||
|
||||
$delete = ""
|
||||
. "DELETE FROM " . $this->dbName . ".APP_DATA_CHANGE_LOG "
|
||||
$delete = "DELETE FROM " . $this->dbName . ".APP_DATA_CHANGE_LOG "
|
||||
. "WHERE "
|
||||
. "ROW_MIGRATION=1";
|
||||
|
||||
$insert = ""
|
||||
. "INSERT INTO " . $this->dbName . ".APP_DATA_CHANGE_LOG ( "
|
||||
$insert = "INSERT INTO " . $this->dbName . ".APP_DATA_CHANGE_LOG ( "
|
||||
. " DATE, "
|
||||
. " APP_NUMBER, "
|
||||
. " DEL_INDEX, "
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
INSERT INTO USERS (USR_UID,USR_USERNAME,USR_PASSWORD,USR_FIRSTNAME,USR_LASTNAME,USR_EMAIL,USR_DUE_DATE,USR_CREATE_DATE,USR_UPDATE_DATE,USR_STATUS,USR_COUNTRY,USR_CITY,USR_LOCATION,USR_ADDRESS,USR_PHONE,USR_FAX,USR_CELLULAR,USR_ZIP_CODE,DEP_UID,USR_POSITION,USR_RESUME,USR_BIRTHDAY,USR_ROLE,USR_REPORTS_TO,USR_REPLACED_BY ) VALUES
|
||||
INSERT INTO USERS (USR_UID,USR_USERNAME,USR_PASSWORD,USR_FIRSTNAME,USR_LASTNAME,USR_EMAIL,USR_DUE_DATE,USR_CREATE_DATE,USR_UPDATE_DATE,USR_STATUS,USR_COUNTRY,USR_CITY,USR_LOCATION,USR_ADDRESS,USR_PHONE,USR_FAX,USR_CELLULAR,USR_ZIP_CODE,DEP_UID,USR_POSITION,USR_RESUME,USR_BIRTHDAY,USR_ROLE,USR_REPORTS_TO,USR_REPLACED_BY ) VALUES
|
||||
('00000000000000000000000000000001','admin','21232f297a57a5a743894a0e4a801fc3','Administrator',' ', 'admin@processmaker.com','2020-01-01','1999-11-30 00:00:00','2008-05-23 18:36:19','ACTIVE', 'US','FL','MMK','','', '1-305-402-0282','1-305-675-1400','','','Administrator', '','1999-02-25','PROCESSMAKER_ADMIN','',''),
|
||||
('00000000000000000000000000000002','guest','674ba9750749d735ec9787d606170d78','Guest',' ', 'guest@processmaker.com','2030-01-01','2009-02-01 12:24:36','2009-02-01 12:24:36','INACTIVE', 'US','FL','MMK','','', '1-305-402-0282','1-305-675-1400','','','Guest', '','2009-02-01','PROCESSMAKER_GUEST','','');
|
||||
|
||||
@@ -61540,6 +61540,7 @@ INSERT INTO DASHLET_INSTANCE (DAS_INS_UID,DAS_UID,DAS_INS_OWNER_TYPE,DAS_INS_OWN
|
||||
|
||||
INSERT INTO CONFIGURATION (CFG_UID,OBJ_UID,CFG_VALUE,PRO_UID,USR_UID,APP_UID) VALUES
|
||||
('AUDIT_LOG','log','s:5:"false";','','',''),
|
||||
('CLEAN_DYN_CONTENT_HISTORY', 'history', 'a:1:{s:7:\"updated\";b:1;}', '', '', ''),
|
||||
('ENTERPRISE_SETTING_ENCRYPT','','a:2:{s:7:"current";s:6:"sha256";s:8:"previous";s:3:"md5";}','','',''),
|
||||
('ENVIRONMENT_SETTINGS','','a:1:{s:18:"directoryStructure";i:2;}','','',''),
|
||||
('MIGRATED_APP_HISTORY', 'history', 'a:1:{s:7:\"updated\";b:1;}', '', '', ''),
|
||||
|
||||
@@ -1131,70 +1131,4 @@ class DynaForm
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data of a DynaForm History
|
||||
*
|
||||
* @param string $dynaFormUid Unique id of DynaForm
|
||||
*
|
||||
* return array Return an array with data of a DynaForm History
|
||||
*/
|
||||
public function getDynaFormHistory($prj_uid, $dynaFormUid, array $arrayData = array())
|
||||
{
|
||||
try {
|
||||
$filter = "";
|
||||
if (isset($arrayData["filter"])) {
|
||||
$filter = $arrayData["filter"];
|
||||
}
|
||||
$start = 0;
|
||||
if (isset($arrayData["start"])) {
|
||||
$start = $arrayData["start"];
|
||||
}
|
||||
$limit = 50;
|
||||
if (isset($arrayData["limit"])) {
|
||||
$limit = $arrayData["limit"];
|
||||
}
|
||||
$this->throwExceptionIfNotExistsDynaForm($dynaFormUid, "", $this->arrayFieldNameForException["dynaFormUid"]);
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$subcriteria = $criteria->getNewCriterion(\AppHistoryPeer::HISTORY_DATE, "%" . $filter . "%", \Criteria::LIKE);
|
||||
|
||||
$criteria->addSelectColumn(\AppHistoryPeer::DYN_UID);
|
||||
$criteria->addSelectColumn(\AppHistoryPeer::HISTORY_DATA);
|
||||
$criteria->addSelectColumn(\AppHistoryPeer::HISTORY_DATE);
|
||||
$criteria->addAnd(\AppHistoryPeer::DYN_UID, $dynaFormUid, \Criteria::EQUAL);
|
||||
$criteria->addAnd(\AppHistoryPeer::OBJ_TYPE, "DYNAFORM", \Criteria::EQUAL);
|
||||
$criteria->addAnd(\AppHistoryPeer::HISTORY_DATA, "%DYN_CONTENT_HISTORY%", \Criteria::LIKE);
|
||||
$criteria->addAnd($subcriteria);
|
||||
|
||||
$criteria->addDescendingOrderByColumn(\AppHistoryPeer::HISTORY_DATE);
|
||||
$criteria->setOffset($start);
|
||||
$criteria->setLimit($limit);
|
||||
|
||||
$rsCriteria = \AppHistoryPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
$data = array();
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
$d = @unserialize($row["HISTORY_DATA"]);
|
||||
$jsonData = "";
|
||||
if (isset($d["DYN_CONTENT_HISTORY"])) {
|
||||
$decode = base64_decode($d["DYN_CONTENT_HISTORY"], true);
|
||||
if ($decode !== false) {
|
||||
$jsonData = $decode;
|
||||
}
|
||||
}
|
||||
$data[] = array(
|
||||
"history_date" => $row["HISTORY_DATE"],
|
||||
"dyn_uid" => $row["DYN_UID"],
|
||||
"dyn_content_history" => $jsonData
|
||||
);
|
||||
}
|
||||
return $data;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -220,33 +220,4 @@ class DynaForm extends Api
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Dynaform's history.
|
||||
*
|
||||
* @url POST /:prj_uid/dynaform/:dyn_uid/history
|
||||
*
|
||||
* @param string $dyn_uid {@min 32}{@max 32}
|
||||
* @param string $prj_uid {@min 32}{@max 32}
|
||||
* @param array $request_data
|
||||
*
|
||||
* @return array
|
||||
* @throws RestException
|
||||
*
|
||||
* @access protected
|
||||
* @class AccessControl {@permission PM_FACTORY}
|
||||
*/
|
||||
public function doGetDynaFormHistory($dyn_uid, $prj_uid, $request_data)
|
||||
{
|
||||
try {
|
||||
$dynaForm = new \ProcessMaker\BusinessModel\DynaForm();
|
||||
$dynaForm->setFormatFieldNameInUppercase(false);
|
||||
|
||||
$response = $dynaForm->getDynaFormHistory($prj_uid, $dyn_uid, $request_data);
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user