diff --git a/workflow/engine/classes/class.patch.php b/workflow/engine/classes/class.patch.php new file mode 100644 index 000000000..5a0cf840f --- /dev/null +++ b/workflow/engine/classes/class.patch.php @@ -0,0 +1,83 @@ +prepareStatement("describe TASK;"); + $rs = $stmt->executeQuery(); + $rs->next(); + while($row = $rs->getRow()) { + if ($row ['Field'] == "TAS_GROUP_VARIABLE") { + $version = System::getVersion (); + $version = explode('-',$version); + //$pos = strpos($version,'2.5.1-testing'); + if ($version[0] == '2.5.1') { + echo "Version " . $version[0] . " Patch\n"; + patch::$isPathchable = true; + } + break; + } + $rs->next(); + } + return patch::$isPathchable; + } + + /* + * Note.- Use after DB was upgraded. + * Set the patch, setting all the TAS_GROUP_VARIABLE to '' + * if the current task has asignated users, means SELF_SERVICE only, + * otherwise leave TAS_GROUP_VARIABLE as it is. + */ + static public function execute_11835() + { + //Check if this is the version to apply the patch + $count = 0; + $task = new Task(); + if ( patch::$isPathchable && method_exists($task,'getTasGroupVariable')) { + $con = Propel::getConnection("workflow"); + $stmt = $con->prepareStatement("select TAS_UID from TASK where TAS_ASSIGN_TYPE = 'SELF_SERVICE';"); + $recordSet = $stmt->executeQuery(); + $recordSet->next(); + $aRow = $recordSet->getRow(); + while ($aRow) { + $tasUid = $aRow['TAS_UID']; + $conUser = Propel::getConnection("workflow"); + $stmtUser = $conUser->prepareStatement("select * from TASK_USER where TAS_UID = '".$tasUid."';"); + $recordSetTaskUser = $stmtUser->executeQuery(); + if ($recordSetTaskUser->next()) { + echo "Patching uid: " . $tasUid . "\n"; + //Set the values if they match the pattern + $conChange = Propel::getConnection("workflow"); + $stmtChange = $conChange->prepareStatement("update TASK set TAS_GROUP_VARIABLE = '' where TAS_UID = '".$tasUid."';"); + $recordResult = $stmtChange->executeQuery(); + $count++; + } + $recordSet->next(); + $aRow = $recordSet->getRow(); + } + } + echo $count. " records where patched to use SELF_SERVICE feature.\n"; + } +} + + diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index 83a329367..7a5ed4253 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -598,13 +598,17 @@ class workspaceTools * @param bool $checkOnly only check if the upgrade is needed if true * @return array bool upgradeSchema for more information */ - public function upgradeDatabase($checkOnly = false) + public function upgradeDatabase ($checkOnly = false) { + G::LoadClass("patch"); + $this->initPropel( true ); + patch::is_11835Applicable(); $systemSchema = System::getSystemSchema(); - $this->upgradeSchema($systemSchema); + $this->upgradeSchema( $systemSchema ); $this->upgradeData(); + patch::execute_11835(); return true; - } + } /** * Upgrade this workspace database from a schema diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 8c0835ed1..e0b6ce986 100755 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -1198,7 +1198,7 @@ - + diff --git a/workflow/engine/data/mssql/schema.sql b/workflow/engine/data/mssql/schema.sql index 385b720d8..dfd1d81f9 100755 --- a/workflow/engine/data/mssql/schema.sql +++ b/workflow/engine/data/mssql/schema.sql @@ -1271,7 +1271,7 @@ CREATE TABLE [TASK] [TAS_PRIORITY_VARIABLE] VARCHAR(100) default '' NOT NULL, [TAS_ASSIGN_TYPE] VARCHAR(30) default 'BALANCED' NOT NULL, [TAS_ASSIGN_VARIABLE] VARCHAR(100) default '@@SYS_NEXT_USER_TO_BE_ASSIGNED' NOT NULL, - [TAS_GROUP_VARIABLE] VARCHAR(100) default '@@SYS_GROUP_TO_BE_ASSIGNED' NULL, + [TAS_GROUP_VARIABLE] VARCHAR(100) default '' NULL, [TAS_MI_INSTANCE_VARIABLE] VARCHAR(100) default '@@SYS_VAR_TOTAL_INSTANCE' NOT NULL, [TAS_MI_COMPLETE_VARIABLE] VARCHAR(100) default '@@SYS_VAR_TOTAL_INSTANCES_COMPLETE' NOT NULL, [TAS_ASSIGN_LOCATION] VARCHAR(20) default 'FALSE' NOT NULL, diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index fa1b8c1fa..bfe35e306 100755 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -568,7 +568,7 @@ CREATE TABLE `TASK` `TAS_PRIORITY_VARIABLE` VARCHAR(100) default '' NOT NULL, `TAS_ASSIGN_TYPE` VARCHAR(30) default 'BALANCED' NOT NULL, `TAS_ASSIGN_VARIABLE` VARCHAR(100) default '@@SYS_NEXT_USER_TO_BE_ASSIGNED' NOT NULL, - `TAS_GROUP_VARIABLE` VARCHAR(100) default '@@SYS_GROUP_TO_BE_ASSIGNED', + `TAS_GROUP_VARIABLE` VARCHAR(100) default '', `TAS_MI_INSTANCE_VARIABLE` VARCHAR(100) default '@@SYS_VAR_TOTAL_INSTANCE' NOT NULL, `TAS_MI_COMPLETE_VARIABLE` VARCHAR(100) default '@@SYS_VAR_TOTAL_INSTANCES_COMPLETE' NOT NULL, `TAS_ASSIGN_LOCATION` VARCHAR(20) default 'FALSE' NOT NULL, diff --git a/workflow/engine/data/oracle/schema.sql b/workflow/engine/data/oracle/schema.sql index 41d49ce45..21c1e0227 100755 --- a/workflow/engine/data/oracle/schema.sql +++ b/workflow/engine/data/oracle/schema.sql @@ -711,7 +711,7 @@ CREATE TABLE "TASK" "TAS_PRIORITY_VARIABLE" VARCHAR2(100) default '' NOT NULL, "TAS_ASSIGN_TYPE" VARCHAR2(30) default 'BALANCED' NOT NULL, "TAS_ASSIGN_VARIABLE" VARCHAR2(100) default '@@SYS_NEXT_USER_TO_BE_ASSIGNED' NOT NULL, - "TAS_GROUP_VARIABLE" VARCHAR2(100) default '@@SYS_GROUP_TO_BE_ASSIGNED', + "TAS_GROUP_VARIABLE" VARCHAR2(100) default '', "TAS_MI_INSTANCE_VARIABLE" VARCHAR2(100) default '@@SYS_VAR_TOTAL_INSTANCE' NOT NULL, "TAS_MI_COMPLETE_VARIABLE" VARCHAR2(100) default '@@SYS_VAR_TOTAL_INSTANCES_COMPLETE' NOT NULL, "TAS_ASSIGN_LOCATION" VARCHAR2(20) default 'FALSE' NOT NULL, diff --git a/workflow/engine/methods/tasks/tasks_Ajax.php b/workflow/engine/methods/tasks/tasks_Ajax.php index fd90b99e4..79b4e07f1 100755 --- a/workflow/engine/methods/tasks/tasks_Ajax.php +++ b/workflow/engine/methods/tasks/tasks_Ajax.php @@ -69,6 +69,9 @@ try { } if ($aData['TAS_ASSIGN_TYPE'] == 'SELF_SERVICE_EVALUATE') { $aData['TAS_ASSIGN_TYPE'] = 'SELF_SERVICE'; + if(trim($aData['TAS_GROUP_VARIABLE']) == '') { + $aData['TAS_GROUP_VARIABLE'] = '@@SYS_GROUP_TO_BE_ASSIGNED'; + } } else { $aData['TAS_GROUP_VARIABLE'] = ''; }