Merged in victorsl/processmaker/PM-4280-3017 (pull request #3296)

PM-4280
This commit is contained in:
Julio Cesar Laura Avendaño
2015-12-03 16:50:30 -04:00
5 changed files with 69 additions and 13 deletions

View File

@@ -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']]);

View File

@@ -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
];

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;