Merged in victorsl/processmaker/PM-4280-3017 (pull request #3296)
PM-4280
This commit is contained in:
@@ -212,7 +212,7 @@ try {
|
||||
$_SESSION['USR_USERNAME'] = $usr;
|
||||
$_SESSION['USR_PASSWORD'] = $pwd;
|
||||
|
||||
$_SESSION['BROWSER_TIME_ZONE'] = $dateTime->getTimeZoneIdByTimeZoneOffset((int)($_POST['form']['BROWSER_TIME_ZONE_OFFSET']));
|
||||
$_SESSION['BROWSER_TIME_ZONE'] = $dateTime->getTimeZoneIdByTimeZoneOffset((int)($_POST['form']['BROWSER_TIME_ZONE_OFFSET']), false);
|
||||
|
||||
if (strpos($_SERVER['HTTP_REFERER'], 'home/login') !== false) {
|
||||
$d = serialize(['u' => $usr, 'p' => $pwd, 'm' => '', 'timeZoneFailed' => 1, 'userTimeZone' => $_SESSION['USR_TIME_ZONE'], 'browserTimeZone' => $_SESSION['BROWSER_TIME_ZONE']]);
|
||||
|
||||
@@ -194,10 +194,25 @@ if (in_array(G::encryptOld($licenseManager->result), array('38afd7ae34bd5e3e6fc1
|
||||
/*----------------------------------********---------------------------------*/
|
||||
|
||||
if ($timeZoneFailed) {
|
||||
$dateTime = new \ProcessMaker\Util\DateTime();
|
||||
|
||||
$userTimeZoneOffset = $dateTime->getTimeZoneOffsetByTimeZoneId($userTimeZone);
|
||||
$browserTimeZoneOffset = $dateTime->getTimeZoneOffsetByTimeZoneId($browserTimeZone);
|
||||
|
||||
$userUtcOffset = $dateTime->getUtcOffsetByTimeZoneOffset($userTimeZoneOffset);
|
||||
$browserUtcOffset = $dateTime->getUtcOffsetByTimeZoneOffset($browserTimeZoneOffset);
|
||||
|
||||
$arrayTimeZoneId = $dateTime->getTimeZoneIdByTimeZoneOffset($browserTimeZoneOffset);
|
||||
|
||||
array_unshift($arrayTimeZoneId, 'false');
|
||||
array_walk($arrayTimeZoneId, function (&$value, $key, $parameter) { $value = ['TZ_UID' => $value, 'TZ_NAME' => '(UTC' . $parameter . ') ' . $value]; }, $browserUtcOffset);
|
||||
|
||||
$_SESSION['_DBArray'] = ['TIME_ZONE' => $arrayTimeZoneId];
|
||||
|
||||
$arrayData = [
|
||||
'USR_USERNAME' => $userUsername,
|
||||
'USR_PASSWORD' => $userPassword,
|
||||
'USR_TIME_ZONE' => $userTimeZone,
|
||||
'USR_TIME_ZONE' => '(UTC' . $userUtcOffset . ') ' . $userTimeZone,
|
||||
'BROWSER_TIME_ZONE' => $browserTimeZone
|
||||
];
|
||||
|
||||
|
||||
@@ -30,24 +30,33 @@ class DateTime
|
||||
/**
|
||||
* Get Time Zone ID by Time Zone Offset
|
||||
*
|
||||
* @param int $offset Time Zone Offset
|
||||
* @param int $offset Time Zone Offset
|
||||
* @param bool $flagAllResults Flag which sets include all the results
|
||||
*
|
||||
* @return string Return the Time Zone ID; UTC ID otherwise
|
||||
* @return mixed Return the Time Zone ID; UTC ID otherwise
|
||||
*/
|
||||
public function getTimeZoneIdByTimeZoneOffset($offset)
|
||||
public function getTimeZoneIdByTimeZoneOffset($offset, $flagAllResults = true)
|
||||
{
|
||||
try {
|
||||
$timeZoneId = ($flagAllResults)? [] : '';
|
||||
|
||||
foreach (\DateTimeZone::listIdentifiers() as $value) {
|
||||
$timeZoneOffset = $this->getTimeZoneOffsetByTimeZoneId($value);
|
||||
|
||||
if ($timeZoneOffset !== false && $timeZoneOffset == $offset) {
|
||||
//Return
|
||||
return $value;
|
||||
if ($flagAllResults) {
|
||||
$timeZoneId[] = $value;
|
||||
} else {
|
||||
$timeZoneId = $value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$timeZoneId = (!empty($timeZoneId))? $timeZoneId : (($flagAllResults)? ['UTC'] : 'UTC');
|
||||
|
||||
//Return
|
||||
return 'UTC';
|
||||
return $timeZoneId;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
@@ -75,7 +84,31 @@ class DateTime
|
||||
$offset = (($sign == '+')? '' : '-') . (($h * 60 * 60) + ($m * 60)); //Convert UTC Offset to seconds
|
||||
|
||||
//Return
|
||||
return $this->getTimeZoneIdByTimeZoneOffset((int)($offset));
|
||||
return $this->getTimeZoneIdByTimeZoneOffset((int)($offset), false);
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get UTC Offset by Time Zone Offset
|
||||
*
|
||||
* @param int $offset Time Zone Offset
|
||||
*
|
||||
* @return string Return the UTC Offset
|
||||
*/
|
||||
public function getUtcOffsetByTimeZoneOffset($offset)
|
||||
{
|
||||
try {
|
||||
$sign = ($offset >= 0)? '+' : '-';
|
||||
|
||||
$offset = abs($offset) / 60; //Convert seconds to minutes
|
||||
|
||||
$h = floor($offset / 60);
|
||||
$m = $offset - ($h * 60);
|
||||
|
||||
//Return
|
||||
return $sign . sprintf('%02d:%02d', $h, $m);
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
|
||||
{$form.USR_USERNAME}
|
||||
{$form.USR_PASSWORD}
|
||||
|
||||
{$form.USR_TIME_ZONE}
|
||||
{$form.BROWSER_TIME_ZONE}
|
||||
|
||||
<fieldset>
|
||||
<label class="panel-login">
|
||||
@@ -20,6 +18,8 @@
|
||||
<br />
|
||||
<br />
|
||||
<span id="details">{php}echo G::LoadTranslation("ID_TIME_ZONE_LOGIN_DESCRIPTION_DETAILS");{/php}</span>
|
||||
<br />
|
||||
{$form.BROWSER_TIME_ZONE}
|
||||
</div>
|
||||
</label>
|
||||
</fieldset>
|
||||
|
||||
@@ -6,7 +6,14 @@
|
||||
<USR_PASSWORD type="hidden" />
|
||||
|
||||
<USR_TIME_ZONE type="hidden" />
|
||||
<BROWSER_TIME_ZONE type="hidden" />
|
||||
|
||||
<BROWSER_TIME_ZONE type="dropdown" sqlconnection="dbarray">
|
||||
<![CDATA[
|
||||
SELECT TZ_UID, TZ_NAME
|
||||
FROM TIME_ZONE
|
||||
]]>
|
||||
<en></en>
|
||||
</BROWSER_TIME_ZONE>
|
||||
|
||||
<BTNOK type="submit">
|
||||
<en></en>
|
||||
@@ -20,7 +27,8 @@
|
||||
|
||||
var strHtml = document.getElementById("details").innerHTML;
|
||||
strHtml = stringReplace("\\{0\\}", document.getElementById("form[USR_TIME_ZONE]").value, strHtml);
|
||||
strHtml = stringReplace("\\{1\\}", document.getElementById("form[BROWSER_TIME_ZONE]").value, strHtml);
|
||||
strHtml = stringReplace("\\{1\\}.", "", strHtml);
|
||||
strHtml = stringReplace("\\{1\\}", "", strHtml);
|
||||
|
||||
document.getElementById("details").innerHTML = strHtml;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user