isAdminUser()) {
throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger'));
}
}
public function process(Vtiger_Request $request) {
global $adb, $current_user;
$adb->dieOnError = false;
global $current_user;
global $root_directory;
$adb = PearDatabase::getInstance();
$moduleName = $request->getModule();
$qualifiedModuleName = $request->getModule(false);
$viewer = $this->getViewer($request);
/**
* @var $settingsModel Settings_Colorizer_Module_Model
*/
$settingsModel = Settings_Vtiger_Module_Model::getInstance($qualifiedModuleName);
if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}
$taskID = intval($request->get("taskid"));
$sql = "SELECT * FROM vtiger_wfp_blocks WHERE id = ?";
$result = $adb->pquery($sql, array($taskID));
if($adb->num_rows($result) == 0) {
die("ERROR");
}
$configArray = $adb->fetch_array($result);
$taskType = ucfirst(strtolower($configArray["type"]));
$sql = "SELECT handlerclass, `file`, `module`, `helpurl`, repo_id FROM vtiger_wf_types WHERE `type` = '".preg_replace("/[^a-zA-z0-9]/", "", strtolower($taskType))."' OR `type` = '".preg_replace("/[^a-zA-z0-9]/", "", $configArray["type"])."' ";
$result = $adb->query($sql, true);
$taskObj = $adb->fetch_array($result);
if(!empty($_GET['stefanDebug'])) {
var_dump($sql, $taskObj);
}
if(!empty($taskObj["file"])) {
require_once("modules/".$taskObj["module"]."/".$taskObj["file"]);
} else {
$taskDir = $root_directory."/modules/".$taskObj["module"]."/";
if(!file_exists($taskDir."/tasks/".preg_replace("/[^a-zA-z0-9]/", "", $taskObj["handlerclass"]).".php")) {
die("Classfile for task not found! [".$taskDir."/tasks/".preg_replace("/[^a-zA-z0-9]/", "", $taskObj["handlerclass"]).".php"."]");
exit();
}
require_once($taskDir."tasks/".preg_replace("/[^a-zA-z0-9-_]/", "", $taskObj["handlerclass"]).".php");
}
//Zend_Json::$useBuiltinEncoderDecoder = true;
$className = $taskObj["handlerclass"];
/**
* @var \Workflow\Task $obj
*/
$obj = new $className($taskID, false, true);
$taskFormMessage = "";
$requestValues = $request->getAll();
if($request->has("save") && $request->has("editID")) {
$values = $requestValues["task"];
$taskSettings = $requestValues["taskSettings"];
$return = $obj->_beforeSave($values);
// Only save, if the beforeSave Event didn't return false
if($return !== false) {
$currentUser = \Users_Record_Model::getCurrentUserModel();
$json = \Workflow\VtUtils::json_encode($values); $json = str_replace(array(""), array("", "?>"), $json);
$sql = "UPDATE vtiger_wfp_blocks SET modified = NOW(), modified_by = ?, text = ?, settings = ?, active = ? WHERE id = ".$taskID;
$adb->pquery($sql, array($currentUser->id, $taskSettings["text"], $json, $request->get("active") == "true" ? "1" : "0"), true);
$successHint = true;
/**
* @var \Workflow\Task $obj
*/
$obj = new $className($taskID,false, true);
$envVars = $obj->getEnvironmentVariables();
foreach($envVars as $varIndex => $varValue) {
$envVars[$varIndex] = str_replace('$env', '', $envVars[$varIndex]);
$envVars[$varIndex] = rtrim($envVars[$varIndex], '"\'');
$envVars[$varIndex] .= "'";
if(substr($envVars[$varIndex], 0, 2) != "['") {
$envVars[$varIndex] = "['".$varValue."'";
}
}
$sql = "UPDATE vtiger_wfp_blocks SET env_vars = ? WHERE id = ".$taskID;
$adb->pquery($sql, array(str_replace('$env', "", str_replace("'", '"',implode("#~~#",$envVars)))), true);
$obj->_afterSave();
}
Workflow2::$enableError = false;
$syntaxValidator = $obj->validateSyntax();
Workflow2::$enableError = true;
if($syntaxValidator !== true) {
$taskFormMessage = "Found some syntax errors in custom Expressions:
".$syntaxValidator[1]." [Line ".$syntaxValidator[2]."]