diff --git a/database/factories/WebEntryFactory.php b/database/factories/WebEntryFactory.php index 6161e2c4c..6b166fcc5 100644 --- a/database/factories/WebEntryFactory.php +++ b/database/factories/WebEntryFactory.php @@ -22,6 +22,7 @@ $factory->define(\ProcessMaker\Model\WebEntry::class, function(Faker $faker) { 'WE_CUSTOM_TITLE' => $faker->words(5, true), 'WE_AUTHENTICATION' => $faker->randomElement(['LOGIN_REQUIRED', 'ANONYMOUS']), 'WE_HIDE_INFORMATION_BAR' => $faker->randomElement(['0', '1']), + 'WE_HIDE_ACTIVE_SESSION_WARNING' => $faker->randomElement(['0', '1']), 'WE_CALLBACK' => $faker->randomElement(['PROCESSMAKER', 'CUSTOM', 'CUSTOM_CLEAR']), 'WE_CALLBACK_URL' => $faker->url, 'WE_LINK_GENERATION' => $faker->randomElement(['DEFAULT', 'ADVANCED']), diff --git a/tests/resources/dynaformDataForRenewUids.json b/tests/resources/dynaformDataForRenewUids.json index 6156ab080..08b4a942c 100644 --- a/tests/resources/dynaformDataForRenewUids.json +++ b/tests/resources/dynaformDataForRenewUids.json @@ -781,6 +781,7 @@ "WE_TYPE": "SINGLE", "WE_AUTHENTICATION": "ANONYMOUS", "WE_HIDE_INFORMATION_BAR": "1", + "WE_HIDE_ACTIVE_SESSION_WARNING": "0", "WE_CALLBACK": "PROCESSMAKER", "WE_CALLBACK_URL": "", "WE_LINK_GENERATION": "DEFAULT", diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryTest.php index f3cf9fb9f..0e49def9e 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryTest.php @@ -99,4 +99,42 @@ class WebEntryTest extends TestCase $isWebEntry = BmWebEntry::isWebEntry($emptyProcess, $emptyFilePath); $this->assertFalse($isWebEntry); } + + /** + * Test the method verifyHideActiveSessionWarningOption() + * @test + * @covers \ProcessMaker\BusinessModel\WebEntry::verifyHideActiveSessionWarningOption() + */ + public function it_should_test_verifyHideActiveSessionWarningOption_method() + { + // Initializing variables + $phpExtension = '.php'; + $postFileExtension = 'Post.php'; + $infoFileExtension = 'Info.php'; + $webEntryFilename = 'My_Custom_Form'; + + //assert true result + $webEntry = factory(WebEntry::class)->create([ + 'WE_DATA' => $webEntryFilename . $phpExtension, + 'WE_HIDE_ACTIVE_SESSION_WARNING' => '0' + ]); + + $weUid = $webEntry->WE_UID; + $webEntry = new BmWebEntry(); + $result = $webEntry->verifyHideActiveSessionWarningOption($weUid); + + $this->assertEquals($result, true); + + //assert false result + $webEntry = factory(WebEntry::class)->create([ + 'WE_DATA' => $webEntryFilename . $phpExtension, + 'WE_HIDE_ACTIVE_SESSION_WARNING' => '1' + ]); + + $weUid = $webEntry->WE_UID; + $webEntry = new BmWebEntry(); + $result = $webEntry->verifyHideActiveSessionWarningOption($weUid); + + $this->assertEquals($result, false); + } } diff --git a/thirdparty/phing/lib/Capsule.php b/thirdparty/phing/lib/Capsule.php index 166bfb2ca..afa164746 100644 --- a/thirdparty/phing/lib/Capsule.php +++ b/thirdparty/phing/lib/Capsule.php @@ -200,9 +200,9 @@ class Capsule { * @return string "Best guess" path for this file. */ protected function resolvePath($file, $basepath) { - if ( !($file{0} == DIRECTORY_SEPARATOR || $file{0} == '/') + if ( !($file[0] == DIRECTORY_SEPARATOR || $file[0] == '/') // also account for C:\ style path - && !($file{1} == ':' && ($file{2} == DIRECTORY_SEPARATOR || $file{2} == '/'))) { + && !($file[1] == ':' && ($file[2] == DIRECTORY_SEPARATOR || $file[2] == '/'))) { if ($basepath != null) { $file = $basepath . DIRECTORY_SEPARATOR . $file; } diff --git a/thirdparty/phing/system/io/UnixFileSystem.php b/thirdparty/phing/system/io/UnixFileSystem.php index 85f467d0e..610841c16 100644 --- a/thirdparty/phing/system/io/UnixFileSystem.php +++ b/thirdparty/phing/system/io/UnixFileSystem.php @@ -75,8 +75,8 @@ class UnixFileSystem extends FileSystem { // Resolve home directories. We assume /home is where all home // directories reside, b/c there is no other way to do this with // PHP AFAIK. - if ($strPathname{0} === "~") { - if ($strPathname{1} === "/") { // like ~/foo => /home/user/foo + if ($strPathname[0] === "~") { + if ($strPathname[1] === "/") { // like ~/foo => /home/user/foo $strPathname = "/home/" . get_current_user() . substr($strPathname, 1); } else { // like ~foo => /home/foo $pos = strpos($strPathname, "/"); @@ -88,7 +88,7 @@ class UnixFileSystem extends FileSystem { $n = strlen($strPathname); $prevChar = 0; for ($i=0; $i < $n; $i++) { - $c = $strPathname{$i}; + $c = $strPathname[$i]; if (($prevChar === '/') && ($c === '/')) { return self::normalizer($strPathname, $n, $i - 1); } @@ -109,7 +109,7 @@ class UnixFileSystem extends FileSystem { return $pathname; } $n = (int) $len; - while (($n > 0) && ($pathname{$n-1} === '/')) { + while (($n > 0) && ($pathname[$n-1] === '/')) { $n--; } if ($n === 0) { @@ -122,7 +122,7 @@ class UnixFileSystem extends FileSystem { } $prevChar = 0; for ($i = $offset; $i < $n; $i++) { - $c = $pathname{$i}; + $c = $pathname[$i]; if (($prevChar === '/') && ($c === '/')) { continue; } @@ -140,7 +140,7 @@ class UnixFileSystem extends FileSystem { if (strlen($pathname === 0)) { return 0; } - return (($pathname{0} === '/') ? 1 : 0); + return (($pathname[0] === '/') ? 1 : 0); } /** @@ -154,7 +154,7 @@ class UnixFileSystem extends FileSystem { return $parent; } - if ($child{0} === '/') { + if ($child[0] === '/') { if ($parent === '/') { return $child; } @@ -194,7 +194,7 @@ class UnixFileSystem extends FileSystem { function getBooleanAttributes(&$f = null) { //$rv = getBooleanAttributes0($f); $name = $f->getName(); - $hidden = (strlen($name) > 0) && ($name{0} == '.'); + $hidden = (strlen($name) > 0) && ($name[0] == '.'); return ($hidden ? $this->BA_HIDDEN : 0); } diff --git a/thirdparty/phing/tasks/system/CvsPassTask.php b/thirdparty/phing/tasks/system/CvsPassTask.php index 966fb8049..420b96ee1 100644 --- a/thirdparty/phing/tasks/system/CvsPassTask.php +++ b/thirdparty/phing/tasks/system/CvsPassTask.php @@ -141,7 +141,7 @@ class CVSPassTask extends TaskPhing { private final function mangle($password){ $buf = ""; for ($i = 0, $plen = strlen($password); $i < $plen; $i++) { - $buf .= chr(self::$shifts[ord($password{$i})]); + $buf .= chr(self::$shifts[ord($password[$i])]); } return $buf; } diff --git a/thirdparty/phing/tasks/system/PropertyTask.php b/thirdparty/phing/tasks/system/PropertyTask.php index 8cc71170f..c1a769588 100644 --- a/thirdparty/phing/tasks/system/PropertyTask.php +++ b/thirdparty/phing/tasks/system/PropertyTask.php @@ -412,7 +412,7 @@ class PropertyTask extends TaskPhing { if ($pos === (strlen($value) - 1)) { array_push($fragments, '$'); $prev = $pos + 1; - } elseif ($value{$pos+1} !== '{' ) { + } elseif ($value[$pos+1] !== '{' ) { // the string positions were changed to value-1 to correct // a fatal error coming from function substring() diff --git a/thirdparty/propel-generator/classes/propel/engine/builder/DataModelBuilder.php b/thirdparty/propel-generator/classes/propel/engine/builder/DataModelBuilder.php index 41305c50d..6b1491476 100644 --- a/thirdparty/propel-generator/classes/propel/engine/builder/DataModelBuilder.php +++ b/thirdparty/propel-generator/classes/propel/engine/builder/DataModelBuilder.php @@ -91,7 +91,7 @@ abstract class DataModelBuilder { // This is a slight hack to workaround camel case inconsistencies for the DDL classes. // Basically, we want to turn ?.?.?.sqliteDDLBuilder into ?.?.?.SqliteDDLBuilder $lastdotpos = strrpos($classpath, '.'); - if ($lastdotpos) $classpath{$lastdotpos+1} = strtoupper($classpath{$lastdotpos+1}); + if ($lastdotpos) $classpath[$lastdotpos+1] = strtoupper($classpath[$lastdotpos+1]); else ucfirst($classpath); return Phing::import($classpath); diff --git a/thirdparty/propel-generator/classes/propel/engine/database/transform/XmlToAppData.php b/thirdparty/propel-generator/classes/propel/engine/database/transform/XmlToAppData.php index 8c6b112f4..1f6c88b74 100644 --- a/thirdparty/propel-generator/classes/propel/engine/database/transform/XmlToAppData.php +++ b/thirdparty/propel-generator/classes/propel/engine/database/transform/XmlToAppData.php @@ -178,7 +178,7 @@ class XmlToAppData extends AbstractHandler $this->isForReferenceOnly = ($isForRefOnly !== null ? (strtolower($isForRefOnly) === "true") : true); // defaults to TRUE } - if ($xmlFile{0} != '/') { + if ($xmlFile[0] != '/') { $f = new PhingFile($this->currentXmlFile); $xf = new PhingFile($f->getParent(), $xmlFile); $xmlFile = $xf->getPath(); diff --git a/thirdparty/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php b/thirdparty/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php index 37d90e4a6..ca1912548 100644 --- a/thirdparty/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php +++ b/thirdparty/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php @@ -369,7 +369,7 @@ abstract class AbstractPropelDataModelTask extends TaskPhing { // This is a slight hack to workaround camel case inconsistencies for the DDL classes. // Basically, we want to turn ?.?.?.sqliteDDLBuilder into ?.?.?.SqliteDDLBuilder $lastdotpos = strrpos($classpath, '.'); - if ($lastdotpos) $classpath{$lastdotpos+1} = strtoupper($classpath{$lastdotpos+1}); + if ($lastdotpos) $classpath[$lastdotpos+1] = strtoupper($classpath[$lastdotpos+1]); else ucfirst($classpath); if (empty($classpath)) { diff --git a/workflow/engine/classes/model/map/JobsPendingMapBuilder.php b/workflow/engine/classes/model/map/JobsPendingMapBuilder.php index 87ef30b16..efbaffeab 100644 --- a/workflow/engine/classes/model/map/JobsPendingMapBuilder.php +++ b/workflow/engine/classes/model/map/JobsPendingMapBuilder.php @@ -71,13 +71,13 @@ class JobsPendingMapBuilder $tMap->addColumn('PAYLOAD', 'Payload', 'string', CreoleTypes::LONGVARCHAR, true, null); - $tMap->addColumn('ATTEMPTS', 'Attempts', 'int', CreoleTypes::TINYINT, true, 3); + $tMap->addColumn('ATTEMPTS', 'Attempts', 'int', CreoleTypes::TINYINT, true, null); - $tMap->addColumn('RESERVED_AT', 'ReservedAt', 'string', CreoleTypes::BIGINT, false, 10); + $tMap->addColumn('RESERVED_AT', 'ReservedAt', 'string', CreoleTypes::BIGINT, false, 20); - $tMap->addColumn('AVAILABLE_AT', 'AvailableAt', 'string', CreoleTypes::BIGINT, true, 10); + $tMap->addColumn('AVAILABLE_AT', 'AvailableAt', 'string', CreoleTypes::BIGINT, true, 20); - $tMap->addColumn('CREATED_AT', 'CreatedAt', 'string', CreoleTypes::BIGINT, true, 10); + $tMap->addColumn('CREATED_AT', 'CreatedAt', 'string', CreoleTypes::BIGINT, true, 20); } // doBuild() diff --git a/workflow/engine/classes/model/map/ProcessVariablesMapBuilder.php b/workflow/engine/classes/model/map/ProcessVariablesMapBuilder.php index a911b5a99..5307dafc6 100644 --- a/workflow/engine/classes/model/map/ProcessVariablesMapBuilder.php +++ b/workflow/engine/classes/model/map/ProcessVariablesMapBuilder.php @@ -87,7 +87,7 @@ class ProcessVariablesMapBuilder $tMap->addColumn('VAR_SQL', 'VarSql', 'string', CreoleTypes::LONGVARCHAR, false, null); - $tMap->addColumn('VAR_NULL', 'VarNull', 'int', CreoleTypes::TINYINT, false, 32); + $tMap->addColumn('VAR_NULL', 'VarNull', 'int', CreoleTypes::TINYINT, false, null); $tMap->addColumn('VAR_DEFAULT', 'VarDefault', 'string', CreoleTypes::VARCHAR, false, 32); diff --git a/workflow/engine/classes/model/map/SchedulerMapBuilder.php b/workflow/engine/classes/model/map/SchedulerMapBuilder.php index 76b29ce83..7ed00c6ff 100755 --- a/workflow/engine/classes/model/map/SchedulerMapBuilder.php +++ b/workflow/engine/classes/model/map/SchedulerMapBuilder.php @@ -89,11 +89,11 @@ class SchedulerMapBuilder $tMap->addColumn('CATEGORY', 'Category', 'string', CreoleTypes::VARCHAR, false, 255); - $tMap->addColumn('SYSTEM', 'System', 'int', CreoleTypes::TINYINT, false, 3); + $tMap->addColumn('SYSTEM', 'System', 'int', CreoleTypes::TINYINT, false, null); $tMap->addColumn('TIMEZONE', 'Timezone', 'string', CreoleTypes::VARCHAR, false, 255); - $tMap->addColumn('ENABLE', 'Enable', 'int', CreoleTypes::TINYINT, false, 3); + $tMap->addColumn('ENABLE', 'Enable', 'int', CreoleTypes::TINYINT, false, null); $tMap->addColumn('CREATION_DATE', 'CreationDate', 'int', CreoleTypes::TIMESTAMP, false, null); diff --git a/workflow/engine/classes/model/map/WebEntryMapBuilder.php b/workflow/engine/classes/model/map/WebEntryMapBuilder.php index 65d6c66f5..b6494b13a 100644 --- a/workflow/engine/classes/model/map/WebEntryMapBuilder.php +++ b/workflow/engine/classes/model/map/WebEntryMapBuilder.php @@ -97,6 +97,8 @@ class WebEntryMapBuilder $tMap->addColumn('WE_HIDE_INFORMATION_BAR', 'WeHideInformationBar', 'string', CreoleTypes::CHAR, false, 1); + $tMap->addColumn('WE_HIDE_ACTIVE_SESSION_WARNING', 'WeHideActiveSessionWarning', 'string', CreoleTypes::CHAR, false, 1); + $tMap->addColumn('WE_CALLBACK', 'WeCallback', 'string', CreoleTypes::VARCHAR, true, 13); $tMap->addColumn('WE_CALLBACK_URL', 'WeCallbackUrl', 'string', CreoleTypes::LONGVARCHAR, false, null); diff --git a/workflow/engine/classes/model/om/BaseWebEntry.php b/workflow/engine/classes/model/om/BaseWebEntry.php index b2544ed8a..aa64db7b5 100644 --- a/workflow/engine/classes/model/om/BaseWebEntry.php +++ b/workflow/engine/classes/model/om/BaseWebEntry.php @@ -123,6 +123,12 @@ abstract class BaseWebEntry extends BaseObject implements Persistent */ protected $we_hide_information_bar = '1'; + /** + * The value for the we_hide_active_session_warning field. + * @var string + */ + protected $we_hide_active_session_warning = '1'; + /** * The value for the we_callback field. * @var string @@ -397,6 +403,17 @@ abstract class BaseWebEntry extends BaseObject implements Persistent return $this->we_hide_information_bar; } + /** + * Get the [we_hide_active_session_warning] column value. + * + * @return string + */ + public function getWeHideActiveSessionWarning() + { + + return $this->we_hide_active_session_warning; + } + /** * Get the [we_callback] column value. * @@ -840,6 +857,28 @@ abstract class BaseWebEntry extends BaseObject implements Persistent } // setWeHideInformationBar() + /** + * Set the value of [we_hide_active_session_warning] column. + * + * @param string $v new value + * @return void + */ + public function setWeHideActiveSessionWarning($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->we_hide_active_session_warning !== $v || $v === '1') { + $this->we_hide_active_session_warning = $v; + $this->modifiedColumns[] = WebEntryPeer::WE_HIDE_ACTIVE_SESSION_WARNING; + } + + } // setWeHideActiveSessionWarning() + /** * Set the value of [we_callback] column. * @@ -1043,26 +1082,28 @@ abstract class BaseWebEntry extends BaseObject implements Persistent $this->we_hide_information_bar = $rs->getString($startcol + 15); - $this->we_callback = $rs->getString($startcol + 16); + $this->we_hide_active_session_warning = $rs->getString($startcol + 16); - $this->we_callback_url = $rs->getString($startcol + 17); + $this->we_callback = $rs->getString($startcol + 17); - $this->we_link_generation = $rs->getString($startcol + 18); + $this->we_callback_url = $rs->getString($startcol + 18); - $this->we_link_skin = $rs->getString($startcol + 19); + $this->we_link_generation = $rs->getString($startcol + 19); - $this->we_link_language = $rs->getString($startcol + 20); + $this->we_link_skin = $rs->getString($startcol + 20); - $this->we_link_domain = $rs->getString($startcol + 21); + $this->we_link_language = $rs->getString($startcol + 21); - $this->we_show_in_new_case = $rs->getString($startcol + 22); + $this->we_link_domain = $rs->getString($startcol + 22); + + $this->we_show_in_new_case = $rs->getString($startcol + 23); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 23; // 23 = WebEntryPeer::NUM_COLUMNS - WebEntryPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 24; // 24 = WebEntryPeer::NUM_COLUMNS - WebEntryPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating WebEntry object", $e); @@ -1315,24 +1356,27 @@ abstract class BaseWebEntry extends BaseObject implements Persistent return $this->getWeHideInformationBar(); break; case 16: - return $this->getWeCallback(); + return $this->getWeHideActiveSessionWarning(); break; case 17: - return $this->getWeCallbackUrl(); + return $this->getWeCallback(); break; case 18: - return $this->getWeLinkGeneration(); + return $this->getWeCallbackUrl(); break; case 19: - return $this->getWeLinkSkin(); + return $this->getWeLinkGeneration(); break; case 20: - return $this->getWeLinkLanguage(); + return $this->getWeLinkSkin(); break; case 21: - return $this->getWeLinkDomain(); + return $this->getWeLinkLanguage(); break; case 22: + return $this->getWeLinkDomain(); + break; + case 23: return $this->getWeShowInNewCase(); break; default: @@ -1371,13 +1415,14 @@ abstract class BaseWebEntry extends BaseObject implements Persistent $keys[13] => $this->getWeCustomTitle(), $keys[14] => $this->getWeAuthentication(), $keys[15] => $this->getWeHideInformationBar(), - $keys[16] => $this->getWeCallback(), - $keys[17] => $this->getWeCallbackUrl(), - $keys[18] => $this->getWeLinkGeneration(), - $keys[19] => $this->getWeLinkSkin(), - $keys[20] => $this->getWeLinkLanguage(), - $keys[21] => $this->getWeLinkDomain(), - $keys[22] => $this->getWeShowInNewCase(), + $keys[16] => $this->getWeHideActiveSessionWarning(), + $keys[17] => $this->getWeCallback(), + $keys[18] => $this->getWeCallbackUrl(), + $keys[19] => $this->getWeLinkGeneration(), + $keys[20] => $this->getWeLinkSkin(), + $keys[21] => $this->getWeLinkLanguage(), + $keys[22] => $this->getWeLinkDomain(), + $keys[23] => $this->getWeShowInNewCase(), ); return $result; } @@ -1458,24 +1503,27 @@ abstract class BaseWebEntry extends BaseObject implements Persistent $this->setWeHideInformationBar($value); break; case 16: - $this->setWeCallback($value); + $this->setWeHideActiveSessionWarning($value); break; case 17: - $this->setWeCallbackUrl($value); + $this->setWeCallback($value); break; case 18: - $this->setWeLinkGeneration($value); + $this->setWeCallbackUrl($value); break; case 19: - $this->setWeLinkSkin($value); + $this->setWeLinkGeneration($value); break; case 20: - $this->setWeLinkLanguage($value); + $this->setWeLinkSkin($value); break; case 21: - $this->setWeLinkDomain($value); + $this->setWeLinkLanguage($value); break; case 22: + $this->setWeLinkDomain($value); + break; + case 23: $this->setWeShowInNewCase($value); break; } // switch() @@ -1566,31 +1614,35 @@ abstract class BaseWebEntry extends BaseObject implements Persistent } if (array_key_exists($keys[16], $arr)) { - $this->setWeCallback($arr[$keys[16]]); + $this->setWeHideActiveSessionWarning($arr[$keys[16]]); } if (array_key_exists($keys[17], $arr)) { - $this->setWeCallbackUrl($arr[$keys[17]]); + $this->setWeCallback($arr[$keys[17]]); } if (array_key_exists($keys[18], $arr)) { - $this->setWeLinkGeneration($arr[$keys[18]]); + $this->setWeCallbackUrl($arr[$keys[18]]); } if (array_key_exists($keys[19], $arr)) { - $this->setWeLinkSkin($arr[$keys[19]]); + $this->setWeLinkGeneration($arr[$keys[19]]); } if (array_key_exists($keys[20], $arr)) { - $this->setWeLinkLanguage($arr[$keys[20]]); + $this->setWeLinkSkin($arr[$keys[20]]); } if (array_key_exists($keys[21], $arr)) { - $this->setWeLinkDomain($arr[$keys[21]]); + $this->setWeLinkLanguage($arr[$keys[21]]); } if (array_key_exists($keys[22], $arr)) { - $this->setWeShowInNewCase($arr[$keys[22]]); + $this->setWeLinkDomain($arr[$keys[22]]); + } + + if (array_key_exists($keys[23], $arr)) { + $this->setWeShowInNewCase($arr[$keys[23]]); } } @@ -1668,6 +1720,10 @@ abstract class BaseWebEntry extends BaseObject implements Persistent $criteria->add(WebEntryPeer::WE_HIDE_INFORMATION_BAR, $this->we_hide_information_bar); } + if ($this->isColumnModified(WebEntryPeer::WE_HIDE_ACTIVE_SESSION_WARNING)) { + $criteria->add(WebEntryPeer::WE_HIDE_ACTIVE_SESSION_WARNING, $this->we_hide_active_session_warning); + } + if ($this->isColumnModified(WebEntryPeer::WE_CALLBACK)) { $criteria->add(WebEntryPeer::WE_CALLBACK, $this->we_callback); } @@ -1780,6 +1836,8 @@ abstract class BaseWebEntry extends BaseObject implements Persistent $copyObj->setWeHideInformationBar($this->we_hide_information_bar); + $copyObj->setWeHideActiveSessionWarning($this->we_hide_active_session_warning); + $copyObj->setWeCallback($this->we_callback); $copyObj->setWeCallbackUrl($this->we_callback_url); diff --git a/workflow/engine/classes/model/om/BaseWebEntryPeer.php b/workflow/engine/classes/model/om/BaseWebEntryPeer.php index dac63fa3f..ba3917de4 100644 --- a/workflow/engine/classes/model/om/BaseWebEntryPeer.php +++ b/workflow/engine/classes/model/om/BaseWebEntryPeer.php @@ -25,7 +25,7 @@ abstract class BaseWebEntryPeer const CLASS_DEFAULT = 'classes.model.WebEntry'; /** The total number of columns. */ - const NUM_COLUMNS = 23; + const NUM_COLUMNS = 24; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -79,6 +79,9 @@ abstract class BaseWebEntryPeer /** the column name for the WE_HIDE_INFORMATION_BAR field */ const WE_HIDE_INFORMATION_BAR = 'WEB_ENTRY.WE_HIDE_INFORMATION_BAR'; + /** the column name for the WE_HIDE_ACTIVE_SESSION_WARNING field */ + const WE_HIDE_ACTIVE_SESSION_WARNING = 'WEB_ENTRY.WE_HIDE_ACTIVE_SESSION_WARNING'; + /** the column name for the WE_CALLBACK field */ const WE_CALLBACK = 'WEB_ENTRY.WE_CALLBACK'; @@ -111,10 +114,10 @@ abstract class BaseWebEntryPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('WeUid', 'ProUid', 'TasUid', 'DynUid', 'UsrUid', 'WeMethod', 'WeInputDocumentAccess', 'WeData', 'WeCreateUsrUid', 'WeUpdateUsrUid', 'WeCreateDate', 'WeUpdateDate', 'WeType', 'WeCustomTitle', 'WeAuthentication', 'WeHideInformationBar', 'WeCallback', 'WeCallbackUrl', 'WeLinkGeneration', 'WeLinkSkin', 'WeLinkLanguage', 'WeLinkDomain', 'WeShowInNewCase', ), - BasePeer::TYPE_COLNAME => array (WebEntryPeer::WE_UID, WebEntryPeer::PRO_UID, WebEntryPeer::TAS_UID, WebEntryPeer::DYN_UID, WebEntryPeer::USR_UID, WebEntryPeer::WE_METHOD, WebEntryPeer::WE_INPUT_DOCUMENT_ACCESS, WebEntryPeer::WE_DATA, WebEntryPeer::WE_CREATE_USR_UID, WebEntryPeer::WE_UPDATE_USR_UID, WebEntryPeer::WE_CREATE_DATE, WebEntryPeer::WE_UPDATE_DATE, WebEntryPeer::WE_TYPE, WebEntryPeer::WE_CUSTOM_TITLE, WebEntryPeer::WE_AUTHENTICATION, WebEntryPeer::WE_HIDE_INFORMATION_BAR, WebEntryPeer::WE_CALLBACK, WebEntryPeer::WE_CALLBACK_URL, WebEntryPeer::WE_LINK_GENERATION, WebEntryPeer::WE_LINK_SKIN, WebEntryPeer::WE_LINK_LANGUAGE, WebEntryPeer::WE_LINK_DOMAIN, WebEntryPeer::WE_SHOW_IN_NEW_CASE, ), - BasePeer::TYPE_FIELDNAME => array ('WE_UID', 'PRO_UID', 'TAS_UID', 'DYN_UID', 'USR_UID', 'WE_METHOD', 'WE_INPUT_DOCUMENT_ACCESS', 'WE_DATA', 'WE_CREATE_USR_UID', 'WE_UPDATE_USR_UID', 'WE_CREATE_DATE', 'WE_UPDATE_DATE', 'WE_TYPE', 'WE_CUSTOM_TITLE', 'WE_AUTHENTICATION', 'WE_HIDE_INFORMATION_BAR', 'WE_CALLBACK', 'WE_CALLBACK_URL', 'WE_LINK_GENERATION', 'WE_LINK_SKIN', 'WE_LINK_LANGUAGE', 'WE_LINK_DOMAIN', 'WE_SHOW_IN_NEW_CASE', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, ) + BasePeer::TYPE_PHPNAME => array ('WeUid', 'ProUid', 'TasUid', 'DynUid', 'UsrUid', 'WeMethod', 'WeInputDocumentAccess', 'WeData', 'WeCreateUsrUid', 'WeUpdateUsrUid', 'WeCreateDate', 'WeUpdateDate', 'WeType', 'WeCustomTitle', 'WeAuthentication', 'WeHideInformationBar', 'WeHideActiveSessionWarning', 'WeCallback', 'WeCallbackUrl', 'WeLinkGeneration', 'WeLinkSkin', 'WeLinkLanguage', 'WeLinkDomain', 'WeShowInNewCase', ), + BasePeer::TYPE_COLNAME => array (WebEntryPeer::WE_UID, WebEntryPeer::PRO_UID, WebEntryPeer::TAS_UID, WebEntryPeer::DYN_UID, WebEntryPeer::USR_UID, WebEntryPeer::WE_METHOD, WebEntryPeer::WE_INPUT_DOCUMENT_ACCESS, WebEntryPeer::WE_DATA, WebEntryPeer::WE_CREATE_USR_UID, WebEntryPeer::WE_UPDATE_USR_UID, WebEntryPeer::WE_CREATE_DATE, WebEntryPeer::WE_UPDATE_DATE, WebEntryPeer::WE_TYPE, WebEntryPeer::WE_CUSTOM_TITLE, WebEntryPeer::WE_AUTHENTICATION, WebEntryPeer::WE_HIDE_INFORMATION_BAR, WebEntryPeer::WE_HIDE_ACTIVE_SESSION_WARNING, WebEntryPeer::WE_CALLBACK, WebEntryPeer::WE_CALLBACK_URL, WebEntryPeer::WE_LINK_GENERATION, WebEntryPeer::WE_LINK_SKIN, WebEntryPeer::WE_LINK_LANGUAGE, WebEntryPeer::WE_LINK_DOMAIN, WebEntryPeer::WE_SHOW_IN_NEW_CASE, ), + BasePeer::TYPE_FIELDNAME => array ('WE_UID', 'PRO_UID', 'TAS_UID', 'DYN_UID', 'USR_UID', 'WE_METHOD', 'WE_INPUT_DOCUMENT_ACCESS', 'WE_DATA', 'WE_CREATE_USR_UID', 'WE_UPDATE_USR_UID', 'WE_CREATE_DATE', 'WE_UPDATE_DATE', 'WE_TYPE', 'WE_CUSTOM_TITLE', 'WE_AUTHENTICATION', 'WE_HIDE_INFORMATION_BAR', 'WE_HIDE_ACTIVE_SESSION_WARNING', 'WE_CALLBACK', 'WE_CALLBACK_URL', 'WE_LINK_GENERATION', 'WE_LINK_SKIN', 'WE_LINK_LANGUAGE', 'WE_LINK_DOMAIN', 'WE_SHOW_IN_NEW_CASE', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ) ); /** @@ -124,10 +127,10 @@ abstract class BaseWebEntryPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('WeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'DynUid' => 3, 'UsrUid' => 4, 'WeMethod' => 5, 'WeInputDocumentAccess' => 6, 'WeData' => 7, 'WeCreateUsrUid' => 8, 'WeUpdateUsrUid' => 9, 'WeCreateDate' => 10, 'WeUpdateDate' => 11, 'WeType' => 12, 'WeCustomTitle' => 13, 'WeAuthentication' => 14, 'WeHideInformationBar' => 15, 'WeCallback' => 16, 'WeCallbackUrl' => 17, 'WeLinkGeneration' => 18, 'WeLinkSkin' => 19, 'WeLinkLanguage' => 20, 'WeLinkDomain' => 21, 'WeShowInNewCase' => 22, ), - BasePeer::TYPE_COLNAME => array (WebEntryPeer::WE_UID => 0, WebEntryPeer::PRO_UID => 1, WebEntryPeer::TAS_UID => 2, WebEntryPeer::DYN_UID => 3, WebEntryPeer::USR_UID => 4, WebEntryPeer::WE_METHOD => 5, WebEntryPeer::WE_INPUT_DOCUMENT_ACCESS => 6, WebEntryPeer::WE_DATA => 7, WebEntryPeer::WE_CREATE_USR_UID => 8, WebEntryPeer::WE_UPDATE_USR_UID => 9, WebEntryPeer::WE_CREATE_DATE => 10, WebEntryPeer::WE_UPDATE_DATE => 11, WebEntryPeer::WE_TYPE => 12, WebEntryPeer::WE_CUSTOM_TITLE => 13, WebEntryPeer::WE_AUTHENTICATION => 14, WebEntryPeer::WE_HIDE_INFORMATION_BAR => 15, WebEntryPeer::WE_CALLBACK => 16, WebEntryPeer::WE_CALLBACK_URL => 17, WebEntryPeer::WE_LINK_GENERATION => 18, WebEntryPeer::WE_LINK_SKIN => 19, WebEntryPeer::WE_LINK_LANGUAGE => 20, WebEntryPeer::WE_LINK_DOMAIN => 21, WebEntryPeer::WE_SHOW_IN_NEW_CASE => 22, ), - BasePeer::TYPE_FIELDNAME => array ('WE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'DYN_UID' => 3, 'USR_UID' => 4, 'WE_METHOD' => 5, 'WE_INPUT_DOCUMENT_ACCESS' => 6, 'WE_DATA' => 7, 'WE_CREATE_USR_UID' => 8, 'WE_UPDATE_USR_UID' => 9, 'WE_CREATE_DATE' => 10, 'WE_UPDATE_DATE' => 11, 'WE_TYPE' => 12, 'WE_CUSTOM_TITLE' => 13, 'WE_AUTHENTICATION' => 14, 'WE_HIDE_INFORMATION_BAR' => 15, 'WE_CALLBACK' => 16, 'WE_CALLBACK_URL' => 17, 'WE_LINK_GENERATION' => 18, 'WE_LINK_SKIN' => 19, 'WE_LINK_LANGUAGE' => 20, 'WE_LINK_DOMAIN' => 21, 'WE_SHOW_IN_NEW_CASE' => 22, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, ) + BasePeer::TYPE_PHPNAME => array ('WeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'DynUid' => 3, 'UsrUid' => 4, 'WeMethod' => 5, 'WeInputDocumentAccess' => 6, 'WeData' => 7, 'WeCreateUsrUid' => 8, 'WeUpdateUsrUid' => 9, 'WeCreateDate' => 10, 'WeUpdateDate' => 11, 'WeType' => 12, 'WeCustomTitle' => 13, 'WeAuthentication' => 14, 'WeHideInformationBar' => 15, 'WeHideActiveSessionWarning' => 16, 'WeCallback' => 17, 'WeCallbackUrl' => 18, 'WeLinkGeneration' => 19, 'WeLinkSkin' => 20, 'WeLinkLanguage' => 21, 'WeLinkDomain' => 22, 'WeShowInNewCase' => 23, ), + BasePeer::TYPE_COLNAME => array (WebEntryPeer::WE_UID => 0, WebEntryPeer::PRO_UID => 1, WebEntryPeer::TAS_UID => 2, WebEntryPeer::DYN_UID => 3, WebEntryPeer::USR_UID => 4, WebEntryPeer::WE_METHOD => 5, WebEntryPeer::WE_INPUT_DOCUMENT_ACCESS => 6, WebEntryPeer::WE_DATA => 7, WebEntryPeer::WE_CREATE_USR_UID => 8, WebEntryPeer::WE_UPDATE_USR_UID => 9, WebEntryPeer::WE_CREATE_DATE => 10, WebEntryPeer::WE_UPDATE_DATE => 11, WebEntryPeer::WE_TYPE => 12, WebEntryPeer::WE_CUSTOM_TITLE => 13, WebEntryPeer::WE_AUTHENTICATION => 14, WebEntryPeer::WE_HIDE_INFORMATION_BAR => 15, WebEntryPeer::WE_HIDE_ACTIVE_SESSION_WARNING => 16, WebEntryPeer::WE_CALLBACK => 17, WebEntryPeer::WE_CALLBACK_URL => 18, WebEntryPeer::WE_LINK_GENERATION => 19, WebEntryPeer::WE_LINK_SKIN => 20, WebEntryPeer::WE_LINK_LANGUAGE => 21, WebEntryPeer::WE_LINK_DOMAIN => 22, WebEntryPeer::WE_SHOW_IN_NEW_CASE => 23, ), + BasePeer::TYPE_FIELDNAME => array ('WE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'DYN_UID' => 3, 'USR_UID' => 4, 'WE_METHOD' => 5, 'WE_INPUT_DOCUMENT_ACCESS' => 6, 'WE_DATA' => 7, 'WE_CREATE_USR_UID' => 8, 'WE_UPDATE_USR_UID' => 9, 'WE_CREATE_DATE' => 10, 'WE_UPDATE_DATE' => 11, 'WE_TYPE' => 12, 'WE_CUSTOM_TITLE' => 13, 'WE_AUTHENTICATION' => 14, 'WE_HIDE_INFORMATION_BAR' => 15, 'WE_HIDE_ACTIVE_SESSION_WARNING' => 16, 'WE_CALLBACK' => 17, 'WE_CALLBACK_URL' => 18, 'WE_LINK_GENERATION' => 19, 'WE_LINK_SKIN' => 20, 'WE_LINK_LANGUAGE' => 21, 'WE_LINK_DOMAIN' => 22, 'WE_SHOW_IN_NEW_CASE' => 23, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ) ); /** @@ -260,6 +263,8 @@ abstract class BaseWebEntryPeer $criteria->addSelectColumn(WebEntryPeer::WE_HIDE_INFORMATION_BAR); + $criteria->addSelectColumn(WebEntryPeer::WE_HIDE_ACTIVE_SESSION_WARNING); + $criteria->addSelectColumn(WebEntryPeer::WE_CALLBACK); $criteria->addSelectColumn(WebEntryPeer::WE_CALLBACK_URL); diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index a2ec5e0ca..9c83613d4 100755 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -3581,6 +3581,7 @@ + diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index ff4b3f2b0..32d2d021c 100755 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -11873,6 +11873,12 @@ msgstr "Invalid operation, please delete elements individually" msgid "useStrict" msgstr "useStrict" +# TRANSLATION +# LABEL/ID_MAFE_707db4ba20fd9293b2e7e9e4a93fb504 +#: LABEL/ID_MAFE_707db4ba20fd9293b2e7e9e4a93fb504 +msgid "By disabling this option, there's a security vulnerability if any other user has access to your web browser. It might impersonate your current session." +msgstr "By disabling this option, there's a security vulnerability if any other user has access to your web browser. It might impersonate your current session." + # TRANSLATION # LABEL/ID_MAFE_085fea7abdc5d904fe69a3081efd7398 #: LABEL/ID_MAFE_085fea7abdc5d904fe69a3081efd7398 @@ -14255,6 +14261,12 @@ msgstr "When the form is submitted a new case is created with this user account. msgid "There are problems getting the triggers wizard list, please try again." msgstr "There are problems getting the triggers wizard list, please try again." +# TRANSLATION +# LABEL/ID_MAFE_5d06160dfb6e0fde71b8d320d793f322 +#: LABEL/ID_MAFE_5d06160dfb6e0fde71b8d320d793f322 +msgid "Hide Active Session Warning" +msgstr "Hide Active Session Warning" + # TRANSLATION # LABEL/ID_MAFE_5d085d8447bc84ead2b9af188a8e4f0c #: LABEL/ID_MAFE_5d085d8447bc84ead2b9af188a8e4f0c diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index fb188b95c..31bb4ab17 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -58848,6 +58848,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_MAFE_076bbf458415eb4b6684ebad6c6094c0','en','Variable Name:', NOW()) , ( 'LABEL','ID_MAFE_0778b522479c97b0c98fb221e86f8054','en','Invalid operation, please delete elements individually', NOW()) , ( 'LABEL','ID_MAFE_07a61978b92831579bbbb72fdf2a3b58','en','useStrict', NOW()) , +( 'LABEL','ID_MAFE_707db4ba20fd9293b2e7e9e4a93fb504','en','By disabling this option, there''s a security vulnerability if any other user has access to your web browser. It might impersonate your current session.', NOW()) , ( 'LABEL','ID_MAFE_085fea7abdc5d904fe69a3081efd7398','en','Signal', NOW()) , ( 'LABEL','ID_MAFE_087fb8756d4add87f2d162304ccd486b','en','No records found', NOW()) , ( 'LABEL','ID_MAFE_08898cf72a0c0bab1fd5a011cb430875','en','Filename generated', NOW()) , @@ -59253,6 +59254,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES ( 'LABEL','ID_MAFE_5cdf3f8e0de1cb63a3cfb8bec5a5db9d','en','There are problems getting the triggers wizard list, please try again.', NOW()) , +( 'LABEL','ID_MAFE_5d06160dfb6e0fde71b8d320d793f322','en','Hide Active Session Warning', NOW()) , ( 'LABEL','ID_MAFE_5d085d8447bc84ead2b9af188a8e4f0c','en','Before action', NOW()) , ( 'LABEL','ID_MAFE_5d89fe1813446d4b6fb1586b0287f788','en','Step assigned successfully.', NOW()) , ( 'LABEL','ID_MAFE_5da01bc260f45532692827ab75ae3076','en','Variable type', NOW()) , diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index 6573beb31..22922b3ed 100644 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -1744,6 +1744,7 @@ CREATE TABLE `WEB_ENTRY` `WE_CUSTOM_TITLE` MEDIUMTEXT, `WE_AUTHENTICATION` VARCHAR(14) default 'ANONYMOUS' NOT NULL, `WE_HIDE_INFORMATION_BAR` CHAR(1) default '1', + `WE_HIDE_ACTIVE_SESSION_WARNING` CHAR(1) default '1', `WE_CALLBACK` VARCHAR(13) default 'PROCESSMAKER' NOT NULL, `WE_CALLBACK_URL` MEDIUMTEXT, `WE_LINK_GENERATION` VARCHAR(8) default 'DEFAULT' NOT NULL, @@ -2309,7 +2310,7 @@ CREATE TABLE `PROCESS_VARIABLES` `VAR_LABEL` VARCHAR(255) default '', `VAR_DBCONNECTION` VARCHAR(32), `VAR_SQL` MEDIUMTEXT, - `VAR_NULL` TINYINT(32) default 0, + `VAR_NULL` TINYINT default 0, `VAR_DEFAULT` VARCHAR(32) default '', `VAR_ACCEPTED_VALUES` MEDIUMTEXT, `INP_DOC_UID` VARCHAR(32) default '', @@ -3321,10 +3322,10 @@ CREATE TABLE `JOBS_PENDING` `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `queue` VARCHAR(255) NOT NULL, `payload` MEDIUMTEXT NOT NULL, - `attempts` TINYINT(3) NOT NULL, - `reserved_at` BIGINT(10), - `available_at` BIGINT(10) NOT NULL, - `created_at` BIGINT(10) NOT NULL, + `attempts` TINYINT NOT NULL, + `reserved_at` BIGINT(20), + `available_at` BIGINT(20) NOT NULL, + `created_at` BIGINT(20) NOT NULL, PRIMARY KEY (`id`), KEY `jobs_queue_index`(`queue`) )ENGINE=InnoDB DEFAULT CHARSET='utf8'; @@ -3366,9 +3367,9 @@ CREATE TABLE `SCHEDULER` `body` VARCHAR(255), `type` VARCHAR(255), `category` VARCHAR(255), - `system` TINYINT(3), + `system` TINYINT, `timezone` VARCHAR(255), - `enable` TINYINT(3), + `enable` TINYINT, `creation_date` DATETIME, `last_update` DATETIME, PRIMARY KEY (`id`) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php index 883f49d73..8af8193d0 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php @@ -8,6 +8,7 @@ use G; use Illuminate\Support\Facades\DB; use ProcessMaker\Core\System; use ProcessMaker\Model\Application; +use ProcessMaker\Model\WebEntry as WebEntryModel; use Publisher; use RBAC; use ResultSet; @@ -1102,7 +1103,7 @@ class WebEntry */ public function isWebEntryOne($weUid) { - if ($this->verifyCurrentSession()) { + if ($this->verifyCurrentSession($weUid)) { global $G_PUBLISH; $G_PUBLISH = new Publisher(); $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/checkContinueOrCloseSession', '', [], SYS_URI . 'login/checkContinueOrCloseSession'); @@ -1119,9 +1120,10 @@ class WebEntry /** * Verify the current sessión exist for display webentry message confirmation. + * @param string $weUid * @return bool */ - private function verifyCurrentSession(): bool + private function verifyCurrentSession(string $weUid): bool { //verify normal flow $rule1 = !empty($_SESSION['USER_LOGGED']) && empty($_SESSION['__WEBENTRYCONTINUE__']); @@ -1135,8 +1137,29 @@ class WebEntry //verify saml session $rule3 = !(!empty($_SESSION['samlNameId']) && !empty($_SESSION['samlSessionIndex'])); + + //verify current session only for required user login + $rule4 = $this->verifyHideActiveSessionWarningOption($weUid); - return $rule1 && $rule2 && $rule3; + return $rule1 && $rule2 && $rule3 && $rule4; + } + + /** + * Return false if 'hide active session' is enabled only for 'require user login'. + * @param string $weUid + * @return bool + */ + public function verifyHideActiveSessionWarningOption(string $weUid): bool + { + $result = true; + $webentry = WebEntryModel::select('WE_HIDE_ACTIVE_SESSION_WARNING', 'WE_AUTHENTICATION') + ->where('WE_UID', '=', $weUid) + ->get() + ->first(); + if ($webentry->WE_AUTHENTICATION === 'LOGIN_REQUIRED') { + $result = intval($webentry->WE_HIDE_ACTIVE_SESSION_WARNING) === 0; + } + return $result; } /** diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryEvent.php b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryEvent.php index 343e096e0..cc96916c3 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryEvent.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryEvent.php @@ -3,11 +3,13 @@ namespace ProcessMaker\BusinessModel; use BasePeer; +use Bootstrap; use BpmnFlowPeer; use Content; use Criteria; use Exception; use G; +use Illuminate\Support\Facades\Log; use ProcessMaker\BusinessModel\Process as BusinessModelProcess; use ProcessMaker\BusinessModel\Validator as BusinessModelValidator; use ProcessMaker\Core\System; @@ -598,6 +600,7 @@ class WebEntryEvent 'WE_CUSTOM_TITLE', 'WE_AUTHENTICATION', 'WE_HIDE_INFORMATION_BAR', + 'WE_HIDE_ACTIVE_SESSION_WARNING', 'WE_CALLBACK', 'WE_CALLBACK_URL', 'WE_LINK_GENERATION', @@ -947,6 +950,7 @@ class WebEntryEvent 'WE_CUSTOM_TITLE' => 'WE_CUSTOM_TITLE', 'WE_AUTHENTICATION' => 'WE_AUTHENTICATION', 'WE_HIDE_INFORMATION_BAR' => 'WE_HIDE_INFORMATION_BAR', + 'WE_HIDE_ACTIVE_SESSION_WARNING' => 'WE_HIDE_ACTIVE_SESSION_WARNING', 'WE_CALLBACK' => 'WE_CALLBACK', 'WE_CALLBACK_URL' => 'WE_CALLBACK_URL', 'WE_LINK_GENERATION' => 'WE_LINK_GENERATION', @@ -982,6 +986,16 @@ class WebEntryEvent $result = $webEntryEvent->save(); $cnn->commit(); + + //log register + $onlyGenerateLink = isset($arrayData['EXTRA']) && isset($arrayData['EXTRA']['generateLink']); + if ($arrayData['WE_HIDE_ACTIVE_SESSION_WARNING'] === '1' && + $arrayData['WE_AUTHENTICATION'] === 'LOGIN_REQUIRED' && + !$onlyGenerateLink + ) { + $context = Bootstrap::context(['usrUid' => $userUidUpdater]); + Log::channel(':webEntry')->info('Hide Active Session Warning', $context); + } //Set WEE_TITLE if (isset($arrayData["WEE_TITLE"])) { @@ -1086,6 +1100,7 @@ class WebEntryEvent $criteria->addSelectColumn(WebEntryPeer::WE_TYPE); $criteria->addSelectColumn(WebEntryPeer::WE_AUTHENTICATION); $criteria->addSelectColumn(WebEntryPeer::WE_HIDE_INFORMATION_BAR); + $criteria->addSelectColumn(WebEntryPeer::WE_HIDE_ACTIVE_SESSION_WARNING); $criteria->addSelectColumn(WebEntryPeer::WE_CALLBACK); $criteria->addSelectColumn(WebEntryPeer::WE_CALLBACK_URL); $criteria->addSelectColumn(WebEntryPeer::WE_LINK_GENERATION); @@ -1136,6 +1151,7 @@ class WebEntryEvent $this->getFieldNameByFormatFieldName("WE_CUSTOM_TITLE") => $record["WE_CUSTOM_TITLE"], $this->getFieldNameByFormatFieldName("WE_AUTHENTICATION") => $record["WE_AUTHENTICATION"], $this->getFieldNameByFormatFieldName("WE_HIDE_INFORMATION_BAR") => $record["WE_HIDE_INFORMATION_BAR"], + $this->getFieldNameByFormatFieldName("WE_HIDE_ACTIVE_SESSION_WARNING") => $record["WE_HIDE_ACTIVE_SESSION_WARNING"], $this->getFieldNameByFormatFieldName("WE_CALLBACK") => $record["WE_CALLBACK"], $this->getFieldNameByFormatFieldName("WE_CALLBACK_URL") => $record["WE_CALLBACK_URL"], $this->getFieldNameByFormatFieldName("WE_LINK_GENERATION") => $record["WE_LINK_GENERATION"], diff --git a/workflow/engine/src/ProcessMaker/Model/WebEntry.php b/workflow/engine/src/ProcessMaker/Model/WebEntry.php index eb141abaa..751287c48 100644 --- a/workflow/engine/src/ProcessMaker/Model/WebEntry.php +++ b/workflow/engine/src/ProcessMaker/Model/WebEntry.php @@ -9,7 +9,7 @@ class WebEntry extends Model // Set our table name protected $table = 'WEB_ENTRY'; protected $primaryKey = 'WE_UID'; - + public $incrementing = false; // We do not have create/update timestamps for this table public $timestamps = false; }