From fc187bad0973a3080c76d8079ac136b5f17805b9 Mon Sep 17 00:00:00 2001
From: appu <apparao@vtiger.com>
Date: Thu, 25 Jan 2024 18:16:26 +0530
Subject: [PATCH] Fixes::158253812::Appu::There is time mismatch in the task
 management updates view

---
 .../v7/modules/Vtiger/RecentActivities.tpl    | 23 ++++++++++--
 modules/Calendar/uitypes/Time.php             | 35 +++++++++++++++++++
 modules/Vtiger/views/Detail.php               |  1 -
 3 files changed, 55 insertions(+), 4 deletions(-)

diff --git a/layouts/v7/modules/Vtiger/RecentActivities.tpl b/layouts/v7/modules/Vtiger/RecentActivities.tpl
index 1aaf9ecc4..ab22c6e86 100644
--- a/layouts/v7/modules/Vtiger/RecentActivities.tpl
+++ b/layouts/v7/modules/Vtiger/RecentActivities.tpl
@@ -79,6 +79,23 @@
                                             </h5>
                                         </div>
                                         {foreach item=FIELDMODEL from=$RECENT_ACTIVITY->getFieldInstances()}
+                                            
+                                            {assign var=FIELD_NAME value=$FIELDMODEL->getFieldInstance()->getName()}
+                                            {assign var=FIELD_DATA_TYPE value=$FIELDMODEL->getFieldInstance()->getFieldDataType()}
+                                            {assign var=PRE_DISPLAY_VALUE value=$FIELDMODEL->getDisplayValue(decode_html($FIELDMODEL->get('prevalue')))}
+                                            {assign var=POST_DISPLAY_VALUE value=$FIELDMODEL->getDisplayValue(decode_html($FIELDMODEL->get('postvalue')))}
+                                            
+                                            {if in_array($FIELD_NAME,array('time_start','time_end')) && in_array($MODULE_NAME,array('Events','Calendar'))}
+                                                {assign var=CALENDAR_RECORD_MODEL value =Vtiger_Record_Model::getInstanceById($RECORD_ID)}
+                                                {assign var=TIME_PRE_DISPLAY_VALUE value={Calendar_Time_UIType::getModTrackerDisplayValue($FIELD_NAME,$FIELDMODEL->get('prevalue'),$CALENDAR_RECORD_MODEL)}}
+                                                {assign var=TIME_POST_DISPLAY_VALUE value={Calendar_Time_UIType::getModTrackerDisplayValue($FIELD_NAME,$FIELDMODEL->get('postvalue'),$CALENDAR_RECORD_MODEL)}}
+                                                {assign var=PRE_DISPLAY_VALUE value=$TIME_PRE_DISPLAY_VALUE}
+                                                {assign var=POST_DISPLAY_VALUE value=$TIME_POST_DISPLAY_VALUE}
+                                            {/if}
+                                            
+                                            {assign var=PRE_DISPLAY_TITLE value=$TIME_PRE_DISPLAY_VALUE}
+                                            
+                                            
                                             {if $FIELDMODEL && $FIELDMODEL->getFieldInstance() && $FIELDMODEL->getFieldInstance()->isViewable() && $FIELDMODEL->getFieldInstance()->getDisplayType() neq '5'}
                                                 <div class='font-x-small updateInfoContainer textOverflowEllipsis'>
                                                     <div class='update-name'><span class="field-name">{vtranslate($FIELDMODEL->getName(),$MODULE_NAME)}</span>
@@ -86,17 +103,17 @@
                                                             <span> &nbsp;{vtranslate('LBL_CHANGED')}</span>
                                                         </div>
                                                         <div class='update-from'><span class="field-name">{vtranslate('LBL_FROM')}</span>&nbsp;
-                                                            <em style="white-space:pre-line;" title="{strip_tags({Vtiger_Util_Helper::toVtiger6SafeHTML($FIELDMODEL->getDisplayValue(decode_html($FIELDMODEL->get('prevalue'))))})}">{Vtiger_Util_Helper::toVtiger6SafeHTML($FIELDMODEL->getDisplayValue(decode_html($FIELDMODEL->get('prevalue'))))}</em>
+                                                            <em style="white-space:pre-line;" title="{strip_tags({Vtiger_Util_Helper::toVtiger6SafeHTML($PRE_DISPLAY_TITLE)})}">{Vtiger_Util_Helper::toVtiger6SafeHTML($PRE_DISPLAY_VALUE)}</em>
                                                         </div>
                                                     {else if $FIELDMODEL->get('postvalue') eq '' || ($FIELDMODEL->getFieldInstance()->getFieldDataType() eq 'reference' && $FIELDMODEL->get('postvalue') eq '0')}
