From e21ecafad9c7f1328ff42d5a743b3032eade1d22 Mon Sep 17 00:00:00 2001
From: yogeshwar <yogeshwar.g@vtigersolutions.com>
Date: Tue, 21 May 2024 19:26:40 +0530
Subject: [PATCH] E-ALL-Campaigns

---
 layouts/v7/modules/Campaigns/RelatedList.tpl  |  4 +-
 .../Events/partials/EditViewContents.tpl      |  2 +-
 .../modules/Events/uitypes/Multireference.tpl |  6 +--
 .../v7/modules/Vtiger/DetailViewBlockView.tpl |  6 +++
 .../modules/Vtiger/ListViewRecordActions.tpl  |  2 +-
 layouts/v7/modules/Vtiger/RelatedList.tpl     |  4 +-
 layouts/v7/modules/Vtiger/uitypes/Date.tpl    |  2 +-
 .../Vtiger/uitypes/OwnerFieldSearchView.tpl   |  2 +-
 .../v7/modules/Vtiger/uitypes/Recurrence.tpl  | 39 ++++++++++++-------
 .../v7/modules/Vtiger/uitypes/Reminder.tpl    | 14 +++----
 modules/Calendar/views/Edit.php               |  3 +-
 modules/Campaigns/Campaigns.php               |  8 ++--
 modules/CustomView/CustomView.php             |  2 +-
 .../com_vtiger_workflow/VTWorkflowManager.inc |  2 +-
 .../VTExpressionEvaluater.inc                 |  1 +
 .../expression_engine/VTParser.inc            |  5 ++-
 .../expression_engine/VTTokenizer.inc         |  6 ++-
 17 files changed, 64 insertions(+), 44 deletions(-)

diff --git a/layouts/v7/modules/Campaigns/RelatedList.tpl b/layouts/v7/modules/Campaigns/RelatedList.tpl
index b853bbabf..f87fd982e 100644
--- a/layouts/v7/modules/Campaigns/RelatedList.tpl
+++ b/layouts/v7/modules/Campaigns/RelatedList.tpl
@@ -146,8 +146,8 @@
 										{if $HEADER_FIELD->get('column') eq 'time_start' or $HEADER_FIELD->get('column') eq 'time_end' or $HEADER_FIELD->getFieldDataType() eq 'reference'}
 										{else}
 											{assign var=FIELD_UI_TYPE_MODEL value=$HEADER_FIELD->getUITypeModel()}
-											{include file=vtemplate_path($FIELD_UI_TYPE_MODEL->getListSearchTemplateName(),$RELATED_MODULE_NAME) FIELD_MODEL= $HEADER_FIELD SEARCH_INFO=$SEARCH_DETAILS[$HEADER_FIELD->getName()] USER_MODEL=$USER_MODEL}
-											<input type="hidden" class="operatorValue" value="{$SEARCH_DETAILS[$HEADER_FIELD->getName()]['comparator']}">
+											{include file=vtemplate_path($FIELD_UI_TYPE_MODEL->getListSearchTemplateName(),$RELATED_MODULE_NAME) FIELD_MODEL= $HEADER_FIELD SEARCH_INFO= $SEARCH_DETAILS[$HEADER_FIELD->getName()] USER_MODEL=$USER_MODEL}
+											<input type="hidden" class="operatorValue" value="{(isset($SEARCH_DETAILS[$HEADER_FIELD->getName()]['comparator'])) ? $SEARCH_DETAILS[$HEADER_FIELD->getName()]['comparator'] : ""}">
 										{/if}
 									</th>
 								{/foreach}
diff --git a/layouts/v7/modules/Events/partials/EditViewContents.tpl b/layouts/v7/modules/Events/partials/EditViewContents.tpl
index bfd7c2de8..25c1ebda7 100644
--- a/layouts/v7/modules/Events/partials/EditViewContents.tpl
+++ b/layouts/v7/modules/Events/partials/EditViewContents.tpl
@@ -12,7 +12,7 @@
 {strip}
 	{include file="partials/EditViewContents.tpl"|@vtemplate_path:'Vtiger'}
 	<div name='editContent'>
-		<div class='fieldBlockContainer' data-block="{$BLOCK_LABEL}">
+		<div class='fieldBlockContainer' data-block="{(isset($BLOCK_LABEL)) ? $BLOCK_LABEL :""}">
 			<h4 class='fieldBlockHeader'>{vtranslate('LBL_INVITE_USER_BLOCK', $MODULE)}</h4>
 			<hr>
 			<table class="table table-borderless">
