public function getExpressionQuery($xml) { global $adb, $current_user; $workflowScheduler = new WorkFlowScheduler($adb); $moduleName = (string) $xml->module; $queryGenerator = new QueryGenerator($moduleName, $current_user); $conditions = (string) $xml->conditions; $conditions = json_decode(decode_html($conditions)); if (isset($xml->fields)) { $fields = explode(',', trim((string) $xml->fields)); $queryGenerator->setFields($fields); } else { $queryGenerator->setFields(array('id')); } $workflowScheduler->addWorkflowConditionsToQueryGenerator($queryGenerator, $conditions); if ($moduleName == 'Calendar' || $moduleName == 'Events') { if ($conditions) { $queryGenerator->addConditionGlue('AND'); } // We should only get the records related to proper activity type if ($moduleName == 'Calendar') { $queryGenerator->addCondition('activitytype', 'Emails', 'n'); $queryGenerator->addCondition('activitytype', 'Task', 'e', 'AND'); } else { if ($moduleName == "Events") { $queryGenerator->addCondition('activitytype', 'Emails', 'n'); $queryGenerator->addCondition('activitytype', 'Task', 'n', 'AND'); } } } $query = $queryGenerator->getQuery(); return $query; }
$adminUser = $util->adminUser(); $entityCache = new VTEntityCache($adminUser); $wfs = new VTWorkflowManager($adb); $result = $adb->pquery('select workflow_id, module_name, summary, test, execution_condition, type from com_vtiger_workflows where workflow_id=?', array($workflowid_to_evaluate)); if (!$result or $adb->num_rows($result) == 0) { echo "<h2>Incorrect workflowid:</h2>"; echo "<b>workflowid</b> could not be found as a valid workflow<br>"; die; } $workflows = $wfs->getWorkflowsForResult($result); $workflow = $workflows[$workflowid_to_evaluate]; $entityData = $entityCache->forId($crm_record_to_evaluate); if ($workflows[$workflowid_to_evaluate]->executionCondition == VTWorkflowManager::$ON_SCHEDULE) { echo "<h2>Scheduled: SQL for affected records:</h2>"; $workflowScheduler = new WorkFlowScheduler($adb); $query = $workflowScheduler->getWorkflowQuery($workflow); echo "<span style='font-size: large;'>{$query}</span>"; } else { echo "<h2>Launch Conditions:</h2>"; $eval = $workflow->evaluate($entityCache, $crm_record_to_evaluate); echo "<span style='font-size: large;'>"; var_dump($eval); echo '</span>'; $tm = new VTTaskManager($adb); $taskQueue = new VTTaskQueue($adb); $tasks = $tm->getTasksForWorkflow($workflow->id); foreach ($tasks as $task) { if (is_object($task) and $task->active and get_class($task) == 'VTEmailTask') { $email = evalwfEmailTask($crm_record_to_evaluate, $task); foreach ($email as $key => $value) {