-                                                        &nbsp;(<del>{Vtiger_Util_Helper::toVtiger6SafeHTML($FIELDMODEL->getDisplayValue(decode_html($FIELDMODEL->get('prevalue'))))}</del> ) {vtranslate('LBL_IS_REMOVED')}</div>
+                                                        &nbsp;(<del>{Vtiger_Util_Helper::toVtiger6SafeHTML($PRE_DISPLAY_VALUE)})</del> ) {vtranslate('LBL_IS_REMOVED')}</div>
                                                     {else if $FIELDMODEL->get('postvalue') neq '' && !($FIELDMODEL->getFieldInstance()->getFieldDataType() eq 'reference' && $FIELDMODEL->get('postvalue') eq '0')}
                                                     &nbsp;{vtranslate('LBL_UPDATED')}</div>
                                                 {else}
                                                 &nbsp;{vtranslate('LBL_CHANGED')}</div>
                                             {/if}
                                             {if $FIELDMODEL->get('postvalue') neq '' && !($FIELDMODEL->getFieldInstance()->getFieldDataType() eq 'reference' && $FIELDMODEL->get('postvalue') eq '0')}
-                                                <div class="update-to"><span class="field-name">{vtranslate('LBL_TO')}</span>&nbsp;<em style="white-space:pre-line;">{Vtiger_Util_Helper::toVtiger6SafeHTML($FIELDMODEL->getDisplayValue(decode_html($FIELDMODEL->get('postvalue'))))}</em>
+                                                <div class="update-to"><span class="field-name">{vtranslate('LBL_TO')}</span>&nbsp;<em style="white-space:pre-line;">{Vtiger_Util_Helper::toVtiger6SafeHTML($POST_DISPLAY_VALUE)}</em>
                                                 </div>
                                             {/if}
                                             </div>
diff --git a/modules/Calendar/uitypes/Time.php b/modules/Calendar/uitypes/Time.php
index 7635e0d40..afd349279 100644
--- a/modules/Calendar/uitypes/Time.php
+++ b/modules/Calendar/uitypes/Time.php
@@ -59,5 +59,40 @@ class Calendar_Time_UIType extends Vtiger_Time_UIType {
 		$value = $dateTimeField->getDisplayTime();
 		return $value;
 	}
+        
+        /**
+	 * Function to get the ModtrackerDisplay Value, for the current field type with given DB Insert Value
+	 * @param <Object> $fieldName
+	 * @param <Object> $value
+	 * @param <Object> $recordModel
+	 * @return $value
+	 */
+	public static function getModTrackerDisplayValue($fieldName,$value,$recordModel) {
+		$userModel = Users_Privileges_Model::getCurrentUserModel();
+		if(empty($value)){
+			return '';
+		}
+		if($recordModel){
+			$startDate = $recordModel->get('date_start');
+			$endDate = $recordModel->get('due_date');
+			if($fieldName == 'time_start') {
+				//Added this check to show start time according to start date of calendar record
+				//to avoid day light saving issue for -(UTC London) => UTC+1:00
+				$dateTime = new DateTimeField($startDate.' '.$value);
+				$value = $dateTime->getDisplayTime();
+			}
+			if($fieldName == 'time_end'){
+				//Added this check to show end time according to end date of calendar record
+				//to avoid day light saving issue for -(UTC London) => UTC+1:00
+				$dateTime = new DateTimeField($endDate.' '.$value);
+				$value = $dateTime->getDisplayTime();
+
+			}
+		}
+		if($userModel->get('hour_format') == '12'){
+			return Vtiger_Time_UIType::getTimeValueInAMorPM($value);
+		}
+		return $value;
+	}
 
 }
\ No newline at end of file
diff --git a/modules/Vtiger/views/Detail.php b/modules/Vtiger/views/Detail.php
index 7def95531..421a79e5a 100644
--- a/modules/Vtiger/views/Detail.php
+++ b/modules/Vtiger/views/Detail.php
@@ -439,7 +439,6 @@ class Vtiger_Detail_View extends Vtiger_Index_View {
 		$recordModel = Vtiger_Record_Model::getInstanceById($parentRecordId);
 		$viewer = $this->getViewer($request);
 		$viewer->assign('SOURCE',$recordModel->get('source'));
-        $recentActivities = ModTracker_Record_Model::getUpdates($parentRecordId, $pagingModel,$moduleName);
 
         $totalCount = ModTracker_Record_Model::getTotalRecordCount($parentRecordId);
         $pageLimit = $pagingModel->getPageLimit();
-- 
GitLab