From f0e7e57d5ca0fbbac4c29bc56ab9a55cab14d304 Mon Sep 17 00:00:00 2001
From: Prasad <prasad@vtiger.com>
Date: Sat, 2 Oct 2021 22:22:02 +0530
Subject: [PATCH] PHP 8 corrections for php warning

---
 include/database/PearDatabase.php             |  1 +
 include/fields/DateTimeField.php              |  4 +--
 include/utils/VTCacheUtils.php                |  1 +
 include/utils/utils.php                       |  2 +-
 includes/main/WebUI.php                       |  2 +-
 includes/runtime/Controller.php               |  3 +++
 layouts/v7/modules/Vtiger/ModuleHeader.tpl    |  6 ++---
 .../dashboards/DashBoardTabContents.tpl       |  2 ++
 modules/Users/models/Privileges.php           | 26 +++++++++----------
 modules/Vtiger/models/DashBoard.php           |  4 +--
 modules/Vtiger/models/MenuStructure.php       |  2 +-
 modules/Vtiger/views/DashBoardTab.php         |  1 +
 modules/Vtiger/views/Header.php               |  4 ++-
 .../PBXManager/actions/IncomingCallPoll.php   |  1 +
 vtlib/Vtiger/AccessControl.php                |  6 ++---
 vtlib/Vtiger/Deprecated.php                   |  1 +
 vtlib/Vtiger/Functions.php                    |  2 +-
 vtlib/Vtiger/Link.php                         |  2 +-
 18 files changed, 41 insertions(+), 29 deletions(-)

