182 lines
6.4 KiB
PHP
182 lines
6.4 KiB
PHP
|
<?php
|
||
|
/*+**********************************************************************************
|
||
|
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
||
|
* ("License"); You may not use this file except in compliance with the License
|
||
|
* The Original Code is: vtiger CRM Open Source
|
||
|
* The Initial Developer of the Original Code is vtiger.
|
||
|
* Portions created by vtiger are Copyright (C) vtiger.
|
||
|
* All Rights Reserved.
|
||
|
************************************************************************************/
|
||
|
|
||
|
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 vtiger 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/VtigerCRMObject.php");
|
||
|
require_once("include/Webservices/VtigerCRMObjectMeta.php");
|
||
|
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/VtigerWebserviceObject.php';
|
||
|
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';
|
||
|
require_once('Smarty_setup.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 vtigerCRM_Smarty;
|
||
|
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 = new Users();
|
||
|
$ownerId = $assignedUser->retrieve_user_id($defaultOwner);
|
||
|
$userData = webforms_getUserData(vtws_getId(VtigerWebserviceObject::fromName($adb,"Users")->getEntityId(),$ownerId),$fields,$_REQUEST);
|
||
|
|
||
|
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();
|
||
|
?>
|