From a56ff99d1626a13c9bd981d429a363cd856fa275 Mon Sep 17 00:00:00 2001
From: satish <satish.dvnk@vtiger.com>
Date: Fri, 24 Feb 2017 15:35:41 +0530
Subject: [PATCH] Issues FAQ - workflow Source is not 'Workflow' when record
 created from workflows

---
 layouts/v7/modules/Rss/ListViewContents.tpl        |  2 +-
 modules/Settings/Workflows/views/EditV7Task.php    |  8 ++++----
 modules/Vtiger/models/Module.php                   |  6 +++---
 modules/com_vtiger_workflow/VTWorkflowUtils.php    | 14 ++++----------
 .../tasks/VTCreateEntityTask.inc                   |  1 +
 .../tasks/VTCreateEventTask.inc                    |  3 ++-
 .../com_vtiger_workflow/tasks/VTCreateTodoTask.inc |  6 +++---
 vtlib/Vtiger/Functions.php                         |  2 +-
 8 files changed, 19 insertions(+), 23 deletions(-)

diff --git a/layouts/v7/modules/Rss/ListViewContents.tpl b/layouts/v7/modules/Rss/ListViewContents.tpl
index 49570c557..ed70b3d9e 100644
--- a/layouts/v7/modules/Rss/ListViewContents.tpl
+++ b/layouts/v7/modules/Rss/ListViewContents.tpl
@@ -47,7 +47,7 @@
                     <tr>
                         <td>
                             {assign var=SINGLE_MODULE value="SINGLE_$MODULE"}
-                            {vtranslate('LBL_NO')} {vtranslate($MODULE, $MODULE)} {vtranslate('LBL_FOUND')}. {vtranslate('LBL_CREATE')} <a class="rssAddButton" href="#" data-href="{$QUICK_LINKS['SIDEBARLINK'][0]->getUrl()}">&nbsp;{vtranslate($SINGLE_MODULE, $MODULE)}</a>
+                            {vtranslate('LBL_NO')} {vtranslate($MODULE, $MODULE)} {vtranslate('LBL_FOUND')}. {vtranslate('LBL_CREATE')}<a class="rssAddButton" href="#" data-href="{$QUICK_LINKS['SIDEBARLINK'][0]->getUrl()}">&nbsp;{vtranslate($SINGLE_MODULE, $MODULE)}</a>
                         </td>
                     </tr>
                 </tbody>
diff --git a/modules/Settings/Workflows/views/EditV7Task.php b/modules/Settings/Workflows/views/EditV7Task.php
index 0d5cad697..ba6595958 100644
--- a/modules/Settings/Workflows/views/EditV7Task.php
+++ b/modules/Settings/Workflows/views/EditV7Task.php
@@ -136,7 +136,7 @@ class Settings_Workflows_EditV7Task_View extends Settings_Vtiger_Index_View {
 		$templateVariables = array(
 			$individualTaxBlockValue => $individualTaxBlockLabel,
 			$groupTaxBlockValue => $groupTaxBlockLabel
-				);
+		);
 
 		$viewer->assign('META_VARIABLES', $metaVariables);
 		$viewer->assign('TEMPLATE_VARIABLES', $templateVariables);
@@ -154,16 +154,16 @@ class Settings_Workflows_EditV7Task_View extends Settings_Vtiger_Index_View {
 		$viewer->assign('MODULE', $moduleName);
 		$viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName);
 
-
-
 		$emailFields = $recordStructureInstance->getAllEmailFields();
 		foreach($emailFields as $metaKey => $emailField) {
 			$emailFieldoptions .= '<option value=",$'.$metaKey.'">'.$emailField->get('workflow_columnlabel').'</option>';
 		}
 		$usersModuleModel = Vtiger_Module_Model::getInstance('Users');
 
-		$emailFieldoptions .= '<option value=",$(general : (__VtigerMeta__) reports_to_id)"> '.
+		if($moduleModel->getField('assigned_user_id')) {
+			$emailFieldoptions .= '<option value=",$(general : (__VtigerMeta__) reports_to_id)"> '.
 									vtranslate($moduleModel->getField('assigned_user_id')->get('label'),'Users').' : (' . vtranslate('Users','Users') . ') '. vtranslate($usersModuleModel->getField('reports_to_id')->get('label'),'Users') .'</option>';
+		}
 
 		$nameFields = $recordStructureInstance->getNameFields();
 		$fromEmailFieldOptions = '<option value="">'. vtranslate('ENTER_FROM_EMAIL_ADDRESS', $qualifiedModuleName) .'</option>';
