* SPDX-License-Identifier: AGPL-3.0-only ************************************/ function getRootDirectoryPath(){ $path = pathinfo(__FILE__); $path = $path['dirname']; $path = substr($path,0,strrpos(substr($path,0,strlen($path)-1),DIRECTORY_SEPARATOR)); $path = substr($path,0,strrpos(substr($path,0,strlen($path)-1),DIRECTORY_SEPARATOR)); return $path; } //get vte root directory. $path = getRootDirectoryPath(); chdir($path); require_once("config.inc.php"); require_once('include/database/PearDatabase.php'); require_once 'include/Webservices/Utils.php'; require_once("modules/Users/Users.php"); require_once("include/Zend/Json.php"); require_once("include/Webservices/VtenextCRMObject.php");//crmv@207871 require_once("include/Webservices/VtenextCRMObjectMeta.php");//crmv@207871 require_once("include/Webservices/DataTransform.php"); require_once("include/Webservices/WebServiceError.php"); require_once 'include/utils/utils.php'; require_once 'include/Webservices/ModuleTypes.php'; require_once 'include/utils/VtlibUtils.php'; require_once('include/logging.php'); require_once 'include/Webservices/VtenextWebserviceObject.php';//crmv@207871 require_once 'include/Webservices/WebserviceEntityOperation.php'; require_once "include/language/$default_language.lang.php"; require_once 'modules/Webforms/Webforms.config.php'; require_once 'include/Webservices/Login.php'; require_once 'include/Webservices/ModuleTypes.php'; require_once 'include/Webservices/AuthToken.php'; require_once 'include/Webservices/DescribeObject.php'; require_once 'include/Webservices/Create.php'; require_once 'include/Webservices/WebserviceField.php'; require_once 'include/Webservices/EntityMeta.php'; function webforms_getUserData($ownerId, $describeFields,$source){ $userData = Array(); $len = sizeof($describeFields); for($i=0;$i<$len;++$i){ $fieldName = $describeFields[$i]['name']; // Handle meta fields right away if ($describeFields[$i]['type']['name'] == 'owner') { $userData[$fieldName] = $ownerId; continue; } /* TODO: if($describeFields[$i]['type']['name'] == 'reference'){ continue; }*/ /** * Support for specifying (fieldname or label:fieldlabel) */ // NOTE: Spaces in parameter key will be converted to _ $transformedFieldLabel= str_replace(' ','_', $describeFields[$i]['label']); $valuekey = false; if (isset($source[$fieldName])) { $valuekey = $fieldName; } else if (isset($source["label:$transformedFieldLabel"])) { $valuekey = "label:$transformedFieldLabel"; } if($valuekey) { $value = vtws_getParameter($source, $valuekey); if($value !== null){ $userData[$fieldName] = $value; } } else if($describeFields[$i]['mandatory'] == true) { return null; } } return $userData; } function webforms_returnError($e,$moduleName){ global $defaultSuccessAction,$failureURL; if(strlen($failureURL) > 0){ header("Location: $failureURL"); } if($defaultSuccessAction == 'JSON'){ Zend_Json::$useBuiltinEncoderDecoder = true; $json = new Zend_Json(); echo $json->encode(array('success'=>false,'error'=>$e)); }else{ webforms_displayTemplate(getExceptionArray($e),$moduleName,'modules/Webforms/ErrorPage.tpl'); } } function getExceptionArray($e){ if(is_array($e)){ return $e; } return array('code'=>$e->code,'message'=>$e->message); } function webforms_displayTemplate($data,$moduleName,$path){ $smarty = new VteSmarty(); webforms_prepareSmarty($smarty,$data,$moduleName); $smarty->display($path); } function webforms_prepareSmarty($smarty,$data,$moduleName){ global $default_language,$site_URL; $moduleStrings = return_module_language($default_language,'Webforms'); $appStrings = return_application_language($default_language); $path = (strrpos($site_URL,'/') === strlen($site_URL))? $site_URL: $site_URL.'/'; $smarty->assign("PATH", $path); $smarty->assign("IMAGEPATH", 'themes/images/'); $smarty->assign("MODULE",$moduleName); $smarty->assign("MOD", $moduleStrings); $smarty->assign("DATA", $data); $smarty->assign("APP", $appStrings); } function webforms_returnSuccess($element,$moduleName){ global $successURL; if(strlen($successURL) > 0){ header("Location: $successURL"); } if($defaultSuccessAction == 'JSON'){ Zend_Json::$useBuiltinEncoderDecoder = true; $json = new Zend_Json(); echo $json->encode(array('success'=>true,'result'=>$element)); }else{ webforms_displayTemplate($elemnet,$moduleName,'modules/Webforms/SuccessPage.tpl'); } } function webforms_init(){ global $defaultUserName,$defaultUserAccessKey,$defaultOwner,$adb,$enableAppKeyValidation,$application_unique_key; try{ $active = vtlib_isModuleActive('Webforms'); if($active === false){ webforms_returnError(array('code'=>"WEBFORMS_DISABLED",'message'=>'Webforms module is disabled'),'Webforms'); } if($enableAppKeyValidation ==true){ if($application_unique_key !== $_REQUEST['appKey']){ webforms_returnError(array('code'=>"WEBFORMS_INVALID_APPKEY",'message'=>'AppKey provided is invalid'),null); return ; } } $module = $_REQUEST['moduleName']; $challengeResult = vtws_getchallenge($defaultUserName); $challengeToken = $challengeResult['token']; $user = vtws_login($defaultUserName,md5($challengeToken.$defaultUserAccessKey)); $describeResult = vtws_describe($module,$user); $fields = $describeResult['fields']; $assignedUser = CRMEntity::getInstance('Users'); $ownerId = $assignedUser->retrieve_user_id($defaultOwner); $userData = webforms_getUserData(vtws_getId(VtenextWebserviceObject::fromName($adb,"Users")->getEntityId(),$ownerId),$fields,$_REQUEST);//crmv@207871 if($userData === null){ webforms_returnError(array('code'=>"WEBFORMS_INVALID_DATA",'message'=>'data provided is invalid'),$module); return ; } if(sizeof($userData)<1){ webforms_returnError(array('code'=>"WEBFORMS_INVALID_DATA",'message'=>'data provided is invalid'),$module); return ; } $createResult = vtws_create($module,$userData,$user); webforms_returnSuccess($createResult,$module); }catch(WebServiceException $e){ webforms_returnError($e,$module); } } webforms_init(); ?>