diff --git a/include/database/PearDatabase.php b/include/database/PearDatabase.php
index d91b073cb..b7b6acd59 100644
--- a/include/database/PearDatabase.php
+++ b/include/database/PearDatabase.php
@@ -677,6 +677,7 @@ class PearDatabase{
 	                throw new Exception("result is not an object");
 		$result->Move($row);
 		$rowdata = $this->change_key_case($result->FetchRow());
+		if (!$rowdata) return null;
 		//$this->println($rowdata);
 		//Commented strip_selected_tags and added to_html function for HTML tags vulnerability
 		if($col == 'fieldlabel') $coldata = $rowdata[$col];
diff --git a/include/fields/DateTimeField.php b/include/fields/DateTimeField.php
index eb9dde1d8..0d8e797c1 100644
--- a/include/fields/DateTimeField.php
+++ b/include/fields/DateTimeField.php
@@ -219,7 +219,7 @@ class DateTimeField {
                 break;
         }
 
-        if ($date[1] != '') {
+        if (count($date) > 1 && $date[1] != '') {
             $userDate = $date[0] . ' ' . $date[1];
         } else {
             $userDate = $date[0];
@@ -307,7 +307,7 @@ class DateTimeField {
 		$log->debug("Entering getDisplayDate(" . $this->datetime . ") method ...");
 
 		$date_value = explode(' ',$this->datetime);
-		if ($date_value[1] != '') {
+		if (count($date_value) > 1 && $date_value[1] != '') {
 			$date = self::convertToUserTimeZone($this->datetime, $user);
 			$date_value = $date->format('Y-m-d');
 		}
diff --git a/include/utils/VTCacheUtils.php b/include/utils/VTCacheUtils.php
index 25c796dd4..7974ec1a8 100644
--- a/include/utils/VTCacheUtils.php
+++ b/include/utils/VTCacheUtils.php
@@ -110,6 +110,7 @@ class VTCacheUtils {
         }
 		$modulefields = false;
 		$fieldInfo = Vtiger_Cache::get('fieldInfo', $tabid);
+		$fldcache = null;
         if($fieldInfo){
             $fldcache =$fieldInfo;
         }else if(isset(self::$_fieldinfo_cache[$tabid])) {
diff --git a/include/utils/utils.php b/include/utils/utils.php
index 2212e80eb..df54258aa 100755
--- a/include/utils/utils.php
+++ b/include/utils/utils.php
@@ -558,7 +558,7 @@ function getActionid($action)
 	if(file_exists('tabdata.php') && (filesize('tabdata.php') != 0))
 	{
 		include('tabdata.php');
-		$actionid= $action_id_array[$action];
+		$actionid= isset($action_id_array[$action])? $action_id_array[$action] : 0;
 	}
 	else
 	{
diff --git a/includes/main/WebUI.php b/includes/main/WebUI.php
index 96ba9788f..96b79e0d5 100644
--- a/includes/main/WebUI.php
+++ b/includes/main/WebUI.php
@@ -151,7 +151,7 @@ class Vtiger_WebUI extends Vtiger_EntryPoint {
 
 			if(empty($module)) {
 				if ($this->hasLogin()) {
-					$defaultModule = $currentUser->defaultlandingpage;
+					$defaultModule = isset($currentUser->defaultlandingpage) ? $currentUser->defaultlandingpage : null;
 					$moduleModel = Vtiger_Module_Model::getInstance($defaultModule);
 					if(!empty($defaultModule) && $defaultModule != 'Home' && $moduleModel && $moduleModel->isActive()) {
 						$module = $defaultModule; $qualifiedModuleName = $defaultModule; $view = 'List';
diff --git a/includes/runtime/Controller.php b/includes/runtime/Controller.php
index 692ddf4dc..41fc5a376 100644
--- a/includes/runtime/Controller.php
+++ b/includes/runtime/Controller.php
@@ -210,6 +210,9 @@ abstract class Vtiger_View_Controller extends Vtiger_Action_Controller {
 		$viewer->assign('PARENT_MODULE', '');
 		$viewer->assign('EXTENSION_MODULE', '');
 
+		$viewer->assign('NOTIFIER_URL', '');
+		$viewer->assign('GLOBAL_SEARCH_VALUE', '');
+		$_REQUEST["view"] = isset($_REQUEST["view"])? $_REQUEST["view"] : "";
 
 		if ($request->getModule() != 'Install') {
 			$userCurrencyInfo = getCurrencySymbolandCRate($currentUser->get('currency_id'));
diff --git a/layouts/v7/modules/Vtiger/ModuleHeader.tpl b/layouts/v7/modules/Vtiger/ModuleHeader.tpl
index 963978fd8..9b8339cb0 100644
--- a/layouts/v7/modules/Vtiger/ModuleHeader.tpl
+++ b/layouts/v7/modules/Vtiger/ModuleHeader.tpl
@@ -24,10 +24,10 @@
 					{/if}
 				{/if}
 				<a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}&app={$SELECTED_MENU_CATEGORY}'><h4 class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4>&nbsp;&nbsp;</a>
-                                {if $smarty.session.lvs.$MODULE.viewname}
+                                {if isset($smarty.session.lvs) && isset($smarty.session.lvs.$MODULE) && isset($smarty.session.lvs.$MODULE.viewname)}
 					{assign var=VIEWID value=$smarty.session.lvs.$MODULE.viewname}
 				{/if}
-				{if $VIEWID}
+				{if isset($VIEWID) && $VIEWID}
 					{foreach item=FILTER_TYPES from=$CUSTOM_VIEWS}
 						{foreach item=FILTERS from=$FILTER_TYPES}
 							{if $FILTERS->get('cvid') eq $VIEWID}
@@ -39,7 +39,7 @@
 					<p class="current-filter-name filter-name pull-left cursorPointer" title="{$CVNAME}"><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a href='{$MODULE_MODEL->getListViewUrl()}&viewname={$VIEWID}&app={$SELECTED_MENU_CATEGORY}'>&nbsp;&nbsp;{$CVNAME}&nbsp;&nbsp;</a> </p>
 				{/if}
 				{assign var=SINGLE_MODULE_NAME value='SINGLE_'|cat:$MODULE}
-				{if $RECORD and $smarty.request.view eq 'Edit'}
+				{if isset($RECORD) && $RECORD and $smarty.request.view eq 'Edit'}
 					<p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a title="{$RECORD->get('label')}">&nbsp;&nbsp;{vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('label')} &nbsp;&nbsp;</a></p>
 				{else if $smarty.request.view eq 'Edit'}
 					<p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a>&nbsp;&nbsp;{vtranslate('LBL_ADDING_NEW', $MODULE)}&nbsp;&nbsp;</a></p>
diff --git a/layouts/v7/modules/Vtiger/dashboards/DashBoardTabContents.tpl b/layouts/v7/modules/Vtiger/dashboards/DashBoardTabContents.tpl
index 08f0a7c23..467a7b064 100644
--- a/layouts/v7/modules/Vtiger/dashboards/DashBoardTabContents.tpl
+++ b/layouts/v7/modules/Vtiger/dashboards/DashBoardTabContents.tpl
@@ -13,6 +13,8 @@
 		<br><div class="dashboardBanner"></div>
 		<div class="dashBoardTabContents clearfix">
 			<div class="gridster_{$TABID}">
+				{assign var="ROWCOUNT" value=0}
+				{assign var="COLCOUNT" value=0}
 				<ul>
 					{assign var=COLUMNS value=2}
 					{assign var=ROW value=1}
diff --git a/modules/Users/models/Privileges.php b/modules/Users/models/Privileges.php
index 857754957..5cdb164ba 100644
--- a/modules/Users/models/Privileges.php
+++ b/modules/Users/models/Privileges.php
@@ -115,19 +115,19 @@ class Users_Privileges_Model extends Users_Record_Model {
 
 		$valueMap = array();
 		$valueMap['id'] = $userId;
-		$valueMap['is_admin'] = (bool) $acl->is_admin;
-		$valueMap['roleid'] = $acl->current_user_roles;
-		$valueMap['parent_role_seq'] = $acl->current_user_parent_role_seq;
-		$valueMap['profiles'] = $acl->current_user_profiles;
-		$valueMap['profile_global_permission'] = $acl->profileGlobalPermission;
-		$valueMap['profile_tabs_permission'] = $acl->profileTabsPermission;
-		$valueMap['profile_action_permission'] = $acl->profileActionPermission;
-		$valueMap['groups'] = $acl->current_user_groups;
-		$valueMap['subordinate_roles'] = $acl->subordinate_roles;
-		$valueMap['parent_roles'] = $acl->parent_roles;
-		$valueMap['subordinate_roles_users'] = $acl->subordinate_roles_users;
-		$valueMap['defaultOrgSharingPermission'] = $defaultOrgSharingPermission;
-		$valueMap['related_module_share'] = $related_module_share;
+		$valueMap['is_admin'] = isset($acl->is_admin) ? (bool) $acl->is_admin : false;
+		$valueMap['roleid'] = isset($acl->current_user_roles) ? $acl->current_user_roles : null;
+		$valueMap['parent_role_seq'] = isset($acl->current_user_parent_role_seq) ? $acl->current_user_parent_role_seq : null;
+		$valueMap['profiles'] = isset($acl->current_user_profiles) ? $acl->current_user_profiles : null;
+		$valueMap['profile_global_permission'] = isset($acl->profileGlobalPermission) ? $acl->profileGlobalPermission : null;
+		$valueMap['profile_tabs_permission'] = isset($acl->profileTabsPermission) ? $acl->profileTabsPermission : null;
+		$valueMap['profile_action_permission'] = isset($acl->profileActionPermission) ? $acl->profileActionPermission : null;
+		$valueMap['groups'] = isset($acl->current_user_groups)? $acl->current_user_groups : null;
+		$valueMap['subordinate_roles'] = isset($acl->subordinate_roles)? $acl->subordinate_roles : null;
+		$valueMap['parent_roles'] = isset($acl->parent_roles)? $acl->parent_roles : null;
+		$valueMap['subordinate_roles_users'] = isset($acl->subordinate_roles_users) ? $acl->subordinate_roles_users : null;
+		$valueMap['defaultOrgSharingPermission'] = isset($defaultOrgSharingPermission) ? $defaultOrgSharingPermission : null;
+		$valueMap['related_module_share'] = isset($related_module_share)? $related_module_share : null;
 
 		if(is_array($acl->user_info)) {
 			$valueMap = array_merge($valueMap, $acl->user_info);
diff --git a/modules/Vtiger/models/DashBoard.php b/modules/Vtiger/models/DashBoard.php
index 2f1528750..9073eede0 100644
--- a/modules/Vtiger/models/DashBoard.php
+++ b/modules/Vtiger/models/DashBoard.php
@@ -311,8 +311,8 @@ class Vtiger_DashBoard_Model extends Vtiger_Base_Model {
 		$currentUserPrivilegeModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
 		$linkUrl = $resultData['linkurl'];
 		$linkLabel = $resultData['linklabel'];
-		$filterId = $resultData['filterid'];
-		$data = decode_html($resultData['data']);
+		$filterId = isset($resultData['filterid'])? $resultData['filterid'] : null;
+		$data = decode_html(isset($resultData['data'])? $resultData['data'] : null);
 		$module = $this->getModuleNameFromLink($linkUrl, $linkLabel);
 
 		if($module == 'Home' && !empty($filterId) && !empty($data)) {
diff --git a/modules/Vtiger/models/MenuStructure.php b/modules/Vtiger/models/MenuStructure.php
index 8514310bb..fb05add1a 100644
--- a/modules/Vtiger/models/MenuStructure.php
+++ b/modules/Vtiger/models/MenuStructure.php
@@ -95,7 +95,7 @@ class Vtiger_MenuStructure_Model extends Vtiger_Base_Model {
 			$menuGroupedListByParent[strtoupper($parent)][$menuModel->get('name')] = $menuModel;
 		}
 
-		if(!empty($selectedMenu) && !array_key_exists($selectedMenu, $menuListArray[self::TOP_MENU_INDEX])) {
+		if(!empty($selectedMenu) && isset($menuModelList[$selectedMenu]) && !array_key_exists($selectedMenu, $menuListArray[self::TOP_MENU_INDEX])) {
 			$selectedMenuModel = $menuModelList[$selectedMenu];
 			if($selectedMenuModel) {
 				$menuListArray[self::TOP_MENU_INDEX][$selectedMenuModel->get('name')] = $selectedMenuModel;
diff --git a/modules/Vtiger/views/DashBoardTab.php b/modules/Vtiger/views/DashBoardTab.php
index 8ab58f8cd..e6ecb1d99 100644
--- a/modules/Vtiger/views/DashBoardTab.php
+++ b/modules/Vtiger/views/DashBoardTab.php
@@ -58,6 +58,7 @@ class Vtiger_DashboardTab_View extends Vtiger_Index_View {
          
         $viewer = $this->getViewer($request);
 		$viewer->assign('MODULE_NAME', $moduleName);
+        $viewer->assign("MODULE",$moduleName);
 		$viewer->assign('WIDGETS', $widgets);        
 		$viewer->assign('SELECTABLE_WIDGETS', $selectableWidgets);
 		$viewer->assign('TABID',$tabId);
diff --git a/modules/Vtiger/views/Header.php b/modules/Vtiger/views/Header.php
index af02edecc..176a674c4 100644
--- a/modules/Vtiger/views/Header.php
+++ b/modules/Vtiger/views/Header.php
@@ -29,7 +29,9 @@ abstract class Vtiger_Header_View extends Vtiger_View_Controller {
 	 * which are registered for 5.x modules (and now provided for 6.x as well).
 	 */
 	protected function checkFileUriInRelocatedMouldesFolder($fileuri) {
-		list ($filename, $query) = explode('?', $fileuri);
+		$parts = explode('?', $fileuri);
+		$filename = $parts[0];
+		if (count($parts) > 1) $query = $parts[1];
 
 		// prefix the base lookup folder (relocated file).
 		if (strpos($filename, 'modules') === 0) {
diff --git a/pkg/vtiger/modules/PBXManager/modules/PBXManager/actions/IncomingCallPoll.php b/pkg/vtiger/modules/PBXManager/modules/PBXManager/actions/IncomingCallPoll.php
index 0a0d1fa56..42c3986d0 100644
--- a/pkg/vtiger/modules/PBXManager/modules/PBXManager/actions/IncomingCallPoll.php
+++ b/pkg/vtiger/modules/PBXManager/modules/PBXManager/actions/IncomingCallPoll.php
@@ -60,6 +60,7 @@ class PBXManager_IncomingCallPoll_Action extends Vtiger_Action_Controller{
         $response = new Vtiger_Response();
         $user = Users_Record_Model::getCurrentUserModel();
         
+        $calls = array();
         $recordModels = $recordModel->searchIncomingCall();
         // To check whether user have permission on caller record
         if($recordModels){
diff --git a/vtlib/Vtiger/AccessControl.php b/vtlib/Vtiger/AccessControl.php
index 1fdedaa2d..2a1927bbb 100644
--- a/vtlib/Vtiger/AccessControl.php
+++ b/vtlib/Vtiger/AccessControl.php
@@ -24,11 +24,11 @@ class Vtiger_AccessControl {
 		if (!isset($this->privileges[$id])) {
 			checkFileAccessForInclusion('user_privileges/user_privileges_'.$id.'.php');
 			require('user_privileges/user_privileges_'.$id.'.php');
-
+			$vars = get_defined_vars();
 			$privilege = new stdClass;
 			foreach (self::$PRIVILEGE_ATTRS as $attr) {
-				if (isset($attr))
-					$privilege->$attr = $$attr;
+				if (isset($attr) && isset($vars[$attr]))
+					$privilege->$attr = $vars[$attr];
 			}
 
 			$this->privileges[$id] = $privilege;
diff --git a/vtlib/Vtiger/Deprecated.php b/vtlib/Vtiger/Deprecated.php
index a23a02a49..e6d5e4de6 100644
--- a/vtlib/Vtiger/Deprecated.php
+++ b/vtlib/Vtiger/Deprecated.php
@@ -295,6 +295,7 @@ class Vtiger_Deprecated {
 
 	static function getAnnouncements() {
 		global $adb;
+		$announcement = "";
 		$sql = " select * from vtiger_announcement inner join vtiger_users on vtiger_announcement.creatorid=vtiger_users.id";
 		$sql.=" AND vtiger_users.is_admin='on' AND vtiger_users.status='Active' AND vtiger_users.deleted = 0";
 		$result = $adb->pquery($sql, array());
diff --git a/vtlib/Vtiger/Functions.php b/vtlib/Vtiger/Functions.php
index 4762ebf70..c67acfce9 100644
--- a/vtlib/Vtiger/Functions.php
+++ b/vtlib/Vtiger/Functions.php
@@ -174,7 +174,7 @@ class Vtiger_Functions {
 
 		if ($name && !isset(self::$moduleNameIdCache[$name])) {$reload = true;}
 		else if ($id && !isset(self::$moduleIdNameCache[$id])) {$reload = true;}
-		else {
+		else if ($name) {
 			if (!$id) $id = self::$moduleNameIdCache[$name]['tabid'];
 			if (!isset(self::$moduleIdDataCache[$id])) { $reload = true; }
 		}
diff --git a/vtlib/Vtiger/Link.php b/vtlib/Vtiger/Link.php
index 5b827368d..8194a45b8 100644
--- a/vtlib/Vtiger/Link.php
+++ b/vtlib/Vtiger/Link.php
@@ -52,7 +52,7 @@ class Vtiger_Link {
 		$this->handler_path	=isset($valuemap['handler_path']) ? $valuemap['handler_path'] : null;
 		$this->handler_class=isset($valuemap['handler_class']) ? $valuemap['handler_class'] : null;
 		$this->handler		=isset($valuemap['handler']) ? $valuemap['handler'] : null;
-		$this->parent_link	=$valuemap['parent_link'];
+		$this->parent_link	= isset($valuemap['parent_link']) ? $valuemap['parent_link'] : null;
 	}
 
 	/**
-- 
GitLab