diff --git a/layouts/v7/modules/Events/uitypes/Multireference.tpl b/layouts/v7/modules/Events/uitypes/Multireference.tpl
index 48175afbb..d4ac80fd9 100644
--- a/layouts/v7/modules/Events/uitypes/Multireference.tpl
+++ b/layouts/v7/modules/Events/uitypes/Multireference.tpl
@@ -29,12 +29,12 @@
 				<input name="popupReferenceModule" type="hidden" value="{$REFERENCE_LIST[0]}" />
 			{/if}
 		{/if}
-		<input name="{$FIELD_NAME}" type="hidden" value="{$FIELD_MODEL->get('fieldvalue')}" class="sourceField" data-displayvalue='{$FIELD_MODEL->getEditViewDisplayValue($FIELD_MODEL->get('fieldvalue'))}' data-fieldinfo='{$FIELD_INFO}' data-multiple='true'/>
+		<input name="{$FIELD_NAME}" type="hidden" value="{$FIELD_MODEL->get('fieldvalue')}" class="sourceField" data-displayvalue='{$FIELD_MODEL->getEditViewDisplayValue($FIELD_MODEL->get('fieldvalue'))}' data-fieldinfo={json_encode($FIELD_INFO)} data-multiple='true'/>
 		<div class="input-group">
 			<input id="{$FIELD_NAME}_display" name="{$FIELD_NAME}_display" data-fieldname="{$FIELD_NAME}" data-fieldtype="reference" type="text" 
 				class="marginLeftZero autoComplete inputElement" 
