diff --git a/include/ChartUtils.php b/include/ChartUtils.php
index c1b01bba54862d6652ddb47a82b18d32c85b5b0f..62ded8537bc0ca4a3ea92c7ad7df56361dcc28bc 100644
--- a/include/ChartUtils.php
+++ b/include/ChartUtils.php
@@ -370,7 +370,7 @@ Class ChartUtils {
 
 		if ($fieldDetails != '') {
 			list($tablename, $colname, $module_field, $fieldname, $single) = explode(":", $fieldDetails);
-			list($module, $field) = split("_", $module_field);
+			list($module, $field) = explode('_', $module_field);
 			$dateField = false;
 			if ($single == 'D') {
 				$dateField = true;
diff --git a/include/ListView/ListViewController.php b/include/ListView/ListViewController.php
index 6334b35538a38a53604c85fcab3c2e0cd33bb0a4..2a4b6bd7ea2980aefbd1dfa80030d2e169585173 100644
--- a/include/ListView/ListViewController.php
+++ b/include/ListView/ListViewController.php
@@ -228,6 +228,7 @@ class ListViewController {
 		}
 
 		$moduleInstance = Vtiger_Module_Model::getInstance("PBXManager");
+                $outgoingCallPermission = false;
 		if($moduleInstance && $moduleInstance->isActive()) {
 			$outgoingCallPermission = PBXManager_Server_Model::checkPermissionForOutgoingCall();
 			$clickToCallLabel = vtranslate("LBL_CLICK_TO_CALL");
@@ -300,7 +301,6 @@ class ListViewController {
 					} else{
 						$value = textlength_check($value);
 					}
-					$value = $fileicon.$value;
 				} elseif($module == 'Documents' && $fieldName == 'filesize') {
 					$downloadType = $db->query_result($result,$i,'filelocationtype');
 					if($downloadType == 'I') {
diff --git a/include/utils/InventoryUtils.php b/include/utils/InventoryUtils.php
index 03da263412e3339e307a2c298048c3706cdf39f5..baa17172be770ec75f7ffec23b407984dd121372 100644
--- a/include/utils/InventoryUtils.php
+++ b/include/utils/InventoryUtils.php
@@ -686,7 +686,7 @@ function saveInventoryProductDetails(&$focus, $module, $update_prod_stock='false
 
 		$sub_prod_str = vtlib_purify($_REQUEST['subproduct_ids'.$i]);
 		if (!empty($sub_prod_str)) {
-			 $sub_prod = split(',', rtrim($sub_prod_str, ','));
+			 $sub_prod = explode(',', rtrim($sub_prod_str, ','));
 			 foreach ($sub_prod as $subProductInfo) {
 				 list($subProductId, $subProductQty) = explode(':', $subProductInfo);
 				 $query = 'INSERT INTO vtiger_inventorysubproductrel VALUES(?, ?, ?, ?)';
diff --git a/include/utils/VtlibUtils.php b/include/utils/VtlibUtils.php
index 1215aea17b0e17fbe63c36940cac5c642ab9d01f..274343ff1191e312224488bf029b1d376522ded1 100644
--- a/include/utils/VtlibUtils.php
+++ b/include/utils/VtlibUtils.php
@@ -718,10 +718,26 @@ function vtlib_purify($input, $ignore = false) {
         }
         $purified_cache[$md5OfInput] = $value;
     }
-    $value = str_replace('&', '&', $value);
+    
+    if(is_array($value)) {
+        $value = str_replace_json('&', '&', $value);
+    } else {
+        $value = str_replace('&', '&', $value);
+    }
     return $value;
 }
 
+/**
+ * Function to replace values in multi dimentional array (str_replace will support only one level of array)
+ * @param type $search
+ * @param type $replace
+ * @param type $subject
+ * @return <array>
+ */
+function str_replace_json($search, $replace, $subject){
+    return json_decode(str_replace($search, $replace,  json_encode($subject)), true);
+}
+
 /**
  * To purify malicious html event attributes
  * @param <String> $value
diff --git a/include/utils/export.php b/include/utils/export.php
index d4c6b74562d419b017858ca37cbcbfb16cf3a509..0603f89dec737fe50fe7509935bfcbb8a988b3ee 100755
--- a/include/utils/export.php
+++ b/include/utils/export.php
@@ -135,7 +135,7 @@ function export($type){
 	}
 	$params = array();
 
-	list($idstring, $export_data) = split("#@@#",getExportRecordIds($type, $viewid, $_REQUEST));
+	list($idstring, $export_data) = explode('#@@#', getExportRecordIds($type, $viewid, $_REQUEST));
 	
 	if(($search_type == 'withoutsearch' || $search_type == 'includesearch') && $export_data == 'selecteddata'){
 		$idstring = getSelectedRecords($_REQUEST, $type, $idstring, vtlib_purify($_REQUEST['excludedRecords']));
diff --git a/include/utils/utils.php b/include/utils/utils.php
index 955b87682f433be11f9d345ce2c7775ece06f4e8..eb0bc4ca7fe5d7f62397f862fe1e03d386dfefaa 100755
--- a/include/utils/utils.php
+++ b/include/utils/utils.php
@@ -2174,7 +2174,7 @@ function getSelectAllQuery($input,$module) {
 		$query = $oCustomView->getModifiedCvListQuery($viewid,$listquery,$module);
 		$where = '';
 		if($input['query'] == 'true') {
-			list($where, $ustring) = split("#@@#",getWhereCondition($module, $input));
+			list($where, $ustring) = explode('#@@#', getWhereCondition($module, $input));
 			if(isset($where) && $where != '') {
 				$query .= " AND " .$where;
 			}
diff --git a/includes/http/Request.php b/includes/http/Request.php
index c8282f7512a3350ca04c9e56351fa226f79db351..0a1ee077e51a8e49f938f657fb5aa551b59d96ad 100644
--- a/includes/http/Request.php
+++ b/includes/http/Request.php
@@ -8,28 +8,13 @@
  * All Rights Reserved.
  ************************************************************************************/
 
-class Vtiger_Request implements ArrayAccess {
+class Vtiger_Request {
 
 	// Datastore
 	private $valuemap;
 	private $rawvaluemap;
 	private $defaultmap = array();
 
-	// ArrayAccess Start
-	public function offsetExists($key) {
-		return $this->has($key);
-	}
-	public function offsetSet($key, $value) {
-		$this->set($key, $value);
-	}
-	public function offsetGet($key) {
-		return $this->get($key);
-	}
-	public function offsetUnset($key) {
-		// Ignore
-	}
-	// ArrayAccess End
-
 	/**
 	 * Default constructor
 	 */
@@ -72,14 +57,19 @@ class Vtiger_Request implements ArrayAccess {
 			}
 		}
 		if($isJSON) {
-			$decodeValue = json_decode($value, true);
-                        $value = json_last_error() ? $value : $decodeValue;
+                    $oldValue = Zend_Json::$useBuiltinEncoderDecoder;
+                    Zend_Json::$useBuiltinEncoderDecoder = false;
+                    $decodeValue = Zend_Json::decode($value);
+                    if(isset($decodeValue)) {
+                            $value = $decodeValue;
+                    }
+                    Zend_Json::$useBuiltinEncoderDecoder  = $oldValue;
 		}
 
-        //Handled for null because vtlib_purify returns empty string
-        if(!empty($value)){
-            $value = vtlib_purify($value);
-        }
+                //Handled for null because vtlib_purify returns empty string
+                if(!empty($value)){
+                    $value = vtlib_purify($value);
+                }
 		return $value;
 	}
 
diff --git a/includes/runtime/LanguageHandler.php b/includes/runtime/LanguageHandler.php
index 5815b680111d5848df6e5b5304857be04d973331..b570bd7adaefab7ce0cdba42cfe52fd817c45bb3 100644
--- a/includes/runtime/LanguageHandler.php
+++ b/includes/runtime/LanguageHandler.php
@@ -132,7 +132,7 @@ class Vtiger_Language_Handler {
 			$qualifiedName = 'languages.'.$language.'.'.$module;
 			$file = Vtiger_Loader::resolveNameToPath($qualifiedName);
 			$languageStrings = $jsLanguageStrings = array();
-			if (!self::$fileExists[$file]) {
+			if (!isset(self::$fileExists[$file])) {
 				self::$fileExists[$file] = file_exists($file) ? 'yes' : 'no';
 			}
 			if (self::$fileExists[$file] == 'yes') {
@@ -147,7 +147,7 @@ class Vtiger_Language_Handler {
         $file = Vtiger_Loader::resolveNameToPath($qualifiedCustomName);
 
         $languageStrings = $jsLanguageStrings = array();
-		if (!self::$fileExists[$file]) {
+		if (!isset(self::$fileExists[$file])) {
 			self::$fileExists[$file] = file_exists($file) ? 'yes' : 'no';
 		}
 		if (self::$fileExists[$file] == 'yes') {            
diff --git a/languages/en_us/Vtiger.php b/languages/en_us/Vtiger.php
index 02418eab4d89913166e7dbc9a676e735fd62b35b..ecb68bcbcbaf1697046a4e55f77a5a5d9fa612d7 100644
--- a/languages/en_us/Vtiger.php
+++ b/languages/en_us/Vtiger.php
@@ -1393,6 +1393,7 @@ $languageStrings = array(
 	'LBL_RELATED_MODULES_PERMISSION_DENIED' => 'Related modules permission is denied',
 	'LBL_RECORD_PERMISSION_DENIED' => 'Record permissions denied',
 	'LBL_MASS_SELECT' => 'Mass Select',
+	'LBL_DASHBOARD_TAB_INVALID' => 'Invalid Tab Name ',
 );
 
 $jsLanguageStrings = array(
diff --git a/layouts/v7/modules/Accounts/uitypes/Text.tpl b/layouts/v7/modules/Accounts/uitypes/Text.tpl
index 91843400c92122057fc00450e6cf9c509f8d3a07..3b351199c1848c80a92e572ce639800119aff761 100644
--- a/layouts/v7/modules/Accounts/uitypes/Text.tpl
+++ b/layouts/v7/modules/Accounts/uitypes/Text.tpl
@@ -17,7 +17,7 @@
 		{else}
 		<textarea rows="5" class="inputElement {if $FIELD_MODEL->isNameField()}nameField{/if}" name="{$FIELD_NAME}" data-validation-engine="validate[{if $FIELD_MODEL->isMandatory() eq true}required,{/if}funcCall[Vtiger_Base_Validator_Js.invokeValidation]]" data-fieldinfo='{$FIELD_INFO}' {if !empty($SPECIAL_VALIDATOR)}data-validator={Zend_Json::encode($SPECIAL_VALIDATOR)}{/if}>
 			{$FIELD_MODEL->get('fieldvalue')}</textarea>
-			{if $MODULE_NAME neq 'Webforms' && $REQ.view neq 'Detail'}
+			{if $MODULE_NAME neq 'Webforms' && $REQ->get('view') neq 'Detail'}
 				{if $FIELD_NAME eq "bill_street"}
 				<div>
 					<a class="cursorPointer" name="copyAddress" data-target="shipping">{vtranslate('LBL_COPY_SHIPPING_ADDRESS', $MODULE)}</a>
diff --git a/layouts/v7/modules/Calendar/CalendarView.tpl b/layouts/v7/modules/Calendar/CalendarView.tpl
index 33c1ba650da3f1aebc0e7defe0edb0a9182c5cd2..fd75fd4b318d3a8ec6f6546d40d284028a4d20c5 100644
--- a/layouts/v7/modules/Calendar/CalendarView.tpl
+++ b/layouts/v7/modules/Calendar/CalendarView.tpl
@@ -8,7 +8,7 @@
  ************************************************************************************}
 {* modules/Calendar/views/Calendar.php *}
 {strip}
-<input type="hidden" id="currentView" value="{$REQ.view}" />
+<input type="hidden" id="currentView" value="{$REQ->get('view')}" />
 <input type="hidden" id="start_day" value="{$CURRENT_USER->get('dayoftheweek')}" />
 <input type="hidden" id="activity_view" value="{$CURRENT_USER->get('activity_view')}" />
 <input type="hidden" id="time_format" value="{$CURRENT_USER->get('hour_format')}" />
diff --git a/layouts/v7/modules/Calendar/ModuleHeader.tpl b/layouts/v7/modules/Calendar/ModuleHeader.tpl
index 4337e45142e34812b7fbd604e2cee8fbb4df4f5d..8f0f50a02ed9fc6f81ab43c9014e051e4699a61a 100644
--- a/layouts/v7/modules/Calendar/ModuleHeader.tpl
+++ b/layouts/v7/modules/Calendar/ModuleHeader.tpl
@@ -10,7 +10,7 @@
 {strip}
 	<div class="col-sm-12 col-xs-12 module-action-bar clearfix coloredBorderTop">
 		<div class="module-action-content clearfix {$MODULE}-module-action-content">
-			<div class="col-lg-7 col-md-7 module-breadcrumb module-breadcrumb-{$REQ.view} transitionsAllHalfSecond">
+			<div class="col-lg-7 col-md-7 module-breadcrumb module-breadcrumb-{$REQ->get('view')} transitionsAllHalfSecond">
 				{assign var=MODULE_MODEL value=Vtiger_Module_Model::getInstance($MODULE)}
 				{if $MODULE_MODEL->getDefaultViewName() neq 'List'}
 					{assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getDefaultUrl()}
@@ -39,13 +39,13 @@
 					<p class="current-filter-name filter-name pull-left cursorPointer" title="{$CVNAME}">&nbsp;<span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a href='{$MODULE_MODEL->getListViewUrl()}&viewname={$VIEWID}&app={$SELECTED_MENU_CATEGORY}'>&nbsp;{$CVNAME}&nbsp;</a></p>
 				{/if}
 				{assign var=SINGLE_MODULE_NAME value='SINGLE_'|cat:$MODULE}
-				{if $RECORD and $REQ.view eq 'Edit'}
+				{if $RECORD and $REQ->get('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;{vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('label')}&nbsp;</a></p>
-				{else if $REQ.view eq 'Edit'}
+				{else if $REQ->get('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;{vtranslate('LBL_ADDING_NEW', $MODULE)}&nbsp;</a></p>
 				{/if}
 
-				{if $REQ.view eq 'Detail'}
+				{if $REQ->get('view') eq 'Detail'}
 					<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;{$RECORD->get('label')}&nbsp;</a></p>
 				{/if}
 			</div>
diff --git a/layouts/v7/modules/Calendar/SharedCalendarView.tpl b/layouts/v7/modules/Calendar/SharedCalendarView.tpl
index 36477c3d904b7d62fb64c449f8bafc60b6819c36..e96fb6d3124ee9379f5cfb40e96b3ed607255fff 100644
--- a/layouts/v7/modules/Calendar/SharedCalendarView.tpl
+++ b/layouts/v7/modules/Calendar/SharedCalendarView.tpl
@@ -8,7 +8,7 @@
  ************************************************************************************}
 {* modules/Calendar/views/SharedCalendar.php *}
 {strip}
-<input type="hidden" id="currentView" value="{$REQ.view}" />
+<input type="hidden" id="currentView" value="{$REQ->get('view')}" />
 <input type="hidden" id="start_day" value="{$CURRENT_USER->get('dayoftheweek')}" />
 <input type="hidden" id="activity_view" value="{$CURRENT_USER->get('activity_view')}" />
 <input type="hidden" id="time_format" value="{$CURRENT_USER->get('hour_format')}" />
diff --git a/layouts/v7/modules/Contacts/uitypes/Text.tpl b/layouts/v7/modules/Contacts/uitypes/Text.tpl
index 849f5802ed7202f3614a87ae41cbe42f92f8c5a2..caadb6019a6770c832f87ca9666b33da5b230bd3 100644
--- a/layouts/v7/modules/Contacts/uitypes/Text.tpl
+++ b/layouts/v7/modules/Contacts/uitypes/Text.tpl
@@ -17,7 +17,7 @@
 {else}
 	<textarea rows="5" class="inputElement {if $FIELD_MODEL->isNameField()}nameField{/if}" name="{$FIELD_NAME}" data-validation-engine="validate[{if $FIELD_MODEL->isMandatory() eq true}required,{/if}funcCall[Vtiger_Base_Validator_Js.invokeValidation]]" data-fieldinfo='{$FIELD_INFO}' {if !empty($SPECIAL_VALIDATOR)}data-validator={Zend_Json::encode($SPECIAL_VALIDATOR)}{/if}>
 	{$FIELD_MODEL->get('fieldvalue')}</textarea>
-	{if $MODULE_NAME neq 'Webforms' && $REQ.view neq 'Detail'}
+	{if $MODULE_NAME neq 'Webforms' && $REQ->get('view') neq 'Detail'}
 		{if $FIELD_NAME eq "mailingstreet"}
 			<div>
 				<a class="cursorPointer" name="copyAddress" data-target="other">{vtranslate('LBL_COPY_OTHER_ADDRESS', $MODULE)}</a>
diff --git a/layouts/v7/modules/Documents/ModuleHeader.tpl b/layouts/v7/modules/Documents/ModuleHeader.tpl
index 781d2b97667c37d190c29cf3d42ad2c59c8f432f..2c3db7718c038360cd4db45c2d3ce908e231ce5c 100644
--- a/layouts/v7/modules/Documents/ModuleHeader.tpl
+++ b/layouts/v7/modules/Documents/ModuleHeader.tpl
@@ -12,7 +12,7 @@
 {strip}
 	<div class="col-sm-12 col-xs-12 module-action-bar clearfix coloredBorderTop">
 		<div class="module-action-content clearfix">
-			<div class="col-lg-7 col-md-7 module-breadcrumb module-breadcrumb-{$REQ.view}">
+			<div class="col-lg-7 col-md-7 module-breadcrumb module-breadcrumb-{$REQ->get('view')}">
 				{assign var=MODULE_MODEL value=Vtiger_Module_Model::getInstance($MODULE)}
 				{if $MODULE_MODEL->getDefaultViewName() neq 'List'}
 					{assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getDefaultUrl()}
@@ -41,12 +41,12 @@
 					<p  class="current-filter-name filter-name pull-left cursorPointer" title="{$CVNAME}">&nbsp;<span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a  href='{$MODULE_MODEL->getListViewUrl()}&viewname={$VIEWID}'>&nbsp;{$CVNAME}&nbsp;</a> </p>
 				{/if}
 				{assign var=SINGLE_MODULE_NAME value='SINGLE_'|cat:$MODULE}
-				{if $RECORD and $REQ.view eq 'Edit'}
+				{if $RECORD and $REQ->get('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;{vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('label')}&nbsp;</a></p>
-				{else if $REQ.view eq 'Edit'}
+				{else if $REQ->get('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;{vtranslate('LBL_ADDING_NEW', $MODULE)}&nbsp;</a></p>
 				{/if}
-				{if $REQ.view eq 'Detail'}
+				{if $REQ->get('view') eq 'Detail'}
 					<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;{$RECORD->get('label')}&nbsp;</a></p>
 				{/if}
 			</div>
diff --git a/layouts/v7/modules/Documents/partials/Menubar.tpl b/layouts/v7/modules/Documents/partials/Menubar.tpl
index 5a7ef6c4c72128fe243e82a05cd3f962caa47f79..8c9dbaa333ec2b0f3d1441de8c161e7354836790 100644
--- a/layouts/v7/modules/Documents/partials/Menubar.tpl
+++ b/layouts/v7/modules/Documents/partials/Menubar.tpl
@@ -7,7 +7,7 @@
 * All Rights Reserved.
 *************************************************************************************}
 
-{if $REQ.view eq 'Detail'}
+{if $REQ->get('view') eq 'Detail'}
 <div id="modules-menu" class="modules-menu">    
     <ul>
         <li class="active">
diff --git a/layouts/v7/modules/Events/uitypes/Multireference.tpl b/layouts/v7/modules/Events/uitypes/Multireference.tpl
index 6243b5b5aac9861f4697629fd5d4b9cedf15943f..48175afbbe6845c0e2331e78de5777bac51bf9f7 100644
--- a/layouts/v7/modules/Events/uitypes/Multireference.tpl
+++ b/layouts/v7/modules/Events/uitypes/Multireference.tpl
@@ -43,7 +43,7 @@
 
 			<input type="hidden" name="relatedContactInfo" data-value='{json_encode($RELATED_CONTACTS, $smarty.const.JSON_HEX_APOS)}' />
                         <!-- Show the add button only if it is edit view  -->
-                        {if $REQ.view eq 'Edit'}
+                        {if $REQ->get('view') eq 'Edit'}
                             <span class="input-group-addon createReferenceRecord cursorPointer clearfix" title="{vtranslate('LBL_CREATE', $MODULE)}">
                                     <i id="{$MODULE}_editView_fieldName_{$FIELD_NAME}_create" class="fa fa-plus"></i>
                             </span>
diff --git a/layouts/v7/modules/PurchaseOrder/PopupContents.tpl b/layouts/v7/modules/PurchaseOrder/PopupContents.tpl
deleted file mode 100644
index 3bf4eb1bfee0c6bdbe21451689fc9e99fcbfab19..0000000000000000000000000000000000000000
--- a/layouts/v7/modules/PurchaseOrder/PopupContents.tpl
+++ /dev/null
@@ -1,12 +0,0 @@
-{*+**********************************************************************************
- * The contents of this file are subject to the vtiger CRM Public License Version 1.1
- * ("License"); You may not use this file except in compliance with the License
- * The Original Code is: vtiger CRM Open Source
- * The Initial Developer of the Original Code is vtiger.
- * Portions created by vtiger are Copyright (C) vtiger.
- * All Rights Reserved.
- ************************************************************************************}
-{* modules/PurchaseOrder/views/ProductsPopupAjax.php *}
-
-{* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *}
-<DIV>TEMPLATE: layout/modules/PurchaseOrder/PopupContents.tpl</DIV>
diff --git a/layouts/v7/modules/PurchaseOrder/uitypes/Text.tpl b/layouts/v7/modules/PurchaseOrder/uitypes/Text.tpl
index ec69b56392a5ac8ebf8736ce29f8873d6b958152..8eb7e244b2ff380e97fd7488079cbd006a014e0e 100644
--- a/layouts/v7/modules/PurchaseOrder/uitypes/Text.tpl
+++ b/layouts/v7/modules/PurchaseOrder/uitypes/Text.tpl
@@ -22,7 +22,7 @@
         >
     {$FIELD_MODEL->get('fieldvalue')}</textarea>
 {else}
-    {if $REQ.view neq 'Detail'} 
+    {if $REQ->get('view') neq 'Detail'} 
     {assign var=blockLabel value=$RECORD_STRUCTURE['LBL_PO_INFORMATION']}
     {assign var=fieldModel value=$blockLabel['accountid']}
 	{$pickList = ['' => 'LBL_SELECT_ADDRESS_OPTION', 'company'=> 'LBL_COMPANY_ADDRESS',
diff --git a/layouts/v7/modules/Settings/ExtensionStore/Detail.tpl b/layouts/v7/modules/Settings/ExtensionStore/Detail.tpl
index 5633fd154a6dfb6fc33443ece5ac451bc3a68cfb..aeaa362f25dcc116c978faca8ede6c2f3f21040a 100644
--- a/layouts/v7/modules/Settings/ExtensionStore/Detail.tpl
+++ b/layouts/v7/modules/Settings/ExtensionStore/Detail.tpl
@@ -12,7 +12,7 @@
 {strip}
 	<div class="col-lg-12 col-sm-12 content-area detailViewInfo extensionDetails extensionWidgetContainer" style='margin-top:0px;'>
 		{if !($ERROR)}
-			<input type="hidden" name="mode" value="{$REQ.mode}" />
+			<input type="hidden" name="mode" value="{$REQ->get('mode')}" />
 			<input type="hidden" name="extensionId" value="{$EXTENSION_ID}" />
 			<input type="hidden" name="targetModule" value="{$EXTENSION_DETAIL->get('name')}" />
 			<input type="hidden" name="moduleAction" value="{$MODULE_ACTION}" />
diff --git a/layouts/v7/modules/Settings/Roles/RoleTree.tpl b/layouts/v7/modules/Settings/Roles/RoleTree.tpl
index 4c4840feb03bc08765574e7422e51b824660519c..70001ec24020d4eabd1f6e76ef5cec559a2a2604 100644
--- a/layouts/v7/modules/Settings/Roles/RoleTree.tpl
+++ b/layouts/v7/modules/Settings/Roles/RoleTree.tpl
@@ -11,7 +11,7 @@
 {foreach from=$ROLE->getChildren() item=CHILD_ROLE}
     <li data-role="{$CHILD_ROLE->getParentRoleString()}" data-roleid="{$CHILD_ROLE->getId()}">
         <div class="toolbar-handle">
-            {if $REQ.type == 'Transfer'}
+            {if $REQ->get('type') == 'Transfer'}
                 {assign var="SOURCE_ROLE_SUBPATTERN" value='::'|cat:$SOURCE_ROLE->getId()}
                 {if strpos($CHILD_ROLE->getParentRoleString(), $SOURCE_ROLE_SUBPATTERN) !== false}
                     <a style="white-space: nowrap" data-url="{$CHILD_ROLE->getEditViewUrl()}" class="btn btn-default" disabled data-toggle="tooltip" data-placement="top" ><span class="muted">{$CHILD_ROLE->getName()}</span></a>
@@ -21,7 +21,7 @@
             {else}
                 <a style="white-space: nowrap" href="{$CHILD_ROLE->getEditViewUrl()}" data-url="{$CHILD_ROLE->getEditViewUrl()}" class="btn btn-default draggable droppable" data-toggle="tooltip" data-placement="top" data-animation="true" title="{vtranslate('LBL_CLICK_TO_EDIT_OR_DRAG_TO_MOVE',$QUALIFIED_MODULE)}">{$CHILD_ROLE->getName()}</a>
             {/if}
-            {if $REQ.view != 'Popup'}
+            {if $REQ->get('view') != 'Popup'}
                 <div class="toolbar">
                     &nbsp;<a href="{$CHILD_ROLE->getCreateChildUrl()}" data-url="{$CHILD_ROLE->getCreateChildUrl()}" title="{vtranslate('LBL_ADD_RECORD', $QUALIFIED_MODULE)}"><span class="fa fa-plus-circle"></span></a>
                     &nbsp;<a data-id="{$CHILD_ROLE->getId()}" href="javascript:;" data-url="{$CHILD_ROLE->getDeleteActionUrl()}" data-action="modal" title="{vtranslate('LBL_DELETE', $QUALIFIED_MODULE)}"><span class="fa fa-trash"></span></a>
diff --git a/layouts/v7/modules/Settings/Vtiger/ModuleHeader.tpl b/layouts/v7/modules/Settings/Vtiger/ModuleHeader.tpl
index c55813585e5d6924eab3a2f0a7937bbe6c40dc1c..7b66072dd814057890cb6d36c64c15c0df2ebd9f 100644
--- a/layouts/v7/modules/Settings/Vtiger/ModuleHeader.tpl
+++ b/layouts/v7/modules/Settings/Vtiger/ModuleHeader.tpl
@@ -19,7 +19,7 @@
 					</a>
 					&nbsp;<span class="fa fa-angle-right pull-left {if $VIEW eq 'Index' && $MODULE eq 'Vtiger'} hide {/if}" aria-hidden="true" style="padding-top: 12px;padding-left: 5px; padding-right: 5px;"></span>
 				{/if}
-				{if $MODULE neq 'Vtiger' or $REQ.view neq 'Index'}
+				{if $MODULE neq 'Vtiger' or $REQ->get('view') neq 'Index'}
 					{if $ACTIVE_BLOCK['block']}
 						<span class="current-filter-name filter-name pull-left">
 							{vtranslate($ACTIVE_BLOCK['block'], $QUALIFIED_MODULE)}&nbsp;
@@ -35,13 +35,13 @@
 								{assign var=URL value=$MODULE_MODEL->getDefaultUrl()}
 							{/if}
 							{if $URL|strpos:'parent' eq ''}
-								{assign var=URL value=$URL|cat:'&parent='|cat:$REQ.parent}
+								{assign var=URL value=$URL|cat:'&parent='|cat:$REQ->get('parent')}
 							{/if}
 						{/if}
 						<span class="current-filter-name settingModuleName filter-name pull-left">
-							{if $REQ.view eq 'Calendar'}
-								{if $REQ.mode eq 'Edit'}
-									<a href="{"index.php?module="|cat:$REQ.module|cat:'&parent='|cat:$REQ.parent|cat:'&view='|cat:$REQ.view}">
+							{if $REQ->get('view') eq 'Calendar'}
+								{if $REQ->get('view') eq 'Edit'}
+									<a href="{"index.php?module="|cat:$REQ->get('module')|cat:'&parent='|cat:$REQ->get('parent')|cat:'&view='|cat:$REQ->get('view')}">
 										{vtranslate({$PAGETITLE}, $QUALIFIED_MODULE)}
 									</a>&nbsp;
                                                                         <a href="">
@@ -51,22 +51,22 @@
 								{else}
                                                                     <a href="">{vtranslate({$PAGETITLE}, $QUALIFIED_MODULE)}&nbsp;<span class="fa fa-angle-right" aria-hidden="true"></span>&nbsp;{$USER_MODEL->getName()}</a>
 								{/if}
-							{else if $REQ.view neq 'List' and $REQ.module eq 'Users'}
-								{if $REQ.view eq 'PreferenceEdit'}
-									<a href="{"index.php?module="|cat:$REQ.module|cat:'&parent='|cat:$REQ.parent|cat:'&view=PreferenceDetail&record='|cat:$REQ.record}">
+							{else if $REQ->get('view') neq 'List' and $REQ->get('module') eq 'Users'}
+								{if $REQ->get('view') eq 'PreferenceEdit'}
+									<a href="{"index.php?module="|cat:$REQ->get('module')|cat:'&parent='|cat:$REQ->get('parent')|cat:'&view=PreferenceDetail&record='|cat:$REQ->get('record')}">
 										{vtranslate($ACTIVE_BLOCK['block'], $QUALIFIED_MODULE)}&nbsp;
 									</a>
                                                                         <a href="">
                                                                             <span class="fa fa-angle-right" aria-hidden="true"></span>&nbsp;
                                                                             {vtranslate('LBL_EDITING', $MODULE)} :&nbsp;{$USER_MODEL->getName()}
                                                                         </a>
-								{else if $REQ.view eq 'Edit' or $REQ.view eq 'Detail'}
+								{else if $REQ->get('view') eq 'Edit' or $REQ->get('view') eq 'Detail'}
 									<a href="{$URL}">
-									{if $REQ.extensionModule}{$REQ.extensionModule}{else}{vtranslate({$PAGETITLE}, $QUALIFIED_MODULE)}{/if}&nbsp;
+									{if $REQ->get('extensionModule')}{$REQ->get('extensionModule')}{else}{vtranslate({$PAGETITLE}, $QUALIFIED_MODULE)}{/if}&nbsp;
 									</a>
                                                                         <a href="">
                                                                             <span class="fa fa-angle-right" aria-hidden="true"></span>&nbsp;
-                                                                            {if $REQ.view eq 'Edit'}
+                                                                            {if $REQ->get('view') eq 'Edit'}
                                                                                     {if $RECORD}
                                                                                             {vtranslate('LBL_EDITING', $MODULE)} :&nbsp;{$RECORD->getName()}
                                                                                     {else}
@@ -79,10 +79,10 @@
 								{else}
                                                                     <a href="">{$USER_MODEL->getName()}</a>
 								{/if}
-							{else if $URL and $URL|strpos:$REQ.view eq ''}
+							{else if $URL and $URL|strpos:$REQ->get('view') eq ''}
 								<a href="{$URL}">
-								{if $REQ.extensionModule}
-									{$REQ.extensionModule}
+								{if $REQ->get('extensionModule')}
+									{$REQ->get('extensionModule')}
 								{else}
 									{vtranslate({$PAGETITLE}, $QUALIFIED_MODULE)}
 								{/if}
@@ -90,20 +90,20 @@
                                                                 <a href="">
                                                                     <span class="fa fa-angle-right" aria-hidden="true"></span>&nbsp;
                                                                     {if $RECORD}
-                                                                            {if $REQ.view eq 'Edit'}
+                                                                            {if $REQ->get('view') eq 'Edit'}
                                                                                     {vtranslate('LBL_EDITING', $MODULE)} :&nbsp;
                                                                             {/if}
                                                                             {$RECORD->getName()}
                                                                     {/if}
                                                                 </a>
 							{else}
-								&nbsp;{if $REQ.extensionModule}{$REQ.extensionModule}{else}{vtranslate({$PAGETITLE}, $QUALIFIED_MODULE)}{/if}
+								&nbsp;{if $REQ->get('extensionModule')}{$REQ->get('extensionModule')}{else}{vtranslate({$PAGETITLE}, $QUALIFIED_MODULE)}{/if}
 							{/if}
 						</span>
 					{else}
-						{if $REQ.view eq 'TaxIndex'}
+						{if $REQ->get('view') eq 'TaxIndex'}
 							{assign var=SELECTED_MODULE value='LBL_TAX_MANAGEMENT'}
-						{elseif $REQ.view eq 'TermsAndConditionsEdit'}
+						{elseif $REQ->get('view') eq 'TermsAndConditionsEdit'}
 							{assign var=SELECTED_MODULE value='LBL_TERMS_AND_CONDITIONS'}
 						{else}
 							{assign var=SELECTED_MODULE value=$ACTIVE_BLOCK['menu']}
diff --git a/layouts/v7/modules/Vtiger/DetailViewHeaderFieldsView.tpl b/layouts/v7/modules/Vtiger/DetailViewHeaderFieldsView.tpl
index 8b9bb72543ca23f0590127b3001f4e3e8437df96..6c7a587801e120cba58ea52d684bf75b797dcc79 100644
--- a/layouts/v7/modules/Vtiger/DetailViewHeaderFieldsView.tpl
+++ b/layouts/v7/modules/Vtiger/DetailViewHeaderFieldsView.tpl
@@ -21,7 +21,7 @@
                     <span class="{$FIELD_NAME} value" title="{vtranslate($FIELD_MODEL->get('label'),$MODULE)} : {strip_tags($DISPLAY_VALUE)}">
                         {include file=$FIELD_MODEL->getUITypeModel()->getDetailViewTemplateName()|@vtemplate_path:$MODULE_NAME FIELD_MODEL=$FIELD_MODEL MODULE=$MODULE_NAME RECORD=$RECORD}
                     </span>
-                    {if $FIELD_MODEL->isEditable() eq 'true' && $LIST_PREVIEW neq 'true' && $IS_AJAX_ENABLED eq 'true'}
+                    {if $FIELD_MODEL->isEditable() eq 'true' AND (isset($LIST_PREVIEW) AND $LIST_PREVIEW neq 'true') && $IS_AJAX_ENABLED eq 'true'}
                         <span class="hide edit">
                             {if $FIELD_DATA_TYPE eq 'multipicklist'}
                                 <input type="hidden" class="fieldBasicData" data-name='{$FIELD_MODEL->get('name')}[]' data-type="{$FIELD_MODEL->getFieldDataType()}" data-displayvalue='{Vtiger_Util_Helper::toSafeHTML($FIELD_MODEL->getDisplayValue($FIELD_MODEL->get('fieldvalue')))}' data-value="{$FIELD_MODEL->get('fieldvalue')}" />
diff --git a/layouts/v7/modules/Vtiger/ModuleHeader.tpl b/layouts/v7/modules/Vtiger/ModuleHeader.tpl
index 612d24d2256f32b18ffc9cf6686458e4a9d2267d..db376c64639eae959b5954687edb80e0eb591ece 100644
--- a/layouts/v7/modules/Vtiger/ModuleHeader.tpl
+++ b/layouts/v7/modules/Vtiger/ModuleHeader.tpl
@@ -10,7 +10,7 @@
 {strip}
 	<div class="col-sm-11 col-xs-10 padding0 module-action-bar clearfix coloredBorderTop">
 		<div class="module-action-content clearfix {$MODULE}-module-action-content">
-			<div class="col-lg-7 col-md-6 col-sm-5 col-xs-11 padding0 module-breadcrumb module-breadcrumb-{$REQ.view} transitionsAllHalfSecond">
+			<div class="col-lg-7 col-md-6 col-sm-5 col-xs-11 padding0 module-breadcrumb module-breadcrumb-{$REQ->get('view')} transitionsAllHalfSecond">
 				{assign var=MODULE_MODEL value=Vtiger_Module_Model::getInstance($MODULE)}
 				{if $MODULE_MODEL->getDefaultViewName() neq 'List'}
 					{assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getDefaultUrl()}
@@ -39,12 +39,12 @@
 					<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 isset($RECORD) && $RECORD and $REQ.view eq 'Edit'}
+				{if isset($RECORD) && $RECORD and $REQ->get('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 $REQ.view eq 'Edit'}
+				{else if $REQ->get('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>
 				{/if}
-				{if $REQ.view eq 'Detail'}
+				{if $REQ->get('view') eq 'Detail'}
 					<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;{$RECORD->get('label')} &nbsp;&nbsp;</a></p>
 				{/if}
 			</div>
diff --git a/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl b/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl
index 3af312231581228817b790c700f5eca2b55a3dc0..eb103a24c3c872ef279db739d0fc0c4c03052a09 100644
--- a/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl
+++ b/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl
@@ -59,14 +59,14 @@
                                                                     &nbsp;<span class="numberCircle hide">0</span>
                                                             </a>
                                                     </li>
-                                                    {if ($RELATED_LINK->getId() == {$REQ.relationId})}
+                                                    {if ($RELATED_LINK->getId() == {$REQ->get('relationId')})}
                                                             {assign var=MORE_TAB_ACTIVE value='true'}
                                                     {/if}
                                             {/for}
                                             {if $MORE_TAB_ACTIVE neq 'true'}
                                                     {for $i = 0 to $COUNT-1}
                                                             {assign var=RELATED_LINK value=$RELATEDTABS[$i]}
-                                                            {if ($RELATED_LINK->getId() == {$REQ.relationId})}
+                                                            {if ($RELATED_LINK->getId() == {$REQ->get('relationId')})}
                                                                     {assign var=RELATEDMODULENAME value=$RELATED_LINK->getRelatedModuleName()}
                                                                     {assign var=RELATEDFIELDNAME value=$RELATED_LINK->get('linkFieldName')}
                                                                     {assign var="DETAILVIEWRELATEDLINKLBL" value= vtranslate($RELATED_LINK->getLabel(),$RELATEDMODULENAME)}
diff --git a/layouts/v7/modules/Vtiger/dashboards/CalendarActivitiesContents.tpl b/layouts/v7/modules/Vtiger/dashboards/CalendarActivitiesContents.tpl
index 084c5a90c93f83e7f64de520a65445ef4b14250b..bffa8010df8b3ef7f8f00a6ff2a2896bb8741bd6 100644
--- a/layouts/v7/modules/Vtiger/dashboards/CalendarActivitiesContents.tpl
+++ b/layouts/v7/modules/Vtiger/dashboards/CalendarActivitiesContents.tpl
@@ -39,7 +39,7 @@
 	{foreachelse}
 		{if $PAGING->get('nextPageExists') neq 'true'}
 			<div class="noDataMsg">
-				{if $REQ.name eq 'OverdueActivities'}
+				{if $REQ->get('name') eq 'OverdueActivities'}
 					{vtranslate('LBL_NO_OVERDUE_ACTIVITIES', $MODULE_NAME)}
 				{else}
 					{vtranslate('LBL_NO_SCHEDULED_ACTIVITIES', $MODULE_NAME)}
diff --git a/layouts/v7/modules/Vtiger/resources/Popup.js b/layouts/v7/modules/Vtiger/resources/Popup.js
index 62387f416e3df2c1306c7c733dfcf98e17778e79..0e7cf4b5576f6f1776728c0d52b3ea8e7818a9ca 100644
--- a/layouts/v7/modules/Vtiger/resources/Popup.js
+++ b/layouts/v7/modules/Vtiger/resources/Popup.js
@@ -531,6 +531,7 @@ jQuery.Class("Vtiger_Popup_Js",{
             jQuery('#searchvalue').val("");
             jQuery('#totalPageCount').text("");
 			thisInstance.searchHandler().then(function(data){
+                                thisInstance.writeSelectedIds(new Array());
 				jQuery('#pageNumber').val(1);
 				jQuery('#pageToJump').val(1);
 				thisInstance.updatePagination();
diff --git a/layouts/v7/modules/Vtiger/resources/Vtiger.js b/layouts/v7/modules/Vtiger/resources/Vtiger.js
index 1362ba065ea04b2208e3d5ad1689c3f87c63974d..2056278a69126f995b647bc308cf8399f24f4eb5 100644
--- a/layouts/v7/modules/Vtiger/resources/Vtiger.js
+++ b/layouts/v7/modules/Vtiger/resources/Vtiger.js
@@ -402,7 +402,7 @@ Vtiger.Class('Vtiger_Index_Js', {
 	},
 	registerEventForTaskManagement : function(){
 		var globalNav = jQuery('.global-nav');
-		globalNav.on("click",".taskManagement",function(e){
+		globalNav.find(".taskManagement").on("click",function(e){
 			if(jQuery("#taskManagementContainer").length > 0){
 				app.helper.hidePageOverlay();
 				return false;
diff --git a/layouts/v7/modules/Vtiger/uitypes/Currency.tpl b/layouts/v7/modules/Vtiger/uitypes/Currency.tpl
index 56a7f7bd1e6e1796ce129c87238a9503808e519a..6fde653c42fdcce6b4ca6f5efaa32e98bec26f65 100644
--- a/layouts/v7/modules/Vtiger/uitypes/Currency.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/Currency.tpl
@@ -41,7 +41,7 @@
           <input type="hidden" name="cur_{$BASE_CURRENCY_ID}_check" value="on">
           <input type="hidden" id="requstedUnitPrice" name="{$BASE_CURRENCY_NAME}" value="">
 	</div>
-    {if $REQ.view eq 'Edit'}
+    {if $REQ->get('view') eq 'Edit'}
     <div class="clearfix">
         <a id="moreCurrencies" class="span cursorPointer">{vtranslate('LBL_MORE_CURRENCIES', $MODULE)}>></a>
         <span id="moreCurrenciesContainer" class="hide"></span>
diff --git a/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl b/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl
index 32eaa5a2d430e37f5766daab94506c9f5b387b7f..593d83b42d6f3ca66ff1462f0208d80dd3251345 100644
--- a/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl
@@ -16,7 +16,7 @@
 	{assign var=PICKLIST_VALUES value=$FIELD_INFO['editablepicklistvalues']}
 	{assign var=PICKLIST_COLORS value=$FIELD_INFO['picklistColors']}
 	<input type="hidden" name="{$FIELD_MODEL->getFieldName()}" value=""  data-fieldtype="multipicklist"/>
-	<select id="{$MODULE}_{$REQ.view}_fieldName_{$FIELD_MODEL->getFieldName()}" multiple class="select2" name="{$FIELD_MODEL->getFieldName()}[]" data-fieldtype="multipicklist" style='width:210px;height:30px;' 
+	<select id="{$MODULE}_{$REQ->get('view')}_fieldName_{$FIELD_MODEL->getFieldName()}" multiple class="select2" name="{$FIELD_MODEL->getFieldName()}[]" data-fieldtype="multipicklist" style='width:210px;height:30px;' 
 			{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/Recurrence.tpl b/layouts/v7/modules/Vtiger/uitypes/Recurrence.tpl
index a86870e07fde3a5576e5c1fceee8105b28168792..490748ea85583a962a270fcb3bd91f4dc5ae68b5 100644
--- a/layouts/v7/modules/Vtiger/uitypes/Recurrence.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/Recurrence.tpl
@@ -13,7 +13,7 @@
     {assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()}
 	<div class="row">
 		<div class="col-sm-1">
-			{if $RECURRING_INFORMATION['recurringcheck'] eq 'Yes' && !$REQ.isDuplicate}
+			{if $RECURRING_INFORMATION['recurringcheck'] eq 'Yes' && !$REQ->get('isDuplicate')}
 				<input type="hidden" class="recurringEdit" value="true" />
 			{/if}
 			<input type="checkbox" name="recurringcheck" data-field-id= '{$FIELD_MODEL->get('id')}' value="" {if $RECURRING_INFORMATION['recurringcheck'] eq 'Yes'}checked{/if}/>&nbsp;&nbsp;
diff --git a/layouts/v7/modules/Vtiger/uitypes/Reference.tpl b/layouts/v7/modules/Vtiger/uitypes/Reference.tpl
index 31f94a24d96f2d8a35bf1f6be71d508590e3d49a..e18d1517df15cc196f7b0163c7886c1518dfaede 100644
--- a/layouts/v7/modules/Vtiger/uitypes/Reference.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/Reference.tpl
@@ -41,17 +41,17 @@
             class="marginLeftZero autoComplete inputElement" 
             value="{$FIELD_MODEL->getEditViewDisplayValue($displayId)}" 
             placeholder="{vtranslate('LBL_TYPE_SEARCH',$MODULE)}"
-            {if $displayId neq 0}disabled="disabled"{/if}  
+            {if !empty($displayId)}disabled="disabled"{/if}  
             {if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" data-rule-reference_required="true" {/if}
             {if php7_count($FIELD_INFO['validator'])} 
                 data-specific-rules='{ZEND_JSON::encode($FIELD_INFO["validator"])}'
             {/if}
             />
-        <a href="#" class="clearReferenceSelection {if $FIELD_VALUE eq 0}hide{/if}"> x </a>
+        <a href="#" class="clearReferenceSelection {if empty($FIELD_VALUE) || $FIELD_VALUE lte 0}hide{/if}"> x </a>
             <span class="input-group-addon relatedPopup cursorPointer" title="{vtranslate('LBL_SELECT', $MODULE)}">
                 <i id="{$MODULE}_editView_fieldName_{$FIELD_NAME}_select" class="fa fa-search"></i>
             </span>
-        {if (($REQ.view eq 'Edit') or ($MODULE_NAME eq 'Webforms')) && !in_array($REFERENCE_LIST[0],$QUICKCREATE_RESTRICTED_MODULES)}
+        {if (($REQ->get('view') eq 'Edit') or ($MODULE_NAME eq 'Webforms')) && !in_array($REFERENCE_LIST[0],$QUICKCREATE_RESTRICTED_MODULES)}
             <span class="input-group-addon createReferenceRecord cursorPointer clearfix" title="{vtranslate('LBL_CREATE', $MODULE)}">
             <i id="{$MODULE}_editView_fieldName_{$FIELD_NAME}_create" class="fa fa-plus"></i>
         </span>
diff --git a/modules/Calendar/RepeatEvents.php b/modules/Calendar/RepeatEvents.php
index 93898a03fcbb6ba6f00b5ecd4ea7c13e402a6500..4219cc9a4edba0b6f078d864a33476a3edaf0d55 100644
--- a/modules/Calendar/RepeatEvents.php
+++ b/modules/Calendar/RepeatEvents.php
@@ -22,8 +22,8 @@ class Calendar_RepeatEvents {
 	 */
 	static function mktime($fulldateString) {
 		$splitpart = self::splittime($fulldateString);
-		$datepart = split('-', $splitpart[0]);
-		$timepart = split(':', $splitpart[1]);
+		$datepart = explode('-', $splitpart[0]);
+		$timepart = explode(':', $splitpart[1]);
 		return mktime($timepart[0], $timepart[1], 0, $datepart[1], $datepart[2], $datepart[0]);
 	}
 	/**
@@ -57,7 +57,7 @@ class Calendar_RepeatEvents {
 	 * Split full timing into date and time part.
 	 */
 	static function splittime($fulltiming) {
-		return split(' ', $fulltiming);
+		return explode(' ', $fulltiming);
 	}
 	/**
 	 * Calculate the time interval to create repeated event entries.
diff --git a/modules/Calendar/actions/ExportData.php b/modules/Calendar/actions/ExportData.php
index 9c60834c097c39f7e7c08555716342ca53b2284c..b0c45916befafa0e7f8cf1a17778ad47776a0cd5 100644
--- a/modules/Calendar/actions/ExportData.php
+++ b/modules/Calendar/actions/ExportData.php
@@ -80,7 +80,7 @@ class Calendar_ExportData_Action extends Vtiger_ExportData_Action {
 		header("Content-Disposition: attachment; filename={$fileName}.ics");
 
 		$timeZone = new iCalendar_timezone;
-		$timeZoneId = split('/', date_default_timezone_get());
+		$timeZoneId = explode('/', date_default_timezone_get());
 
 		if(!empty($timeZoneId[1])) {
 			$zoneId = $timeZoneId[1];
diff --git a/modules/Calendar/actions/Feed.php b/modules/Calendar/actions/Feed.php
index 994c61ecbba36286666d9df782a0180c6e7e3e4a..0f7d07193861c725f8d40e471a055bcaa9473462 100644
--- a/modules/Calendar/actions/Feed.php
+++ b/modules/Calendar/actions/Feed.php
@@ -130,8 +130,8 @@ class Calendar_Feed_Action extends Vtiger_BasicAjax_Action {
 			}
 		} else {
 			if($fieldName == 'birthday') {
-				$startDateComponents = split('-', $start);
-				$endDateComponents = split('-', $end);
+				$startDateComponents = explode('-', $start);
+				$endDateComponents = explode('-', $end);
 
 				$year = $startDateComponents[0];
 				$db = PearDatabase::getInstance();
diff --git a/modules/Calendar/actions/FetchAgendaEvents.php b/modules/Calendar/actions/FetchAgendaEvents.php
index 0d5b00aaac516aed8d577eda6e0e3ec07afbf972..95fe93d6fbb903b4cde7769501b438c5583495d7 100644
--- a/modules/Calendar/actions/FetchAgendaEvents.php
+++ b/modules/Calendar/actions/FetchAgendaEvents.php
@@ -37,7 +37,7 @@ class Calendar_FetchAgendaEvents_Action extends Vtiger_BasicAjax_Action {
 		if ($hideCompleted) {
 			$query.= "vtiger_activity.eventstatus != 'HELD' AND ";
 		}
-		$query.= " (concat(date_start,'',time_start)) >= ? AND (concat(date_start,'',time_start)) < ?";
+		$query.= " (concat(date_start,' ',time_start)) >= ? AND (concat(date_start,' ',time_start)) < ?";
        
 		$params = array($dbStartDateTime, $dbEndDateTime);
 
diff --git a/modules/Calendar/iCalExport.php b/modules/Calendar/iCalExport.php
index 47eb1c9d10a3d4d3641e165fd0e4539450478588..1178db0d51bebef08d23463fbb1087aa2222a9e9 100644
--- a/modules/Calendar/iCalExport.php
+++ b/modules/Calendar/iCalExport.php
@@ -57,10 +57,10 @@ foreach($event_fields as $key=>$val){
 
 $tz = new iCalendar_timezone;
 if(!empty($default_timezone)){
-	$tzid = split('/',$default_timezone);
+	$tzid = explode('/', $default_timezone);
 } else {
 	$default_timezone = date_default_timezone_get();
-	$tzid = split('/',$default_timezone);
+	$tzid = explode('/', $default_timezone);
 }
 
 if(!empty($tzid[1])){
diff --git a/modules/Documents/Documents.php b/modules/Documents/Documents.php
index 646781b37f5fcfc2580d034d268bd2e1071e3e2b..d5ddd791404caaca700feaaa58c2249c27cd04b3 100644
--- a/modules/Documents/Documents.php
+++ b/modules/Documents/Documents.php
@@ -521,7 +521,7 @@ class Documents extends CRMEntity {
 
 	function getQueryByModuleField($module, $fieldname, $srcrecord, $query) {
 		if($module == "MailManager") {
-			$tempQuery = split('WHERE', $query);
+			$tempQuery = explode('WHERE', $query);
 			if(!empty($tempQuery[1])) {
 				$where = " vtiger_notes.filelocationtype = 'I' AND vtiger_notes.filename != '' AND vtiger_notes.filestatus != 0 AND ";
 				$query = $tempQuery[0].' WHERE '.$where.$tempQuery[1];
diff --git a/modules/Documents/models/Record.php b/modules/Documents/models/Record.php
index 84b46ce7a68112990c88bd1906cbd6e6a8b75a0b..58080280cce843502823b933b21cac4f1c6d32af 100644
--- a/modules/Documents/models/Record.php
+++ b/modules/Documents/models/Record.php
@@ -21,7 +21,7 @@ class Documents_Record_Model extends Vtiger_Record_Model {
 	function getDownloadFileURL($attachmentId = false) {
 		if ($this->get('filelocationtype') == 'I') {
 			$fileDetails = $this->getFileDetails();
-			return 'index.php?module='. $this->getModuleName() .'&action=DownloadFile&record='. $this->getId() .'&fileid='. $fileDetails['attachmentsid'].'&name='. $fileDetails['name'];
+			return 'index.php?module='. $this->getModuleName() .'&action=DownloadFile&record='. $this->getId() .'&fileid='. $fileDetails['attachmentsid'];
 		} else {
 			return $this->get('filename');
 		}
diff --git a/modules/Emails/models/Record.php b/modules/Emails/models/Record.php
index 78e0e39c8419e4ed92e122107872f7d9f54e53a6..82474312663868c543e8ce23d4b503f6fef43ce2 100644
--- a/modules/Emails/models/Record.php
+++ b/modules/Emails/models/Record.php
@@ -57,7 +57,7 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 		$userName = $currentUserModel->getName();
 
 		// To eliminate the empty value of an array
-		$toEmailInfo = array_filter($this->get('toemailinfo'));
+		$toEmailInfo = $this->get('toemailinfo') ? array_filter($this->get('toemailinfo')) : array();
 		$emailsInfo = array();
 		foreach ($toEmailInfo as $id => $emails) {
 			foreach($emails as $key => $value){
@@ -377,7 +377,7 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 		$db = PearDatabase::getInstance();
 		$record = $this->getId();
 
-		$documentIds = array_unique($this->get('documentids'));
+                $documentIds = $this->get('documentids') ? array_unique((array) $this->get('documentids')) : array();
 
 		$count = php7_count($documentIds);
 		for ($i=0; $i<$count; $i++) {
@@ -828,4 +828,4 @@ class Emails_Record_Model extends Vtiger_Record_Model {
 		}
 		return false;
 	}
-}
\ No newline at end of file
+}
diff --git a/modules/HelpDesk/HelpDesk.php b/modules/HelpDesk/HelpDesk.php
index 84d0c413468d247f9ec5849699965b44ba30b097..bc752466b0019d5d413c0cef9c3b7b5de78059a1 100644
--- a/modules/HelpDesk/HelpDesk.php
+++ b/modules/HelpDesk/HelpDesk.php
@@ -282,7 +282,7 @@ class HelpDesk extends CRMEntity {
 		$result=$adb->pquery($query, array($ticketid));
 		$update_log = $adb->query_result($result,0,"update_log");
 
-		$splitval = split('--//--',trim($update_log,'--//--'));
+		$splitval = explode('--//--', trim($update_log, '--//--'));
 
 		$header[] = $adb->query_result($result,0,"title");
 
diff --git a/modules/Inventory/models/Record.php b/modules/Inventory/models/Record.php
index 2b337f9dccb86705aa49c42f368af1f87071e86a..8019e8a075f10375240099bce6816babfbf9b806 100644
--- a/modules/Inventory/models/Record.php
+++ b/modules/Inventory/models/Record.php
@@ -733,7 +733,7 @@ class Inventory_Record_Model extends Vtiger_Record_Model {
 
 			$subQtysList = array();
 			$subProducts = $requestData["subproduct_ids$i"];
-			$subProducts = split(',', rtrim($subProducts, ','));
+			$subProducts = explode(',', rtrim($subProducts, ','));
 
 			foreach ($subProducts as $subProductInfo) {
 				 list($subProductId, $subProductQty) = explode(':', $subProductInfo);
diff --git a/modules/Migration/schema/540_to_600RC.php b/modules/Migration/schema/540_to_600RC.php
index 8151c9fcbd0412f10c19c7f195ec9be6090b2983..96054ff69daa1364d34ebfaecd88810c2b92b899 100644
--- a/modules/Migration/schema/540_to_600RC.php
+++ b/modules/Migration/schema/540_to_600RC.php
@@ -1603,8 +1603,10 @@ foreach($entityModules as $moduleModel) {
 	$crmInstance = CRMEntity::getInstance($moduleModel->getName());
 	$tabId = $moduleModel->getId();
 	$defaultRelatedFields = $crmInstance->list_fields_name;
-	$updateQuery = 'UPDATE vtiger_field SET summaryfield=1  where tabid=? and fieldname IN ('.generateQuestionMarks($defaultRelatedFields).')';
-	Migration_Index_View::ExecuteQuery($updateQuery,  array_merge(array($tabId), array_values($defaultRelatedFields)));
+        if($defaultRelatedFields) {
+            $updateQuery = 'UPDATE vtiger_field SET summaryfield=1  where tabid=? and fieldname IN ('.generateQuestionMarks($defaultRelatedFields).')';
+            Migration_Index_View::ExecuteQuery($updateQuery,  array_merge(array($tabId), array_values($defaultRelatedFields)));
+        }
 }
 
 Migration_Index_View::ExecuteQuery('UPDATE vtiger_currencies SET currency_name = ? where currency_name = ? and currency_code = ?',
diff --git a/modules/PriceBooks/models/RelationListView.php b/modules/PriceBooks/models/RelationListView.php
index 0d0842738618fcb6dc07a9eb6fbbdd069c230edb..5deffde5e578577a819012e124fc0fd50a54a529 100644
--- a/modules/PriceBooks/models/RelationListView.php
+++ b/modules/PriceBooks/models/RelationListView.php
@@ -90,7 +90,7 @@ class PriceBooks_RelationListView_Model extends Vtiger_RelationListView_Model {
                             $queryGenerator->addCondition($fieldName, $searchValue, $comparator, "AND");
                         }
                     }
-                    $whereQuerySplit = split("WHERE", $queryGenerator->getWhereClause());
+                    $whereQuerySplit = explode('WHERE', $queryGenerator->getWhereClause());
                     $query.=" AND " . $whereQuerySplit[1];
                 }
 
diff --git a/modules/Products/models/ListView.php b/modules/Products/models/ListView.php
index 0e3102c42abebabc54b25a08ab74131ac8d08f50..0f31a55e9cd89fa5c3bb3affc54e934ca3f0be9b 100644
--- a/modules/Products/models/ListView.php
+++ b/modules/Products/models/ListView.php
@@ -119,7 +119,7 @@ class Products_ListView_Model extends Vtiger_ListView_Model {
 	public function addSubProductsQuery($listQuery){
 		$productId = $this->get('productId');
 
-		$splitQuery = split('WHERE', $listQuery);
+		$splitQuery = explode('WHERE', $listQuery);
 		$splitQuery[0] .= " LEFT JOIN vtiger_seproductsrel ON vtiger_seproductsrel.crmid = vtiger_products.productid AND vtiger_seproductsrel.setype='Products'";
 		$splitQuery[1] .= " AND vtiger_seproductsrel.productid = $productId AND vtiger_products.discontinued = 1";
 
diff --git a/modules/Reports/AdvancedFilter.php b/modules/Reports/AdvancedFilter.php
index 6234717edf5b111eefe91315f54fc48c46c0f587..67d3b08c433bf9845cf4dfa17eb1f2255bbdfc82 100644
--- a/modules/Reports/AdvancedFilter.php
+++ b/modules/Reports/AdvancedFilter.php
@@ -166,13 +166,13 @@ function getRelatedColumns($selected=""){
 	global $ogReport;
 	$rel_fields = $ogReport->adv_rel_fields;
 	if($selected!='All'){
-		$selected = split(":",$selected);
+		$selected = explode(':', $selected);
 	}
 	$related_fields = array();
 	foreach($rel_fields as $i=>$index){
 		$shtml='';
 		foreach($index as $key=>$value){
-			$fieldarray = split("::",$value);
+			$fieldarray = explode('::', $value);
 			$shtml .= "<option value=\"".$fieldarray[0]."\">".$fieldarray[1]."</option>";
 		}
 		$related_fields[$i] = $shtml;
diff --git a/modules/Reports/CustomReportUtils.php_deprecated b/modules/Reports/CustomReportUtils.php_deprecated
index 930ca14c98d2e011e678c7bf668036c363e493ee..56a5c0c2653bf76f2877027f5d348c0e55cba092 100755
--- a/modules/Reports/CustomReportUtils.php_deprecated
+++ b/modules/Reports/CustomReportUtils.php_deprecated
@@ -33,8 +33,8 @@ Class CustomReportUtils {
 		foreach ($groupBy as $key => $value) {
 			// $groupByConditon = explode(" ",$value);
 			//$groupByNew = explode("'",$groupByConditon[0]);
-			list($tablename, $colname, $module_field, $fieldname, $single) = split(":", $key);
-			list($module, $field) = split("_", $module_field);
+			list($tablename, $colname, $module_field, $fieldname, $single) = explode(':', $key);
+			list($module, $field) = explode('_', $module_field);
 			$fieldDetails = $key;
 			break;
 		}
@@ -53,7 +53,7 @@ Class CustomReportUtils {
 	}
 
 	public static function IsDateField($reportColDetails) {
-		list($tablename, $colname, $module_field, $fieldname, $typeOfData) = split(":", $reportColDetails);
+		list($tablename, $colname, $module_field, $fieldname, $typeOfData) = explode(':', $reportColDetails);
 		if ($typeOfData == "D") {
 			return true;
 		} else {
@@ -62,9 +62,9 @@ Class CustomReportUtils {
 	}
 
 	public static function getAdvanceSearchCondition($fieldDetails, $criteria, $fieldvalue) {
-		list($tablename, $colname, $module_field, $fieldname, $single) = split(":", $fieldDetails);
-		list($module, $field) = split("_", $module_field);
-		list($year, $month, $day) = split("-", $fieldvalue);
+		list($tablename, $colname, $module_field, $fieldname, $single) = explode(':', $fieldDetails);
+		list($module, $field) = explode('_', $module_field);
+		list($year, $month, $day) = explode('-', $fieldvalue);
 		$grteqCondition = 'h';
 		$eqCondition = 'e';
 		$lessCondititon = 'l';
diff --git a/modules/Reports/ReportChartRun.php_deprecated b/modules/Reports/ReportChartRun.php_deprecated
index e31a2e18d1c02928993709c1c0d74b907e722034..fe31c0b0485fb9f5a2c7b490df380a9557e26e47 100755
--- a/modules/Reports/ReportChartRun.php_deprecated
+++ b/modules/Reports/ReportChartRun.php_deprecated
@@ -51,7 +51,7 @@ if($numOfRows > 0) {
 	$primarymodule = $ogReport->primodule;
 	$restrictedmodules = array();
 	if($ogReport->secmodule!='')
-		$rep_modules = split(":",$ogReport->secmodule);
+		$rep_modules = explode(':', $ogReport->secmodule);
 	else
 		$rep_modules = array();
 
@@ -92,8 +92,8 @@ if($numOfRows > 0) {
 				foreach ($groupBy as $key => $value) {
 					//$groupByConditon = explode(" ",$value);
 					//$groupByNew = explode("'",$groupByConditon[0]);
-					list($tablename,$colname,$module_field,$fieldname,$single) = split(":",$key);
-					list($module,$field)= split("_",$module_field);
+					list($tablename, $colname, $module_field, $fieldname, $single) = explode(':', $key);
+					list($module, $field) = explode('_', $module_field);
 					$fieldDetails = $key;
 					break;
 				}
diff --git a/modules/Reports/ReportRun.php b/modules/Reports/ReportRun.php
index fdfc03eb2204f6def7e78550dbe8a3dbefa2c0a0..c8842d54e41f3ba845c882928b4dfe42bd4812fa 100644
--- a/modules/Reports/ReportRun.php
+++ b/modules/Reports/ReportRun.php
@@ -377,8 +377,8 @@ class ReportRun extends CRMEntity {
 		while ($columnslistrow = $adb->fetch_array($result)) {
 			$fieldname = "";
 			$fieldcolname = $columnslistrow["columnname"];
-			list($tablename, $colname, $module_field, $fieldname, $single) = split(":", $fieldcolname);
-			list($module, $field) = split("_", $module_field, 2);
+			list($tablename, $colname, $module_field, $fieldname, $single) = explode(':', $fieldcolname);
+			list($module, $field) = explode('_', $module_field, 2);
             $selectedModuleFields[$module][] = $fieldname;
 			$inventory_fields = array('serviceid');
 			$inventory_modules = getInventoryModules();
@@ -486,7 +486,7 @@ class ReportRun extends CRMEntity {
 		global $adb;
 		$header_label = $selectedfields[2] = addslashes($selectedfields[2]); // Header label to be displayed in the reports table
 
-		list($module, $field) = split("_", $selectedfields[2]);
+		list($module, $field) = explode('_', $selectedfields[2]);
 		$concatSql = getSqlForNameInDisplayFormat(array('first_name' => $selectedfields[0] . ".first_name", 'last_name' => $selectedfields[0] . ".last_name"), 'Users');
 		$emailTableName = "vtiger_activity";
 		if ($module != $this->primarymodule) {
@@ -527,7 +527,7 @@ class ReportRun extends CRMEntity {
 				$this->queryPlanner->addTable($selectedfields[0] .'tmp'. $module);
 			}
 		} else if ($selectedfields[4] == 'C') {
-			$field_label_data = split("_", $selectedfields[2]);
+			$field_label_data = explode('_', $selectedfields[2]);
 			$module = $field_label_data[0];
 			if ($module != $this->primarymodule) {
 				$columnSQL = "case when (" . $selectedfields[0] . "." . $selectedfields[1] . "='1')then 'yes' else case when (vtiger_crmentity$module.crmid !='') then 'no' else '-' end end AS '" . decode_html($selectedfields[2]) . "'";
@@ -905,7 +905,7 @@ class ReportRun extends CRMEntity {
 				$this->queryPlanner->addTable($secondary->table_name);
 			}
 		}
-		$field = split('#', $field);
+		$field = explode('#', $field);
 		$module = $field[0];
 		$fieldname = trim($field[1]);
 		$tabid = getTabId($module);
@@ -1974,7 +1974,7 @@ class ReportRun extends CRMEntity {
 		$inventoryModules = getInventoryModules();
 		while ($reportsortrow = $adb->fetch_array($result)) {
 			$fieldcolname = $reportsortrow["columnname"];
-			list($tablename, $colname, $module_field, $fieldname, $single) = split(":", $fieldcolname);
+			list($tablename, $colname, $module_field, $fieldname, $single) = explode(':', $fieldcolname);
 			$sortorder = $reportsortrow["sortorder"];
 
 			if ($sortorder == "Ascending") {
@@ -2016,7 +2016,7 @@ class ReportRun extends CRMEntity {
 					$sqlvalue = $module_field . ' ' . $sortorder;
 				}
 				$grouplist[$fieldcolname] = $sqlvalue;
-				$temp = split("_", $selectedfields[2], 2);
+				$temp = explode('_', $selectedfields[2], 2);
 				$module = $temp[0];
 				if (in_array($module, $inventoryModules) && $fieldname == 'serviceid') {
 					$grouplist[$fieldcolname] = $sqlvalue;
@@ -3062,7 +3062,7 @@ class ReportRun extends CRMEntity {
 		$modules_selected = array();
 		$modules_selected[] = $this->primarymodule;
 		if (!empty($this->secondarymodule)) {
-			$sec_modules = split(":", $this->secondarymodule);
+			$sec_modules = explode(':', $this->secondarymodule);
 			for ($i = 0; $i < php7_count($sec_modules); $i++) {
 				$modules_selected[] = $sec_modules[$i];
 			}
@@ -3695,7 +3695,7 @@ class ReportRun extends CRMEntity {
 				$groupslist = $this->getGroupingList($this->reportid);
 				foreach ($groupslist as $reportFieldName => $reportFieldValue) {
 					$nameParts = explode(":", $reportFieldName);
-					list($groupFieldModuleName, $groupFieldName) = split("_", $nameParts[2], 2);
+					list($groupFieldModuleName, $groupFieldName) = explode('_', $nameParts[2], 2);
 					$groupByFieldNames[] = vtranslate(str_replace('_', ' ', $groupFieldName), $groupFieldModuleName);
 				}
 				if (php7_count($groupByFieldNames) > 0) {
@@ -3973,7 +3973,7 @@ class ReportRun extends CRMEntity {
 				if (CheckColumnPermission($field_tablename, $field_columnname, $premod) != "false") {
 					$field_permitted = true;
 				} else {
-					$mod = split(":", $secmod);
+					$mod = explode(':', $secmod);
 					foreach ($mod as $key) {
 						if (CheckColumnPermission($field_tablename, $field_columnname, $key) != "false") {
 							$field_permitted = true;
@@ -3982,7 +3982,7 @@ class ReportRun extends CRMEntity {
 				}
 
 				//Calculation fields of "Events" module should show in Calendar related report
-				$secondaryModules = split(":", $secmod);
+				$secondaryModules = explode(':', $secmod);
 				if ($field_permitted === false && ($premod === 'Calendar' || in_array('Calendar', $secondaryModules)) && CheckColumnPermission($field_tablename, $field_columnname, "Events") != "false") {
 					$field_permitted = true;
 				}
@@ -4027,7 +4027,7 @@ class ReportRun extends CRMEntity {
 		} else {
 			$field_tablename = $fieldlist[0];
 			$field_columnname = $fieldlist[1];
-			list($module, $fieldName) = split('_', $fieldlist[2], 2);
+			list($module, $fieldName) = explode('_', $fieldlist[2], 2);
 		}
 
 		$field = $field_tablename . "." . $field_columnname;
@@ -4466,7 +4466,7 @@ class ReportRun extends CRMEntity {
 		$num_rows = $adb->num_rows($groupByTimeRes);
 		for ($i = 0; $i < $num_rows; $i++) {
 			$sortColName = $adb->query_result($groupByTimeRes, $i, 'sortcolname');
-			list($tablename, $colname, $module_field, $fieldname, $single) = split(':', $sortColName);
+			list($tablename, $colname, $module_field, $fieldname, $single) = explode(':', $sortColName);
 			$groupField = $module_field;
 			$groupCriteria = $adb->query_result($groupByTimeRes, $i, 'dategroupbycriteria');
 			if (in_array($groupCriteria, array_keys($this->groupByTimeParent))) {
diff --git a/modules/Reports/ReportUtils.php b/modules/Reports/ReportUtils.php
index e8e35271f61e7151239a107f021c507dfa8e6be6..57f1b15f4e0e41879af63d2d13c1e455bcfb6698 100644
--- a/modules/Reports/ReportUtils.php
+++ b/modules/Reports/ReportUtils.php
@@ -64,7 +64,7 @@ function isReferenceUIType($uitype) {
 }
 
 function IsDateField($reportColDetails) {
-	list($tablename, $colname, $module_field, $fieldname, $typeOfData) = split(":", $reportColDetails);
+	list($tablename, $colname, $module_field, $fieldname, $typeOfData) = explode(':', $reportColDetails);
 	if ($typeOfData == "D") {
 		return true;
 	} else {
diff --git a/modules/Reports/Reports.php b/modules/Reports/Reports.php
index 920f8714d205a86965066e55a8241386bd7f3233..462ad42fff3500b43bfc02468af0e9418b757ddc 100644
--- a/modules/Reports/Reports.php
+++ b/modules/Reports/Reports.php
@@ -1380,7 +1380,7 @@ function getEscapedColumns($selectedfields)
 		$result = $adb->pquery($ssql, array($reportid));
 		$permitted_fields = Array();
 
-		$selected_mod = split(":",$this->secmodule);
+		$selected_mod = explode(':', $this->secmodule);
 		array_push($selected_mod,$this->primodule);
 
 		$inventoryModules = getInventoryModules();
@@ -1397,9 +1397,9 @@ function getEscapedColumns($selectedfields)
 				}
 			}
 			if($selmod_field_disabled==false){
-				list($tablename,$colname,$module_field,$fieldname,$single) = split(":",$fieldcolname);
+				list($tablename, $colname, $module_field, $fieldname, $single) = explode(':', $fieldcolname);
 				require('user_privileges/user_privileges_'.$current_user->id.'.php');
-				list($module,$field) = split("_",$module_field);
+				list($module, $field) = explode('_', $module_field);
 				if(php7_sizeof($permitted_fields) == 0 && $is_admin == false && $profileGlobalPermission[1] == 1 && $profileGlobalPermission[2] == 1)
 				{
 					$permitted_fields = $this->getaccesfield($module);
diff --git a/modules/Reports/actions/Save.php b/modules/Reports/actions/Save.php
index 903df78f7fbaa288b73d9127508bc8e578ad27cc..9d0ef04a8992798934ee312cacf1934d69382cc5 100644
--- a/modules/Reports/actions/Save.php
+++ b/modules/Reports/actions/Save.php
@@ -18,32 +18,13 @@ class Reports_Save_Action extends Vtiger_Save_Action {
 	
 	public function checkPermission(Vtiger_Request $request) {
 		parent::checkPermission($request);
-
-		$record = $request->get('record');
-		if ($record) {
-			$reportModel = Reports_Record_Model::getCleanInstance($record);
-			if (!$reportModel->isEditable()) {
-				throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
-			}
-		}
-
-             	$selectedFields = $request->get('selected_fields');
-		$groupbyfields = $request->get('groupbyfield');
-		$fieldsData = array($selectedFields, $groupbyfields);
-
-		foreach ($fieldsData as $selectedField){
-			foreach ($selectedField as $field) {
-				list($tablename, $colname, $module_field, $fieldname, $single) = split(":", $field);
-				list($module, $fieldName) = split("_", $module_field, 2);
-				$moduleModel = Vtiger_Module_Model::getInstance($module);
-				$fieldModel = Vtiger_Field_Model::getInstance($fieldname, $moduleModel);
-
-				if (($fieldModel->table !== $tablename) || ($fieldModel->column !== $colname)) {
-					throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
-				}
-			}
-		}  
-		return true;
+                
+                $modulename = $request->getModule();
+                $modulemodel = Reports_Module_Model::getInstance($modulename);
+                $currentUserPrivileges = Users_Privileges_Model::getCurrentUserPrivilegesModel();
+                if(!$currentUserPrivileges->hasModulePermission($modulemodel->getId())) {
+                    throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
+                }
 	}
 
 	public function process(Vtiger_Request $request) {
diff --git a/modules/Reports/dashboards/ChartReportWidget.php b/modules/Reports/dashboards/ChartReportWidget.php
index 766f650e7a1502b0c6e4c6ec6a6a08ae32b00dca..13e776d178646653598c0a2016a4218ee3a8476e 100644
--- a/modules/Reports/dashboards/ChartReportWidget.php
+++ b/modules/Reports/dashboards/ChartReportWidget.php
@@ -49,8 +49,8 @@ class Reports_ChartReportWidget_Dashboard extends Vtiger_IndexAjax_View {
 		$isPercentExist = false;
 		$selectedDataFields = $reportChartModel->get('datafields');
 		foreach ($selectedDataFields as $dataField) {
-			list($tableName, $columnName, $moduleField, $fieldName, $single) = split(':', $dataField);
-			list($relModuleName, $fieldLabel) = split('_', $moduleField);
+			list($tableName, $columnName, $moduleField, $fieldName, $single) = explode(':', $dataField);
+			list($relModuleName, $fieldLabel) = explode('_', $moduleField);
 			$relModuleModel = Vtiger_Module_Model::getInstance($relModuleName);
 			$fieldModel = Vtiger_Field_Model::getInstance($fieldName, $relModuleModel);
 			if ($fieldModel && $fieldModel->getFieldDataType() != 'currency') {
diff --git a/modules/Reports/models/Chart.php b/modules/Reports/models/Chart.php
index b6b2b64cf83a9e9c37f5abf5ea5d7722b916c182..10fbb99877103ad0386ddbae6bd55e026d358535 100644
--- a/modules/Reports/models/Chart.php
+++ b/modules/Reports/models/Chart.php
@@ -141,7 +141,7 @@ abstract class Base_Chart extends Vtiger_Base_Model{
 					$aggregateFunction = $columnInfo[5];
 					if(empty($referenceFieldReportColumnSQL)) {
 						$reportColumnSQL = $this->getReportTotalColumnSQL($columnInfo);
-						$reportColumnSQLInfo = split(' AS ', $reportColumnSQL);
+						$reportColumnSQLInfo = explode(' AS ', $reportColumnSQL);
 
 						if($aggregateFunction == 'AVG') {	// added as mysql will ignore null values
 							$label = "`".$this->reportRun->replaceSpecialChar($reportColumnSQLInfo[1]).'_AVG'."`";
@@ -155,7 +155,7 @@ abstract class Base_Chart extends Vtiger_Base_Model{
 						$fieldModel->set('reportlabel', $this->reportRun->replaceSpecialChar($label));
 					} else {
 						$reportColumn = $referenceFieldReportColumnSQL;
-						$groupColumnSQLInfo = split(' AS ', $referenceFieldReportColumnSQL);
+						$groupColumnSQLInfo = explode(' AS ', $referenceFieldReportColumnSQL);
 						$fieldModel->set('reportlabel', $this->reportRun->replaceSpecialChar($groupColumnSQLInfo[1]));
 						$fieldModel->set('reportcolumn', $this->reportRun->replaceSpecialChar($reportColumn));
 					}
@@ -187,13 +187,13 @@ abstract class Base_Chart extends Vtiger_Base_Model{
 						$fieldModel->set('reportcolumn', $this->reportRun->replaceSpecialChar($reportColumnSQL));
 						// Added support for date and date time fields with Year and Month support
 						if($columnInfo[4] == 'D' || $columnInfo[4] == 'DT') {
-							$reportColumnSQLInfo = split(' AS ', $reportColumnSQL);
+							$reportColumnSQLInfo = explode(' AS ', $reportColumnSQL);
 							$fieldModel->set('reportlabel', trim($this->reportRun->replaceSpecialChar($reportColumnSQLInfo[1]), '\'')); // trim added as single quote on labels was not grouping properly
 						} else {
 							$fieldModel->set('reportlabel', $this->reportRun->replaceSpecialChar($columnInfo[2]));
 						}
 					} else {
-						$groupColumnSQLInfo = split(' AS ', $referenceFieldReportColumnSQL);
+						$groupColumnSQLInfo = explode(' AS ', $referenceFieldReportColumnSQL);
 						$fieldModel->set('reportlabel', trim($this->reportRun->replaceSpecialChar($groupColumnSQLInfo[1]), '\''));
 						$fieldModel->set('reportcolumn', $this->reportRun->replaceSpecialChar($referenceFieldReportColumnSQL));
 					}
@@ -322,7 +322,7 @@ abstract class Base_Chart extends Vtiger_Base_Model{
 			}
 		}
 
-		$sql = split(' from ', $this->reportRun->sGetSQLforReport($reportModel->getId(), $advFilterSql, 'PDF'), 2);
+		$sql = explode(' from ', $this->reportRun->sGetSQLforReport($reportModel->getId(), $advFilterSql, 'PDF'), 2);
 
 		$columnLabels = array();
 
@@ -449,8 +449,8 @@ abstract class Base_Chart extends Vtiger_Base_Model{
 		$selectedDataFields = $chartModel->get('datafields');
 		$dataTypes = array();
 		foreach ($selectedDataFields as $dataField) {
-			list($tableName, $columnName, $moduleField, $fieldName, $single) = split(':', $dataField);
-			list($relModuleName, $fieldLabel) = split('_', $moduleField);
+			list($tableName, $columnName, $moduleField, $fieldName, $single) = explode(':', $dataField);
+			list($relModuleName, $fieldLabel) = explode('_', $moduleField);
 			$relModuleModel = Vtiger_Module_Model::getInstance($relModuleName);
 			$fieldModel = Vtiger_Field_Model::getInstance($fieldName, $relModuleModel);
 			if ($fieldModel) {
diff --git a/modules/Reports/models/Record.php b/modules/Reports/models/Record.php
index 23cd813d9daa70ba61e08d4774b453e12193d6c3..a88e21a9527e5d7644d92938668b6f1239f85055 100644
--- a/modules/Reports/models/Record.php
+++ b/modules/Reports/models/Record.php
@@ -329,7 +329,7 @@ class Reports_Record_Model extends Vtiger_Record_Model {
 		$primaryModule = $this->report->primodule;
 		for($i=0; $i<$db->num_rows($result); $i++) {
 			$column = $db->query_result($result, $i, 'columnname');
-			list($tableName, $columnName, $moduleFieldLabel, $fieldName, $type) = split(':', $column);
+			list($tableName, $columnName, $moduleFieldLabel, $fieldName, $type) = explode(':', $column);
 			$fieldLabel  = explode('_', $moduleFieldLabel);
 			$module = $fieldLabel[0];
 			$dbFieldLabel = trim(str_replace(array($module, '_'), " ", $moduleFieldLabel));
@@ -651,7 +651,7 @@ class Reports_Record_Model extends Vtiger_Record_Model {
 			$db->pquery('DELETE FROM vtiger_relcriteria_grouping WHERE queryid = ?', array($reportId));
 
 			foreach($advancedFilter as $groupIndex => $groupInfo) {
-				if(empty($groupInfo)) continue;
+				if(!is_array($groupInfo)) continue;
 
 				$groupColumns = $groupInfo['columns'];
 				$groupCondition = $groupInfo['condition'];
@@ -821,7 +821,7 @@ class Reports_Record_Model extends Vtiger_Record_Model {
 		$tmpDir = vglobal('tmp_dir');
 
 		$tempFileName = tempnam($rootDirectory.$tmpDir, 'xls');
-		$fileName = decode_html($this->getName()).'.xls';
+		$fileName = decode_html(str_replace(' ', '_', $this->getName())).'_'.date('Ymd_His').'.xls';
 		$reportRun->writeReportToExcelFile($tempFileName, $advanceFilterSql);
 
 		if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
@@ -850,21 +850,20 @@ class Reports_Record_Model extends Vtiger_Record_Model {
 
 		$tempFileName = tempnam($rootDirectory.$tmpDir, 'csv');
 		$reportRun->writeReportToCSVFile($tempFileName, $advanceFilterSql);
-		$fileName = decode_html($this->getName()).'.csv';
+		$fileName = decode_html(str_replace(' ', '_', $this->getName())).'_'.date('Ymd_His').'.csv';
 
 		if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')) {
 			header('Pragma: public');
 			header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
 		}
 
+                ob_clean();
 		// we are adding UTF-8 Byte Order Mark - BOM at the bottom so the size should be + 8 of the file size
-		$fileSize = @filesize($tempFileName) + 8;
+		$fileSize = @filesize($tempFileName);
 		header('Content-Encoding: UTF-8');
 		header('Content-type: text/csv; charset=UTF-8');
 		header('Content-Length: '.$fileSize);
 		header('Content-disposition: attachment; filename="'.$fileName.'"');
-		// UTF-8 Byte Order Mark - BOM (Source : http://stackoverflow.com/questions/4348802/how-can-i-output-a-utf-8-csv-in-php-that-excel-will-read-properly)
-		echo "\xEF\xBB\xBF";
 
 		$fp = fopen($tempFileName, 'rb');
 		fpassthru($fp);
@@ -1079,6 +1078,7 @@ class Reports_Record_Model extends Vtiger_Record_Model {
 		$advancedFilterCriteriaGroup = array();
 		if(is_array($advancedFilter)) {
 			foreach($advancedFilter as $groupIndex => $groupInfo) {
+                            if(!is_array($groupInfo)) continue;
 				$groupColumns = $groupInfo['columns'];
 				$groupCondition = $groupInfo['condition'];
 
diff --git a/modules/Reports/views/ChartDetail.php b/modules/Reports/views/ChartDetail.php
index fce2d2f14a30ab13dbc76ecb5c421bbd33b36029..520982f222fc6f6b4bf280c87aef0d30cd46dc78 100644
--- a/modules/Reports/views/ChartDetail.php
+++ b/modules/Reports/views/ChartDetail.php
@@ -141,8 +141,8 @@ class Reports_ChartDetail_View extends Vtiger_Index_View {
 		$isPercentExist = false;
 		$selectedDataFields = $reportChartModel->get('datafields');
 		foreach ($selectedDataFields as $dataField) {
-			list($tableName, $columnName, $moduleField, $fieldName, $single) = split(':', $dataField);
-			list($relModuleName, $fieldLabel) = split('_', $moduleField);
+			list($tableName, $columnName, $moduleField, $fieldName, $single) = explode(':', $dataField);
+			list($relModuleName, $fieldLabel) = explode('_', $moduleField);
 			$relModuleModel = Vtiger_Module_Model::getInstance($relModuleName);
 			$fieldModel = Vtiger_Field_Model::getInstance($fieldName, $relModuleModel);
 			if ($fieldModel && $fieldModel->getFieldDataType() != 'currency') {
diff --git a/modules/Reports/views/ChartSaveAjax.php b/modules/Reports/views/ChartSaveAjax.php
index f99f572be549868103b3d18a074bc407bfb275c8..fd1996c9b21262162c6dcd7622eca39e45b9b103 100644
--- a/modules/Reports/views/ChartSaveAjax.php
+++ b/modules/Reports/views/ChartSaveAjax.php
@@ -53,8 +53,8 @@ class Reports_ChartSaveAjax_View extends Vtiger_IndexAjax_View {
 		$isPercentExist = false;
 		$selectedDataFields = $reportChartModel->get('datafields');
 		foreach ($selectedDataFields as $dataField) {
-			list($tableName, $columnName, $moduleField, $fieldName, $single) = split(':', $dataField);
-			list($relModuleName, $fieldLabel) = split('_', $moduleField);
+			list($tableName, $columnName, $moduleField, $fieldName, $single) = explode(':', $dataField);
+			list($relModuleName, $fieldLabel) = explode('_', $moduleField);
 			$relModuleModel = Vtiger_Module_Model::getInstance($relModuleName);
 			$fieldModel = Vtiger_Field_Model::getInstance($fieldName, $relModuleModel);
 			if ($fieldModel && $fieldModel->getFieldDataType() != 'currency') {
diff --git a/modules/Settings/LayoutEditor/models/Field.php b/modules/Settings/LayoutEditor/models/Field.php
index aa5812a1b64834bd2f5aa46b17650de7f25edf60..f6b099546dab12bd703e3708be59158869d75273 100644
--- a/modules/Settings/LayoutEditor/models/Field.php
+++ b/modules/Settings/LayoutEditor/models/Field.php
@@ -111,7 +111,7 @@ class Settings_LayoutEditor_Field_Model extends Vtiger_Field_Model {
 		}
 	}
 
-	public static function makeFieldActive($fieldIdsList=array(), $blockId, $moduleName = false) {
+	public static function makeFieldActive($fieldIdsList, $blockId, $moduleName = false) {
 		$db = PearDatabase::getInstance();
 		$maxSequenceQuery = "SELECT MAX(sequence) AS maxsequence FROM vtiger_field WHERE block = ? AND presence IN (0,2) ";
 		$res = $db->pquery($maxSequenceQuery,array($blockId));
diff --git a/modules/Settings/LayoutEditor/models/Module.php b/modules/Settings/LayoutEditor/models/Module.php
index 91cd030db67337a8ff4f3ea45f7c385c6ce28bc1..8de5303bbf8a00f908e5b97a49894be59d80879f 100644
--- a/modules/Settings/LayoutEditor/models/Module.php
+++ b/modules/Settings/LayoutEditor/models/Module.php
@@ -191,7 +191,7 @@ class Settings_LayoutEditor_Module_Model extends Vtiger_Module_Model {
 		if (is_array($defaultValue)) {
 			$defaultValue = implode(' |##| ', $defaultValue);
 		}
-		$fieldModel->set('defaultvalue', $defaultValue);
+		$fieldModel->set('defaultvalue', vtlib_purify($defaultValue));
 
 		$blockModel = Vtiger_Block_Model::getInstance($blockId, $this);
 		$blockModel->addField($fieldModel);
diff --git a/modules/Vtiger/actions/DashBoardTab.php b/modules/Vtiger/actions/DashBoardTab.php
index a67ed527c6e9b71e708cceba1c27bda80912bee4..b1a7153ab090a7707b88033cc32385d7731f8402 100644
--- a/modules/Vtiger/actions/DashBoardTab.php
+++ b/modules/Vtiger/actions/DashBoardTab.php
@@ -42,21 +42,24 @@ class Vtiger_DashBoardTab_Action extends Vtiger_Action_Controller {
 	 */
 	function addTab(Vtiger_Request $request) {
 		$moduleName = $request->getModule();
-		$tabName = $request->getRaw('tabName');
-
-		$dashBoardModel = Vtiger_DashBoard_Model::getInstance($moduleName);
-		$tabExist = $dashBoardModel->checkTabExist($tabName);
-		$tabLimitExceeded = $dashBoardModel->checkTabsLimitExceeded();
+		$tabName = vtlib_purify($request->getRaw('tabName'));
 		$response = new Vtiger_Response();
 		$response->setEmitType(Vtiger_Response::$EMIT_JSON);
+		if(!empty($tabName)) {
+			$dashBoardModel = Vtiger_DashBoard_Model::getInstance($moduleName);
+			$tabExist = $dashBoardModel->checkTabExist($tabName);
+			$tabLimitExceeded = $dashBoardModel->checkTabsLimitExceeded();
 
 		if ($tabLimitExceeded) {
 			$response->setError(100, vtranslate('LBL_TABS_LIMIT_EXCEEDED', $moduleName));
-		} else if ($tabExist) {
-			$response->setError(100, vtranslate('LBL_DASHBOARD_TAB_ALREADY_EXIST', $moduleName));
+			} else if ($tabExist) {
+					$response->setError(100, vtranslate('LBL_DASHBOARD_TAB_ALREADY_EXIST', $moduleName));
+			} else {
+					$tabData = $dashBoardModel->addTab($tabName);
+					$response->setResult($tabData);
+			}
 		} else {
-			$tabData = $dashBoardModel->addTab($tabName);
-			$response->setResult($tabData);
+			$response->setError(100, vtranslate('LBL_DASHBOARD_TAB_INVALID', $moduleName));
 		}
 		$response->emit();
 	}
diff --git a/modules/Vtiger/handlers/CheckDuplicateHandler.php b/modules/Vtiger/handlers/CheckDuplicateHandler.php
index 45bafffb449882bbdb1af64760e956928de6c9d5..95a7334f65c2248d4cea7edec908298bf0e1d002 100644
--- a/modules/Vtiger/handlers/CheckDuplicateHandler.php
+++ b/modules/Vtiger/handlers/CheckDuplicateHandler.php
@@ -149,7 +149,7 @@ class CheckDuplicateHandler extends VTEventHandler {
 
 						if ($fieldModel->get('uitype') == 72) {
 							array_push($conditions, "$fieldTableName.currency_id = ?");
-							$currencyIdDetails = split('curname', $_REQUEST['base_currency']);
+							$currencyIdDetails = explode('curname', $_REQUEST['base_currency']);
 							$params[] = $currencyIdDetails[1];
 						}
 					}
diff --git a/modules/Vtiger/models/RelationListView.php b/modules/Vtiger/models/RelationListView.php
index 6cf6eff3e19680bb216fc4d99324e3ea0b5f112f..aecdb2c1616852e05c529005e1d6fcab343bca67 100644
--- a/modules/Vtiger/models/RelationListView.php
+++ b/modules/Vtiger/models/RelationListView.php
@@ -288,9 +288,9 @@ class Vtiger_RelationListView_Model extends Vtiger_Base_Model {
 					$queryGenerator->addCondition($fieldName, $searchValue, $comparator, "AND");
 				}
 			}
-			$whereQuerySplit = split("WHERE", $queryGenerator->getWhereClause());
+			$whereQuerySplit = explode("WHERE", $queryGenerator->getWhereClause());
 			if($parentModuleName == 'Accounts' && $relationModuleName == 'Calendar' && (stripos($query, "GROUP BY") !== false)) {
-                            $splitQuery = split('GROUP BY', $query);
+                            $splitQuery = explode('GROUP BY', $query);
                             $query = $splitQuery[0]." AND ".$whereQuerySplit[1].' GROUP BY '.$splitQuery[1];
                         } else {
                             $query.=" AND " . $whereQuerySplit[1];
diff --git a/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc b/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc
index 2612c7cc3fdac6969e4a2c1689a1612442d7004b..06b0d83231ae02fceaa8b3821b496d9d83a8eed6 100644
--- a/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc
+++ b/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc
@@ -344,22 +344,26 @@ class VTFieldExpressionEvaluater{
 	function exec($expr){
 		if($expr instanceof VTExpressionSymbol){
 			return $this->env($expr);
-		}else if($expr instanceof VTExpressionTreeNode){
+		} else if($expr instanceof VTExpressionTreeNode){
 			$op = $expr->getName();
-			if($op->value=='if'){
+			if($op->value == 'if'){
 				$params = $expr->getParams();
 				$cond = $this->exec($params[0]);
 				if($cond){
 					return $this->exec($params[1]);
-				}else{
+				} else {
 					return $this->exec($params[2]);
 				}
-			}else{
+			} else {
 				$params = array_map(array($this, 'exec'), $expr->getParams());
-				$func = $this->operations[$op->value];
-				return $func($params);
+				$func = isset($this->operations[$op->value]) ? $this->operations[$op->value] : null;
+				if ($func !== null) {
+					return $func($params);
+				} else {
+					return null;
+				}
 			}
-		}else{
+		} else {
 			return $expr;
 		}
 	}
diff --git a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ModuleHeader.tpl b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ModuleHeader.tpl
index adc6cd26ed626c94fd56530f02f99636f9f4b0cc..aeff72a75a4386474580adb9d9158fb716591113 100644
--- a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ModuleHeader.tpl
+++ b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ModuleHeader.tpl
@@ -17,16 +17,16 @@
 				</a>
 				<p class="current-filter-name filter-name pull-left cursorPointer">&nbsp;&nbsp;
 					<span class="fa fa-angle-right pull-left" aria-hidden="true"></span> 
-					{if $REQ.view eq 'List'}
+					{if $REQ->get('view') eq 'List'}
 						{vtranslate('LBL_FILTER', $MODULE)}
 					{/if}
 					&nbsp;
-					{if $REQ.view eq 'Detail'}
+					{if $REQ->get('view') eq 'Detail'}
 						<a title="{$RECORD->get('templatename')}">&nbsp;{$RECORD->get('templatename')}&nbsp;</a>
 					{/if}
-					{if $RECORD and $REQ.view eq 'Edit'}
+					{if $RECORD and $REQ->get('view') eq 'Edit'}
 						<a title="{$RECORD->get('templatename')}">&nbsp;{vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('templatename')} &nbsp;</a>
-					{else if $REQ.view eq 'Edit'}
+					{else if $REQ->get('view') eq 'Edit'}
 						<a>&nbsp;{vtranslate('LBL_ADDING_NEW', $MODULE)}&nbsp;</a>
 					{/if}
 				</p>
diff --git a/pkg/vtiger/modules/ExtensionStore/settings/templates/Detail.tpl b/pkg/vtiger/modules/ExtensionStore/settings/templates/Detail.tpl
index 342290c3883b43aeab5d76ab57d7065974d27527..7adb9451ffea1f6a5a1eaadaf853bda88cdab1a1 100644
--- a/pkg/vtiger/modules/ExtensionStore/settings/templates/Detail.tpl
+++ b/pkg/vtiger/modules/ExtensionStore/settings/templates/Detail.tpl
@@ -7,7 +7,7 @@
 {strip}
 	<div class="container-fluid detailViewInfo extensionDetails" style='margin-top:0px;'>
 		{if !($ERROR)}
-            <input type="hidden" name="mode" value="{$REQ.mode}" />
+            <input type="hidden" name="mode" value="{$REQ->get('mode')}" />
 			<input type="hidden" name="extensionId" value="{$EXTENSION_ID}" />
 			<input type="hidden" name="targetModule" value="{$EXTENSION_DETAIL->get('name')}" />
 			<input type="hidden" name="moduleAction" value="{$MODULE_ACTION}" />
diff --git a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportDetails.tpl b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportDetails.tpl
index e6bb392616ab168e78d9fd04ceb4f42114bb95dc..3c102da4fd190a5325c2de3c40fc0a297d56f07d 100644
--- a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportDetails.tpl
+++ b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportDetails.tpl
@@ -32,7 +32,7 @@
 						{/foreach}
 					</table>
 				</div>
-				<input type="hidden" class="triggerEventName" value="{$REQ.triggerEventName}"/>
+				<input type="hidden" class="triggerEventName" value="{$REQ->get('triggerEventName')}"/>
 			</div>
 		</div>
 	</div>
diff --git a/pkg/vtiger/modules/Import/modules/Import/actions/Data.php b/pkg/vtiger/modules/Import/modules/Import/actions/Data.php
index 3020bbc1e7c034e3126ebadd3150c365fcea2dc5..eef394e0a99ae04a2406add4efd22060ae46783c 100644
--- a/pkg/vtiger/modules/Import/modules/Import/actions/Data.php
+++ b/pkg/vtiger/modules/Import/modules/Import/actions/Data.php
@@ -390,13 +390,11 @@ class Import_Data_Action extends Vtiger_Action_Controller {
 						$entityInfo = null;
 					} else {
 						try {
-							// to save Source of Record while Creating
-							$fieldData['source'] = $this->recordSource;
-							$entityInfo = $this->importRecord($fieldData, 'create');
-							if ($entityInfo) {
-								$entityIdComponents = vtws_getIdComponents($entityInfo['id']);
-								$createdRecords[] = $entityIdComponents[1];
-							}
+                                                    $entityInfo = $this->importRecord($fieldData, 'create');
+                                                    if ($entityInfo) {
+                                                            $entityIdComponents = vtws_getIdComponents($entityInfo['id']);
+                                                            $createdRecords[] = $entityIdComponents[1];
+                                                    }
 						} catch (Exception $e) {
 
 						}
@@ -767,6 +765,8 @@ class Import_Data_Action extends Vtiger_Action_Controller {
 				$_REQUEST['cur_'.$this->lineitem_currency_id.'_check'] = 1;
 			}
 			$fieldData['currency_id'] = $this->lineitem_currency_id;
+                        // to save Source of Record while Creating
+                        $fieldData['source'] = $this->recordSource;
 		}
 		if ($fieldData != null && $checkMandatoryFieldValues) {
 			foreach ($moduleFields as $fieldName => $fieldInstance) {
diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/third-party/qCal/qCal/Date.php b/pkg/vtiger/modules/Mobile/modules/Mobile/third-party/qCal/qCal/Date.php
index ceb8b74d4aad30bbe06dd96b1a9c59ccc3634f61..ee260c6558dc13eecce4db6f6b6c20fbdf9972f6 100644
--- a/pkg/vtiger/modules/Mobile/modules/Mobile/third-party/qCal/qCal/Date.php
+++ b/pkg/vtiger/modules/Mobile/modules/Mobile/third-party/qCal/qCal/Date.php
@@ -583,7 +583,7 @@ class qCal_Date {
 	public static function gmgetdate($timestamp = null) {
 	
 		$k = array('seconds','minutes','hours','mday','wday','mon','year','yday','weekday','month',0);
-		return(array_combine($k, split(":", gmdate('s:i:G:j:w:n:Y:z:l:F:U', is_null($timestamp) ? time() : $timestamp))));
+		return(array_combine($k, explode(':', gmdate('s:i:G:j:w:n:Y:z:l:F:U', is_null($timestamp) ? time() : $timestamp))));
 	
 	}
 
diff --git a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/ext/providers/MyProvider.php.sample b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/ext/providers/MyProvider.php.sample
index 6c26537f7ba42cc8b54edeb0cb2401783d17ee1b..89cceaa4097f23b77a35d039667e7d07b6d5c658 100644
--- a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/ext/providers/MyProvider.php.sample
+++ b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/ext/providers/MyProvider.php.sample
@@ -77,7 +77,7 @@ class MyProvider implements ISMSProvider {
 		$httpClient = new Vtiger_Net_Client($serviceURL);
 		$response = $httpClient->doPost($params);		
 		
-		$responseLines = split("\n", $response);		
+		$responseLines = explode("\n", $response);		
 		
 		$results = array();
 		foreach($responseLines as $responseLine) {
diff --git a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/ext/providers/TextAnywhere.php b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/ext/providers/TextAnywhere.php
index b629d1ad20b27ef6d46f433f0f31dc4315ccea79..e46030d254412c554c9f38e794d094a339858887 100644
--- a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/ext/providers/TextAnywhere.php
+++ b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/ext/providers/TextAnywhere.php
@@ -68,7 +68,7 @@ class TextAnywhere implements ISMSProvider {
 	}
 
 	public function query($messageid) {
-		$messageidSplit = split('--', $messageid);
+		$messageidSplit = explode('--', $messageid);
 		$clientMessageReference = trim($messageidSplit[0]);
 		$number = trim($messageidSplit[1]);
 
@@ -170,13 +170,13 @@ class TextAnywhere implements ISMSProvider {
 
 	private function processSendMessageResult($response, $clientMessageReference, $tonumbers) {
 		$results = array();
-		$responseLines = split("\n", $response);
+		$responseLines = explode("\n", $response);
 
 		if (trim($responseLines[0]) === '#1#') {
 			//Successful transaction
-			$numberResults = split(",", $responseLines[1]);
+			$numberResults = explode(',', $responseLines[1]);
 			foreach ($numberResults as $numberResult) {
-				$numberResultSplit = split(":", $numberResult);
+				$numberResultSplit = explode(':', $numberResult);
 				$number = trim($numberResultSplit[0]);
 				$code = trim($numberResultSplit[1]);
 
@@ -220,13 +220,13 @@ class TextAnywhere implements ISMSProvider {
 	private function processQueryMessageResult($response, $number) {
 		$result = array();
 
-		$responseLines = split("\n", $response);
+		$responseLines = explode("\n", $response);
 
 		if (trim($responseLines[0]) === '#1#') {
 			//Successful transaction
-			$numberResults = split(",", $responseLines[1]);
+			$numberResults = explode(',', $responseLines[1]);
 			foreach ($numberResults as $numberResult) {
-				$numberResultSplit = split(":", $numberResult);
+				$numberResultSplit = explode(':', $numberResult);
 				$thisNumber = trim($numberResultSplit[0]);
 				$code = (int) trim($numberResultSplit[1]);
 
diff --git a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/ClickATell.php b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/ClickATell.php
index d70d023508ade1df53dc5385f192d522bd361870..73a966267a3e1a15280167fde2dfa1e6b755e311 100644
--- a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/ClickATell.php
+++ b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/ClickATell.php
@@ -109,7 +109,7 @@ class SMSNotifier_ClickATell_Provider implements SMSNotifier_ISMSProvider_Model
 		$serviceURL = $this->getServiceURL(self::SERVICE_SEND);
 		$httpClient = new Vtiger_Net_Client($serviceURL);
 		$response = $httpClient->doPost($params);
-		$responseLines = split("\n", $response);
+		$responseLines = explode("\n", $response);
 
 		$results = array();
 		$i=0;
diff --git a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/IndiaSms.php b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/IndiaSms.php
index 8a1ae5d9214ad9bcf6cbceea83278b26be120d79..5dec95b22e7eb72020c62710c07c63fe03225831 100644
--- a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/IndiaSms.php
+++ b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/IndiaSms.php
@@ -94,7 +94,7 @@ class SMSNotifier_IndiaSms_Provider implements SMSNotifier_ISMSProvider_Model {
 		$httpClient = new Vtiger_Net_Client($serviceURL);
 
 		$response = $httpClient->doGet($params);
-		$responseLines = split("\n", $response);
+		$responseLines = explode("\n", $response);
 
 		$results = array();
 		foreach ($responseLines as $responseLine) {
diff --git a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/MyProvider.php b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/MyProvider.php
index cdc892afda6ec2d05f9bbe0517b9d59b3454adae..a63e4a85338721d3ef72b47d53ca011b6f53613b 100644
--- a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/MyProvider.php
+++ b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/MyProvider.php
@@ -109,7 +109,7 @@ class SMSNotifier_MyProvider_Provider implements SMSNotifier_ISMSProvider_Model
 		$serviceURL = $this->getServiceURL(self::SERVICE_SEND);
 		$httpClient = new Vtiger_Net_Client($serviceURL);
 		$response = $httpClient->doPost($params);
-		$responseLines = split("\n", $response);
+		$responseLines = explode("\n", $response);
 
 		$results = array();
 		foreach($responseLines as $responseLine) {
diff --git a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/TextAnywhere.php b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/TextAnywhere.php
index 17f5bc38dfa1e36b3f60c7e31cf2faef240615a6..49fd47f604f62c1d8cf8ec78a38680a4c93a223e 100644
--- a/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/TextAnywhere.php
+++ b/pkg/vtiger/modules/SMSNotifier/modules/SMSNotifier/providers/TextAnywhere.php
@@ -76,7 +76,7 @@ class SMSNotifier_TextAnywhere_Provider implements SMSNotifier_ISMSProvider_Mode
 	}
 
 	public function query($messageid) {
-		$messageidSplit = split('--', $messageid);
+		$messageidSplit = explode('--', $messageid);
 		$clientMessageReference = trim($messageidSplit[0]);
 		$number = trim($messageidSplit[1]);
 
@@ -180,13 +180,13 @@ class SMSNotifier_TextAnywhere_Provider implements SMSNotifier_ISMSProvider_Mode
 	private function processSendMessageResult($response, $clientMessageReference, $tonumbers) {
 		$results = array();
 
-		$responseLines = split("\n", $response);
+		$responseLines = explode("\n", $response);
 
 		if (trim($responseLines[0]) === '#1#') {
 			//Successful transaction
-			$numberResults = split(",", $responseLines[1]);
+			$numberResults = explode(',', $responseLines[1]);
 			foreach ($numberResults as $numberResult) {
-				$numberResultSplit = split(":", $numberResult);
+				$numberResultSplit = explode(':', $numberResult);
 				$number = trim($numberResultSplit[0]);
 				$code = trim($numberResultSplit[1]);
 
@@ -230,13 +230,13 @@ class SMSNotifier_TextAnywhere_Provider implements SMSNotifier_ISMSProvider_Mode
 	private function processQueryMessageResult($response, $number) {
 		$result = array();
 
-		$responseLines = split("\n", $response);
+		$responseLines = explode("\n", $response);
 
 		if (trim($responseLines[0]) === '#1#') {
 			//Successful transaction
-			$numberResults = split(",", $responseLines[1]);
+			$numberResults = explode(',', $responseLines[1]);
 			foreach ($numberResults as $numberResult) {
-				$numberResultSplit = split(":", $numberResult);
+				$numberResultSplit = explode(':', $numberResult);
 				$thisNumber = trim($numberResultSplit[0]);
 				$code = (int) trim($numberResultSplit[1]);
 
diff --git a/vtlib/Vtiger/AccessControl.php b/vtlib/Vtiger/AccessControl.php
index d5615a72c20273c9fe28ff05fbedfb272eed5309..6a1d013cf9c3b03d0839fd7698ca7c25c06f4c6b 100644
--- a/vtlib/Vtiger/AccessControl.php
+++ b/vtlib/Vtiger/AccessControl.php
@@ -16,7 +16,7 @@ class Vtiger_AccessControl {
 		'current_user_groups', 'subordinate_roles', 'parent_roles', 'subordinate_roles_users', 'user_info'
 	);
 
-	protected function __consturct() {
+	protected function __construct() {
 		$this->privileges = array();
 	}
 
diff --git a/vtlib/Vtiger/Deprecated.php b/vtlib/Vtiger/Deprecated.php
index d65cca2abf98120775fe0975e7ef7c1bd7f38733..bf47d8517030ee024ec5010384edfebf1e4d1629 100644
--- a/vtlib/Vtiger/Deprecated.php
+++ b/vtlib/Vtiger/Deprecated.php
@@ -622,6 +622,6 @@ class Vtiger_Deprecated {
 	static function return_app_list_strings_language($language, $module='Vtiger') {
 		require_once 'includes/runtime/LanguageHandler.php';
 		$strings = Vtiger_Language_Handler::getModuleStringsFromFile($language, $module);
-		return $strings['languageStrings'];
+		return isset($strings['languageStrings']) ? $strings['languageStrings'] : [];
 	}
 }
\ No newline at end of file
diff --git a/vtlib/Vtiger/Functions.php b/vtlib/Vtiger/Functions.php
index f61b27dc31bb1f016d571314bdf635360fc41f04..be26f3d920f24a221b57ec38e12a5b7cfb007c9b 100644
--- a/vtlib/Vtiger/Functions.php
+++ b/vtlib/Vtiger/Functions.php
@@ -654,46 +654,46 @@ class Vtiger_Functions {
             $filetype = strtolower($filetype);
         }
 
-        $saveimage = 'true';
+        $saveimage = true;
         if (!in_array($filetype, $allowedImageFormats)) {
-            $saveimage = 'false';
+            $saveimage = false;
         }
 
         //mime type check
-        if ($saveimage == 'true') {
+        if ($saveimage) {
             $mimeType = mime_content_type($file_details['tmp_name']);
             $mimeTypeContents = explode('/', $mimeType);
             if (!$file_details['size'] || strtolower($mimeTypeContents[0]) !== 'image' || !in_array($mimeTypeContents[1], $mimeTypesList)) {
-                $saveimage = 'false';
+                $saveimage = false;
             }
         }
 
         //metadata check
         $shortTagSupported = ini_get('short_open_tag') ? true : false;
-        if ($saveimage == 'true') {
+        if ($saveimage) {
             $tmpFileName = $file_details['tmp_name'];
 
             if ($file_details['type'] == 'image/jpeg' || $file_details['type'] == 'image/tiff') {
                 $exifdata = @exif_read_data($file_details['tmp_name']);
                 if ($exifdata && !self::validateImageMetadata($exifdata, $shortTagSupported)) {
-                    $saveimage = 'false';
+                    $saveimage = false;
                 }
                 //131225968::remove sensitive information(like,GPS or camera information) from the image
-                if (($saveimage == 'true' ) && ($file_details['type'] == 'image/jpeg' ) && extension_loaded('gd') && function_exists('gd_info')) {
+                if ($saveimage && ($file_details['type'] == 'image/jpeg' ) && extension_loaded('gd') && function_exists('gd_info')) {
                     $img = imagecreatefromjpeg($tmpFileName);
                     imagejpeg($img, $tmpFileName);
                 }
             }
         }
 
-        if ($saveimage == 'true') {
+        if ($saveimage) {
             $imageContents = file_get_contents($tmpFileName);
             if (stripos($imageContents, $shortTagSupported ? "<?" : "<?php") !== false) { // suspicious dynamic content.
-                $saveimage = 'false';
+                $saveimage = false;
             }
         }
 
-        if (($filetype == 'svg+xml' || $mimeTypeContents[1] == 'svg+xml') && $saveimage == 'true') {
+        if (($filetype == 'svg+xml' || $mimeTypeContents[1] == 'svg+xml') && $saveimage) {
             //remove malicious html attributes with its value from the contents.
             $imageContents = purifyHtmlEventAttributes($imageContents, true);
             $filePointer = fopen("$tmpFileName", "w");
@@ -701,7 +701,7 @@ class Vtiger_Functions {
             fclose($filePointer);
         }
 
-        if ($saveimage == 'true') {
+        if ($saveimage) {
             /*
              * File functions like  filegroup(), fileowner(), filesize(), filetype(), fileperms() and few others,caches file information, we need to clear the cache so it will not return the cache value if we perform/call same function after updating the file
              */
diff --git a/vtlib/Vtiger/LanguageImport.php b/vtlib/Vtiger/LanguageImport.php
index 6b2b4ce00c74707962401d37d9b42216fc2ff06f..447995c02e0c112e9c7e51039a9c11a6537e66ea 100644
--- a/vtlib/Vtiger/LanguageImport.php
+++ b/vtlib/Vtiger/LanguageImport.php
@@ -82,7 +82,7 @@ class Vtiger_LanguageImport extends Vtiger_LanguageExport {
 				$targetdir  = substr($filename, 0, strripos($filename,'/'));
 				$targetfile = basename($filename);
 
-				$prefixparts = split('_', $prefix);
+				$prefixparts = explode('_', $prefix);
 
 				$dounzip = false;
 				if(is_dir($targetdir)) {
diff --git a/vtlib/Vtiger/Utils.php b/vtlib/Vtiger/Utils.php
index 64a36a485a1aa660fd10408f1adef3ca5fd7430d..e5415688d6a1410ef652541f26a2dad7fd109941 100644
--- a/vtlib/Vtiger/Utils.php
+++ b/vtlib/Vtiger/Utils.php
@@ -342,7 +342,7 @@ class Vtiger_Utils {
     public static function writeLogFile($logFileName, $log) {
         if ($logFileName && $log) {
             $logFilePath = self::$logFolder . '/' . $logFileName;
-            file_put_contents($logFilePath, print_r($log, true), FILE_APPEND);
+            file_put_contents($logFilePath, print_r($log, true).PHP_EOL, FILE_APPEND);
         }
     }
 }