Beispiel #1
0
 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;
 }
Beispiel #2
0
$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) {