-				value="{$FIELD_MODEL->getEditViewDisplayValue($displayId)}" 
-				data-fieldinfo='{$FIELD_INFO}' data-fieldtype="multireference" placeholder="{vtranslate('LBL_TYPE_SEARCH',$MODULE)}"
+				value="{(isset($displayId))?$FIELD_MODEL->getEditViewDisplayValue($displayId):""}" 
+				data-fieldinfo='{json_encode($FIELD_INFO)}' data-fieldtype="multireference" placeholder="{vtranslate('LBL_TYPE_SEARCH',$MODULE)}"
 				{if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" {/if}
 				/>
 			<span class="input-group-addon relatedPopup cursorPointer" title="{vtranslate('LBL_SELECT', $MODULE)}" style="height:auto;width: 30px;">
diff --git a/layouts/v7/modules/Vtiger/DetailViewBlockView.tpl b/layouts/v7/modules/Vtiger/DetailViewBlockView.tpl
index 0c2673d26..5526966b1 100644
--- a/layouts/v7/modules/Vtiger/DetailViewBlockView.tpl
+++ b/layouts/v7/modules/Vtiger/DetailViewBlockView.tpl
@@ -13,7 +13,13 @@
 	{/if}
 
 	{foreach key=BLOCK_LABEL_KEY item=FIELD_MODEL_LIST from=$RECORD_STRUCTURE name=DetailViewBlockViewLoop}
+	 {if isset($BLOCK_LIST[$BLOCK_LABEL_KEY])}
 		{assign var=BLOCK value=$BLOCK_LIST[$BLOCK_LABEL_KEY]}
+
+		{else}
+			{assign var=BLOCK value=''}
+	 {/if}
+		
 		{if $BLOCK eq null or $FIELD_MODEL_LIST|@count lte 0}{continue}{/if}
 		<div class="block block_{$BLOCK_LABEL_KEY}" data-block="{$BLOCK_LABEL_KEY}" data-blockid="{$BLOCK_LIST[$BLOCK_LABEL_KEY]->get('id')}">
 			{assign var=IS_HIDDEN value=$BLOCK->isHidden()}
diff --git a/layouts/v7/modules/Vtiger/ListViewRecordActions.tpl b/layouts/v7/modules/Vtiger/ListViewRecordActions.tpl
index 9ed2ffe24..15aac76b9 100644
--- a/layouts/v7/modules/Vtiger/ListViewRecordActions.tpl
+++ b/layouts/v7/modules/Vtiger/ListViewRecordActions.tpl
@@ -20,7 +20,7 @@
     {else}
         {assign var=STARRED value=false}
     {/if}
-    {if $QUICK_PREVIEW_ENABLED eq 'true'}
+    {if isset($QUICK_PREVIEW_ENABLED ) && $QUICK_PREVIEW_ENABLED eq 'true'}
 		<span>
 			<a class="quickView fa fa-eye icon action" data-app="{$SELECTED_MENU_CATEGORY}" title="{vtranslate('LBL_QUICK_VIEW', $MODULE)}"></a>
 		</span>
diff --git a/layouts/v7/modules/Vtiger/RelatedList.tpl b/layouts/v7/modules/Vtiger/RelatedList.tpl
index 5566baeda..a70ba411c 100644
--- a/layouts/v7/modules/Vtiger/RelatedList.tpl
+++ b/layouts/v7/modules/Vtiger/RelatedList.tpl
@@ -128,8 +128,8 @@
 							{foreach item=HEADER_FIELD from=$RELATED_HEADERS}
 								{assign var=RELATED_HEADERNAME value=$HEADER_FIELD->get('name')}
 								{assign var=RELATED_LIST_VALUE value=$RELATED_RECORD->get($RELATED_HEADERNAME)}
-								<td class="relatedListEntryValues" title="{strip_tags($RELATED_RECORD->getDisplayValue($RELATED_HEADERNAME))}" data-field-type="{$HEADER_FIELD->getFieldDataType()}" nowrap>
-									<span class="value textOverflowEllipsis">
+								<td class="relatedListEntryValues" title="{strip_tags((isset($RELATED_RECORD->getDisplayValue($RELATED_HEADERNAME)))?$RELATED_RECORD->getDisplayValue($RELATED_HEADERNAME):"")}" data-field-type="{$HEADER_FIELD->getFieldDataType()}" nowrap>
+										<span class="value textOverflowEllipsis">
 										{if $RELATED_MODULE_NAME eq 'Documents' && $RELATED_HEADERNAME eq 'document_source'}
 											<center>{$RELATED_RECORD->get($RELATED_HEADERNAME)}</center>
 											{else}
diff --git a/layouts/v7/modules/Vtiger/uitypes/Date.tpl b/layouts/v7/modules/Vtiger/uitypes/Date.tpl
index 3aadfbdda..483208c18 100644
--- a/layouts/v7/modules/Vtiger/uitypes/Date.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/Date.tpl
@@ -19,7 +19,7 @@
 <div class="input-group inputElement" style="margin-bottom: 3px">
 <input id="{$MODULE}_editView_fieldName_{$FIELD_NAME}" type="text" class="dateField form-control {if $IGNOREUIREGISTRATION}ignore-ui-registration{/if}" data-fieldname="{$FIELD_NAME}" data-fieldtype="date" name="{$FIELD_NAME}" data-date-format="{$dateFormat}"
     value="{$FIELD_MODEL->getEditViewDisplayValue($FIELD_MODEL->get('fieldvalue'))}" {if !empty($SPECIAL_VALIDATOR)}data-validator='{Zend_Json::encode($SPECIAL_VALIDATOR)}'{/if}
-    {if $MODE eq 'edit' && $FIELD_NAME eq 'due_date'} data-user-changed-time="true" {/if}
+    {if isset($MODE) && $MODE eq 'edit' && $FIELD_NAME eq 'due_date'} data-user-changed-time="true" {/if}
     {if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" {/if}
     {if php7_count($FIELD_INFO['validator'])}
         data-specific-rules='{ZEND_JSON::encode($FIELD_INFO["validator"])}'
diff --git a/layouts/v7/modules/Vtiger/uitypes/OwnerFieldSearchView.tpl b/layouts/v7/modules/Vtiger/uitypes/OwnerFieldSearchView.tpl
index d53a45072..56e595d06 100644
--- a/layouts/v7/modules/Vtiger/uitypes/OwnerFieldSearchView.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/OwnerFieldSearchView.tpl
@@ -14,7 +14,7 @@
     <div class="select2_search_div">
     {assign var=ASSIGNED_USER_ID value=$FIELD_MODEL->get('name')}
     {assign var=ALL_ACTIVEUSER_LIST value=$FIELD_INFO['picklistvalues'][vtranslate('LBL_USERS')]}
-    {assign var=SEARCH_VALUES value=explode(',',$SEARCH_INFO['searchValue'])}
+    {assign var=SEARCH_VALUES value=explode(',',(isset($SEARCH_INFO['searchValue'])) ? $SEARCH_INFO['searchValue'] : ',')}
     {assign var=SEARCH_VALUES value=array_map("trim",$SEARCH_VALUES)}
 
     {if $FIELD_MODEL->get('uitype') eq '52' || $FIELD_MODEL->get('uitype') eq '77'}
diff --git a/layouts/v7/modules/Vtiger/uitypes/Recurrence.tpl b/layouts/v7/modules/Vtiger/uitypes/Recurrence.tpl
index 490748ea8..5682ca714 100644
--- a/layouts/v7/modules/Vtiger/uitypes/Recurrence.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/Recurrence.tpl
@@ -24,16 +24,19 @@
                                     <span class="alignMiddle">{vtranslate('LBL_REPEATEVENT', $MODULE)}&nbsp;&nbsp;</span>
                                     <select class="select2 input-mini" name="repeat_frequency">
                                             {for $FREQUENCY = 1 to 14}
-                                                    <option value="{$FREQUENCY}" {if $FREQUENCY eq $RECURRING_INFORMATION['repeat_frequency']}selected{/if}>{$FREQUENCY}</option>
+                                                    <option value="{$FREQUENCY}" {if isset($RECURRING_INFORMATION['repeat_frequency']) && $FREQUENCY eq $RECURRING_INFORMATION['repeat_frequency']}selected{/if}>{$FREQUENCY}</option>
                                             {/for}
                                     </select>
 				</span>
 				<span class="col-sm-2 padding0px">
 					<select class="select2 input-medium" style="width:85px;margin-left: 10px;" name="recurringtype" id="recurringType">
+					{if isset($RECURRING_INFORMATION['eventrecurringtype'])}
 						<option value="Daily" {if $RECURRING_INFORMATION['eventrecurringtype'] eq 'Daily'} selected {/if}>{vtranslate('LBL_DAYS_TYPE', $MODULE)}</option>
 						<option value="Weekly" {if $RECURRING_INFORMATION['eventrecurringtype'] eq 'Weekly'} selected {/if}>{vtranslate('LBL_WEEKS_TYPE', $MODULE)}</option>
 						<option value="Monthly" {if $RECURRING_INFORMATION['eventrecurringtype'] eq 'Monthly'} selected {/if}>{vtranslate('LBL_MONTHS_TYPE', $MODULE)}</option>
 						<option value="Yearly" {if $RECURRING_INFORMATION['eventrecurringtype'] eq 'Yearly'} selected {/if}>{vtranslate('LBL_YEAR_TYPE', $MODULE)}</option>
+					{/if}
+						
 					</select>
                                         <span class="alignMiddle displayInlineBlock">&nbsp;&nbsp;{vtranslate('LBL_UNTIL', $MODULE)}</span>
 				</span>
@@ -46,30 +49,30 @@
 					</span>
 				</span>
 			</div>
-			<div class="row {if $RECURRING_INFORMATION['eventrecurringtype'] eq 'Weekly'}show{else}hide{/if}"  id="repeatWeekUI" style="margin:10px 0;">
+			<div class="row {if isset($RECURRING_INFORMATION['eventrecurringtype']) &&  $RECURRING_INFORMATION['eventrecurringtype'] eq 'Weekly'}show{else}hide{/if}"  id="repeatWeekUI" style="margin:10px 0;">
 				<span class="col-lg-2">
 					<span class="medium" style="padding-left:23px">{ucwords(vtranslate('LBL_ON', $MODULE))}</span>
 				</span>
 				<span class="col-lg-10">
-					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="sun_flag" value="sunday" {$RECURRING_INFORMATION['week0']} type="checkbox"/>{vtranslate('LBL_SM_SUN', $MODULE)}</label>
-					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="mon_flag" value="monday" {$RECURRING_INFORMATION['week1']} type="checkbox">{vtranslate('LBL_SM_MON', $MODULE)}</label>
-					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="tue_flag" value="tuesday" {$RECURRING_INFORMATION['week2']} type="checkbox">{vtranslate('LBL_SM_TUE', $MODULE)}</label>
-					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="wed_flag" value="wednesday" {$RECURRING_INFORMATION['week3']} type="checkbox">{vtranslate('LBL_SM_WED', $MODULE)}</label>
-					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="thu_flag" value="thursday" {$RECURRING_INFORMATION['week4']} type="checkbox">{vtranslate('LBL_SM_THU', $MODULE)}</label>
-					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="fri_flag" value="friday" {$RECURRING_INFORMATION['week5']} type="checkbox">{vtranslate('LBL_SM_FRI', $MODULE)}</label>
-					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="sat_flag" value="saturday" {$RECURRING_INFORMATION['week6']} type="checkbox">{vtranslate('LBL_SM_SAT', $MODULE)}</label>
+					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="sun_flag" value="sunday" {(isset($RECURRING_INFORMATION['week0'])) ? $RECURRING_INFORMATION['week0'] : ""} type="checkbox"/>{vtranslate('LBL_SM_SUN', $MODULE)}</label>
+					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="mon_flag" value="monday" {(isset($RECURRING_INFORMATION['week1'])) ? $RECURRING_INFORMATION['week1'] : ""} type="checkbox">{vtranslate('LBL_SM_MON', $MODULE)}</label>
+					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="tue_flag" value="tuesday" {(isset($RECURRING_INFORMATION['week2'])) ? $RECURRING_INFORMATION['week2'] : ""} type="checkbox">{vtranslate('LBL_SM_TUE', $MODULE)}</label>
+					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="wed_flag" value="wednesday" {(isset($RECURRING_INFORMATION['week3'])) ? $RECURRING_INFORMATION['week3'] : ""} type="checkbox">{vtranslate('LBL_SM_WED', $MODULE)}</label>
+					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="thu_flag" value="thursday" {(isset($RECURRING_INFORMATION['week4'])) ? $RECURRING_INFORMATION['week4'] : ""} type="checkbox">{vtranslate('LBL_SM_THU', $MODULE)}</label>
+					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="fri_flag" value="friday" {(isset($RECURRING_INFORMATION['week5'])) ? $RECURRING_INFORMATION['week5']: ""} type="checkbox">{vtranslate('LBL_SM_FRI', $MODULE)}</label>
+					<label class="checkbox" style="margin-left: 30px;display: inline;"><input name="sat_flag" value="saturday" {(isset($RECURRING_INFORMATION['week5'])) ? $RECURRING_INFORMATION['week6']: ""} type="checkbox">{vtranslate('LBL_SM_SAT', $MODULE)}</label>
 				</span>
 			</div>
-			<div class="{if $RECURRING_INFORMATION['eventrecurringtype'] eq 'Monthly'}show{else}hide{/if}" id="repeatMonthUI" style="margin-top:10px;"RCa>
+			<div class="{if isset($RECURRING_INFORMATION['eventrecurringtype']) &&  $RECURRING_INFORMATION['eventrecurringtype'] eq 'Monthly'}show{else}hide{/if}" id="repeatMonthUI" style="margin-top:10px;"RCa>
 				<div class="row">
 					<span class="col-lg-4">
 						<span class="pull-right">
-							<input type="radio" id="repeatDate" data-field-id= '{$FIELD_MODEL->get('id')}' name="repeatMonth" checked value="date" {if $RECURRING_INFORMATION['repeatMonth'] eq 'date'} checked {/if}/>
+							<input type="radio" id="repeatDate" data-field-id= '{$FIELD_MODEL->get('id')}' name="repeatMonth" checked value="date" {if isset($RECURRING_INFORMATION['repeatMonth']) &&$RECURRING_INFORMATION['repeatMonth'] eq 'date'} checked {/if}/>
 							<span class="alignMiddle" style="margin-left: 0.8em;">{vtranslate('LBL_ON', $MODULE)}</span>
 						</span>	
 					</span>
 					<span class="col-lg-8">
-						<input type="text" id="repeatMonthDate" data-field-id= '{$FIELD_MODEL->get('id')}' class="input-mini" style="width: 50px;" name="repeatMonth_date" data-validation-engine='validate[funcCall[Calendar_RepeatMonthDate_Validator_Js.invokeValidation]]' value="{if $RECURRING_INFORMATION['repeatMonth_date'] eq ''}2{else}{$RECURRING_INFORMATION['repeatMonth_date']}{/if}"/>
+						<input type="text" id="repeatMonthDate" data-field-id= '{$FIELD_MODEL->get('id')}' class="input-mini" style="width: 50px;" name="repeatMonth_date" data-validation-engine='validate[funcCall[Calendar_RepeatMonthDate_Validator_Js.invokeValidation]]' value="{if isset ($RECURRING_INFORMATION['repeatMonth_date']) && $RECURRING_INFORMATION['repeatMonth_date'] eq ''}2{else}{(isset($RECURRING_INFORMATION['repeatMonth_date'])) ? $RECURRING_INFORMATION['repeatMonth_date'] : ""}{/if}"/>
 						<span class="alignMiddle" style="margin-left: 0.8em;">{vtranslate('LBL_DAY_OF_THE_MONTH', $MODULE)}</span>
 					</span>
 					<div class="clearfix"></div>
@@ -78,18 +81,22 @@
 				<div class="row" id="repeatMonthDayUI" style="margin-top: 10px;">
 					<span class="col-lg-4">
 						<span class="pull-right">
-							<input type="radio" id="repeatDay" data-field-id= '{$FIELD_MODEL->get('id')}' name="repeatMonth" value="day" {if $RECURRING_INFORMATION['repeatMonth'] eq 'day'} checked {/if}/>
+							<input type="radio" id="repeatDay" data-field-id= '{$FIELD_MODEL->get('id')}' name="repeatMonth" value="day" {if isset($RECURRING_INFORMATION['repeatMonth']) && $RECURRING_INFORMATION['repeatMonth'] eq 'day'} checked {/if}/>
 							<span class="alignMiddle" style="margin-left: 0.8em;">{vtranslate('LBL_ON', $MODULE)}</span>
 						</span>	
 					</span>
 					<span class="col-lg-2">
 						<select id="repeatMonthDayType" class="select2" name="repeatMonth_daytype" style="width: 90px;">
-							<option value="first" {if $RECURRING_INFORMATION['repeatMonth_daytype'] eq 'first'} selected {/if}>{vtranslate('LBL_FIRST', $MODULE)}</option>
-							<option value="last" {if $RECURRING_INFORMATION['repeatMonth_daytype'] eq 'last'} selected {/if}>{vtranslate('LBL_LAST', $MODULE)}</option>
+						{if isset($RECURRING_INFORMATION['repeatMonth_daytype'])}
+						<option value="first" {if $RECURRING_INFORMATION['repeatMonth_daytype'] eq 'first'} selected {/if}>{vtranslate('LBL_FIRST', $MODULE)}</option>
+						<option value="last" {if $RECURRING_INFORMATION['repeatMonth_daytype'] eq 'last'} selected {/if}>{vtranslate('LBL_LAST', $MODULE)}</option>
+						{/if}
+							
 						</select>
 					</span>
 					<span class="col-lg-6 margin0">
 						<select id="repeatMonthDay" class="select2" name="repeatMonth_day" style="width: 120px;">
+							{if isset($RECURRING_INFORMATION['repeatMonth_day'])}
 							<option value=0 {if $RECURRING_INFORMATION['repeatMonth_day'] eq 0} selected {/if}>{vtranslate('LBL_DAY0', $MODULE)}</option>
 							<option value=1 {if $RECURRING_INFORMATION['repeatMonth_day'] eq 1} selected {/if}>{vtranslate('LBL_DAY1', $MODULE)}</option>
 							<option value=2 {if $RECURRING_INFORMATION['repeatMonth_day'] eq 2} selected {/if}>{vtranslate('LBL_DAY2', $MODULE)}</option>
@@ -97,6 +104,8 @@
 							<option value=4 {if $RECURRING_INFORMATION['repeatMonth_day'] eq 4} selected {/if}>{vtranslate('LBL_DAY4', $MODULE)}</option>
 							<option value=5 {if $RECURRING_INFORMATION['repeatMonth_day'] eq 5} selected {/if}>{vtranslate('LBL_DAY5', $MODULE)}</option>
 							<option value=6 {if $RECURRING_INFORMATION['repeatMonth_day'] eq 6} selected {/if}>{vtranslate('LBL_DAY6', $MODULE)}</option>
+						{/if}
+							
 						</select>
 					</span>
 				</div>
diff --git a/layouts/v7/modules/Vtiger/uitypes/Reminder.tpl b/layouts/v7/modules/Vtiger/uitypes/Reminder.tpl
index d22eefebd..0d4be6229 100644
--- a/layouts/v7/modules/Vtiger/uitypes/Reminder.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/Reminder.tpl
@@ -10,25 +10,25 @@
 -->*}
 
 {strip}
-{if !$REMINDER_VALUES}
+{if isset($REMINDER_VALUES) && !$REMINDER_VALUES}
 	{assign var=REMINDER_VALUES value=$FIELD_MODEL->getEditViewDisplayValue($FIELD_MODEL->get('fieldvalue'))}
 {/if}
-{if $REMINDER_VALUES eq ''}
+{if isset($REMINDER_VALUES) && $REMINDER_VALUES eq ''}
     {assign var=DAYS value=0}
 	{assign var=HOURS value=0}
 	{assign var=MINUTES value=1}
 {else}
-    {assign var=DAY value=$REMINDER_VALUES[0]}
-	{assign var=HOUR value=$REMINDER_VALUES[1]}
-	{assign var=MINUTE value=$REMINDER_VALUES[2]}
+    {assign var=DAY value=(isset($REMINDER_VALUES[0])) ? $REMINDER_VALUES[0] : ""}
+	{assign var=HOUR value=(isset($REMINDER_VALUES[1])) ? $REMINDER_VALUES[1] : ""}
+	{assign var=MINUTE value=(isset($REMINDER_VALUES[2])) ? $REMINDER_VALUES[2] : ""}
 {/if}
 
 <div id="js-reminder-controls">
 	<div style="float:left;margin-top: 1%;">
 		<input type=hidden name=set_reminder value=0 />
-		<input type=checkbox name=set_reminder {if $REMINDER_VALUES neq ''}checked{/if} value=1 />&nbsp;&nbsp;
+		<input type=checkbox name=set_reminder {if isset($REMINDER_VALUES) && $REMINDER_VALUES neq ''}checked{/if} value=1 />&nbsp;&nbsp;
 	</div>
-	<div id="js-reminder-selections" style="float:left;visibility:{if $REMINDER_VALUES neq ''}visible{else}collapse{/if};">
+	<div id="js-reminder-selections" style="float:left;visibility:{if isset($REMINDER_VALUES) && $REMINDER_VALUES neq ''}visible{else}collapse{/if};">
 		<div style="float:left">
 			<div style="float:left">
 				<select class="select2" name="remdays">
diff --git a/modules/Calendar/views/Edit.php b/modules/Calendar/views/Edit.php
index 514da34fd..042dad57d 100644
--- a/modules/Calendar/views/Edit.php
+++ b/modules/Calendar/views/Edit.php
@@ -52,7 +52,8 @@ Class Calendar_Edit_View extends Vtiger_Edit_View {
 
 		$viewer = $this->getViewer ($request);
 		$record = $request->get('record');
-
+		$followUpTime='';
+		$followUpDate='';
 		 if(!empty($record) && $request->get('isDuplicate') == true) {
 			$recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName);
 			$viewer->assign('MODE', '');
diff --git a/modules/Campaigns/Campaigns.php b/modules/Campaigns/Campaigns.php
index 78e23e675..d67ec6df0 100644
--- a/modules/Campaigns/Campaigns.php
+++ b/modules/Campaigns/Campaigns.php
@@ -173,7 +173,7 @@ class Campaigns extends CRMEntity {
 
 		if($return_value == null)
 			$return_value = Array();
-		else if($is_CampaignStatusAllowed && is_array($return_value['header'])) {
+		else if(isset($return_value['header']) && $is_CampaignStatusAllowed && is_array($return_value['header'])) {
 			$statusPos = php7_count($return_value['header']) - 2; // Last column is for Actions, exclude that. Also the index starts from 0, so reduce one more count.
 			$return_value = $this->add_status_popup($return_value, $statusPos, 'Accounts');
 		}
@@ -274,7 +274,7 @@ class Campaigns extends CRMEntity {
 		if($return_value == null)
 			$return_value = Array();
 		else if($is_CampaignStatusAllowed) {
-			$statusPos = php7_count($return_value['header']) - 2; // Last column is for Actions, exclude that. Also the index starts from 0, so reduce one more count.
+			$statusPos = isset($return_value['header']) ? php7_count($return_value['header']) - 2 : ''; // Last column is for Actions, exclude that. Also the index starts from 0, so reduce one more count.
 			$return_value = $this->add_status_popup($return_value, $statusPos, 'Contacts');
 		}
 
@@ -370,7 +370,7 @@ class Campaigns extends CRMEntity {
 		if($return_value == null)
 			$return_value = Array();
 		else if($is_CampaignStatusAllowed) {
-			$statusPos = php7_count($return_value['header']) - 2; // Last column is for Actions, exclude that. Also the index starts from 0, so reduce one more count.
+			$statusPos = isset($return_value['header']) ? php7_count($return_value['header']) - 2 : ''; // Last column is for Actions, exclude that. Also the index starts from 0, so reduce one more count.
 			$return_value = $this->add_status_popup($return_value, $statusPos, 'Leads');
 		}
 
@@ -535,7 +535,7 @@ class Campaigns extends CRMEntity {
 	{
 		global $adb;
 
-		if(!$this->campaignrelstatus)
+		if(!isset($this->campaignrelstatus))
 		{
 			$result = $adb->pquery('SELECT * FROM vtiger_campaignrelstatus;', array());
 			while($row = $adb->fetchByAssoc($result))
diff --git a/modules/CustomView/CustomView.php b/modules/CustomView/CustomView.php
index 27e5df9a6..d582d781b 100644
--- a/modules/CustomView/CustomView.php
+++ b/modules/CustomView/CustomView.php
@@ -226,7 +226,7 @@ class CustomView extends CRMEntity {
 		$result = $adb->pquery($ssql, $sparams);
 		while ($cvrow = $adb->fetch_array($result)) {
 			if ($cvrow['viewname'] == 'All') {
-				$cvrow['viewname'] = $app_strings['COMBO_ALL'];
+				$cvrow['viewname'] = isset($app_strings['COMBO_ALL'])?$app_strings['COMBO_ALL']:'';
 			}
 
 			$option = '';
diff --git a/modules/com_vtiger_workflow/VTWorkflowManager.inc b/modules/com_vtiger_workflow/VTWorkflowManager.inc
index cb13e5105..31ecffb60 100644
--- a/modules/com_vtiger_workflow/VTWorkflowManager.inc
+++ b/modules/com_vtiger_workflow/VTWorkflowManager.inc
@@ -435,7 +435,7 @@ class Workflow{
 				//Check whether task is VTEmailTask and then check emailoptout value
 				//if enabled don't queue the email
 				if($taskClassName == 'VTEmailTask'){
-					if($data['emailoptout'] == 1) continue;
+					if(isset($data['emailoptout']) && $data['emailoptout'] == 1) continue;
 				}
 				$delay = 0;
 				$trigger = $task->trigger;
diff --git a/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc b/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc
index 06b0d8323..6228ad1e3 100644
--- a/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc
+++ b/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc
@@ -303,6 +303,7 @@ function __vt_power($elements) {
 }
 
 /** END * */
+#[\AllowDynamicProperties]
 class VTFieldExpressionEvaluater{
 	function __construct($expr){
 
diff --git a/modules/com_vtiger_workflow/expression_engine/VTParser.inc b/modules/com_vtiger_workflow/expression_engine/VTParser.inc
index 957378300..aad1a3a32 100644
--- a/modules/com_vtiger_workflow/expression_engine/VTParser.inc
+++ b/modules/com_vtiger_workflow/expression_engine/VTParser.inc
@@ -7,6 +7,7 @@
  * Portions created by vtiger are Copyright (C) vtiger.
  * All Rights Reserved.
  ******************************************************************************/
+#[\AllowDynamicProperties]
 class VTExpressionTreeNode{
 	function __construct($arr){
 		$this->arr = $arr;
@@ -22,7 +23,7 @@ class VTExpressionTreeNode{
 	}
 }
 
-
+#[\AllowDynamicProperties]
 class VTExpressionSymbol{
 	function __construct($value){
 		$this->value = $value;
@@ -32,7 +33,7 @@ class VTExpressionSymbol{
 		return "VTExpressionSymbol({$this->value})";
 	}
 }
-
+#[\AllowDynamicProperties]
 class VTExpressionParser{
 	function __construct($tokens){
 		$this->tokens = $tokens;
diff --git a/modules/com_vtiger_workflow/expression_engine/VTTokenizer.inc b/modules/com_vtiger_workflow/expression_engine/VTTokenizer.inc
index 9e21649d7..5bf15b038 100644
--- a/modules/com_vtiger_workflow/expression_engine/VTTokenizer.inc
+++ b/modules/com_vtiger_workflow/expression_engine/VTTokenizer.inc
@@ -7,7 +7,8 @@
  * Portions created by vtiger are Copyright (C) vtiger.
  * All Rights Reserved.
  ******************************************************************************/
-class VTExpressionToken{
+#[\AllowDynamicProperties]
+ class VTExpressionToken{
 	function __construct($label){
 		$this->label = $label;
 	}
@@ -20,7 +21,7 @@ function _vt_processtoken_id($token){
 function _vt_processtoken_symbol($token){
 	return new VTEXpressionSymbol($token);
 }
-
+#[\AllowDynamicProperties]
 class VTExpressionTokenizer{
 	function __construct($expr){		
 		$tokenTypes = array(
@@ -76,6 +77,7 @@ class VTExpressionTokenizer{
 	}
 }
 
+#[\AllowDynamicProperties]
 class VTExpressionSpaceFilter{
 	function __construct($tokens){
 		$this->tokens = $tokens;
-- 
GitLab