diff --git a/modules/Vtiger/models/Module.php b/modules/Vtiger/models/Module.php
index 8ce16d3f2..80af99b7a 100644
--- a/modules/Vtiger/models/Module.php
+++ b/modules/Vtiger/models/Module.php
@@ -631,7 +631,8 @@ class Vtiger_Module_Model extends Vtiger_Module {
 	}
 
 	public function isWorkflowSupported() {
-		if($this->isEntityModule()) {
+		vimport('~~modules/com_vtiger_workflow/VTWorkflowUtils.php');
+		if($this->isEntityModule() && VTWorkflowUtils::checkModuleWorkflow($this->getName())) {
 			return true;
 		}
 		return false;
@@ -1303,7 +1304,6 @@ class Vtiger_Module_Model extends Vtiger_Module {
 		if(!$this->isEntityModule() && $this->getName() !== 'Users') {
 			return array();
 		}
-		vimport('~~modules/com_vtiger_workflow/VTWorkflowUtils.php');
 
 		$layoutEditorImagePath = Vtiger_Theme::getImagePath('LayoutEditor.gif');
 		$editWorkflowsImagePath = Vtiger_Theme::getImagePath('EditWorkflows.png');
@@ -1319,7 +1319,7 @@ class Vtiger_Module_Model extends Vtiger_Module {
 						'linkicon' => $layoutEditorImagePath
 			);
 
-			if(VTWorkflowUtils::checkModuleWorkflow($this->getName())) {
+			if($this->isWorkflowSupported()) {
 				$settingsLinks[] = array(
 						'linktype' => 'LISTVIEWSETTING',
 						'linklabel' => 'LBL_EDIT_WORKFLOWS',
diff --git a/modules/com_vtiger_workflow/VTWorkflowUtils.php b/modules/com_vtiger_workflow/VTWorkflowUtils.php
index b78c6116e..2448f05bd 100644
--- a/modules/com_vtiger_workflow/VTWorkflowUtils.php
+++ b/modules/com_vtiger_workflow/VTWorkflowUtils.php
@@ -120,17 +120,11 @@ class VTWorkflowUtils {
 	 */
 
 	function checkModuleWorkflow($modulename) {
-		global $adb;
-		$tabid = getTabid($modulename);
-		$modules_not_supported = array('Calendar', 'Emails', 'Faq', 'Events', 'PBXManager', 'Users');
-		$query = "SELECT name FROM vtiger_tab WHERE name not in (" . generateQuestionMarks($modules_not_supported) . ") AND isentitytype=1 AND presence = 0 AND tabid = ?";
-		$result = $adb->pquery($query, array($modules_not_supported, $tabid));
-		$rows = $adb->num_rows($result);
-		if ($rows > 0) {
-			return true;
-		} else {
-			return false;
+		$result = true;
+		if (in_array($modulename, array('Emails', 'Faq', 'PBXManager', 'Users')) || !getTabid($modulename)) {
+			$result = false;
 		}
+		return $result;
 	}
 
 	function vtGetModules($adb) {
diff --git a/modules/com_vtiger_workflow/tasks/VTCreateEntityTask.inc b/modules/com_vtiger_workflow/tasks/VTCreateEntityTask.inc
index 44960258f..d2a2ccb37 100644
--- a/modules/com_vtiger_workflow/tasks/VTCreateEntityTask.inc
+++ b/modules/com_vtiger_workflow/tasks/VTCreateEntityTask.inc
@@ -183,6 +183,7 @@ class VTCreateEntityTask extends VTTask {
 			$newEntity->column_fields[$this->reference_field] = $focus->id;
 			// To handle cyclic process
 			$newEntity->_from_workflow = true;
+			$newEntity->column_fields['source'] = 'WORKFLOW';
 
 			//If the module triggering workflow and new entity we are creating are same, Then it might end up in infinite loop.
 			//So we need to call saveentity than save in order to avoid workflow triggering for new entity
diff --git a/modules/com_vtiger_workflow/tasks/VTCreateEventTask.inc b/modules/com_vtiger_workflow/tasks/VTCreateEventTask.inc
index abd3d23f2..8073b96d1 100644
--- a/modules/com_vtiger_workflow/tasks/VTCreateEventTask.inc
+++ b/modules/com_vtiger_workflow/tasks/VTCreateEventTask.inc
@@ -172,7 +172,8 @@ class VTCreateEventTask extends VTTask{
 			unset($_REQUEST['recurringtype']);
 			unset($fields['recurringtype']);
 		}
-		
+
+		$fields['source'] = 'WORKFLOW';
 		$event = vtws_create('Events', $fields, $adminUser);
 		$eventIdDetails = vtws_getIdComponents($event['id']);
 		$entityIdDetails = vtws_getIdComponents($id);
diff --git a/modules/com_vtiger_workflow/tasks/VTCreateTodoTask.inc b/modules/com_vtiger_workflow/tasks/VTCreateTodoTask.inc
index 7711454ca..be456c0c3 100644
--- a/modules/com_vtiger_workflow/tasks/VTCreateTodoTask.inc
+++ b/modules/com_vtiger_workflow/tasks/VTCreateTodoTask.inc
@@ -109,8 +109,7 @@ class VTCreateTodoTask extends VTTask{
 			'taskstatus'=>$this->status,
 			'assigned_user_id'=>$userId,
 			'time_start'=> $time,
-			'sendnotification'=>($this->sendNotification!='' && $this->sendNotification!='N')?
-					true: false,
+			'sendnotification'=>($this->sendNotification!='' && $this->sendNotification!='N') ? true: false,
 			'date_start'=>$startDate, 
 			'due_date'=>$date,
 			'visibility'=>'Private',
@@ -169,7 +168,8 @@ class VTCreateTodoTask extends VTTask{
 				$fields[$fieldName] = $fieldValue;
 			}
 		}
-		
+
+		$fields['source'] = 'WORKFLOW';
 		$todo = vtws_create('Calendar', $fields, $adminUser);
 		$todoIdDetails = vtws_getIdComponents($todo['id']);
 		$entityIdDetails = vtws_getIdComponents($id);
diff --git a/vtlib/Vtiger/Functions.php b/vtlib/Vtiger/Functions.php
index f8da7d319..3413a8fdf 100644
--- a/vtlib/Vtiger/Functions.php
+++ b/vtlib/Vtiger/Functions.php
@@ -655,7 +655,7 @@ class Vtiger_Functions {
 		$description = $emailTemplate->getProcessedDescription();
 		$tokenDataPair = explode('$', $description);
 		$fields = Array();
-		for ($i = 1; $i < count($token_data_pair); $i+=2) {
+		for ($i = 1; $i < count($token_data_pair); $i++) {
 			$module = explode('-', $tokenDataPair[$i]);
 			$fields[$module[0]][] = $module[1];
 		}
-- 
GitLab