[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /*+*********************************************************************************** 3 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 4 * ("License"); You may not use this file except in compliance with the License 5 * The Original Code is: vtiger CRM Open Source 6 * The Initial Developer of the Original Code is vtiger. 7 * Portions created by vtiger are Copyright (C) vtiger. 8 * All Rights Reserved. 9 ************************************************************************************ */ 10 11 function vtws_create($elementType, $element, $user) { 12 13 $types = vtws_listtypes(null, $user); 14 if (!in_array($elementType, $types['types'])) { 15 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Permission to perform the operation is denied"); 16 } 17 18 global $log, $adb; 19 20 // Cache the instance for re-use 21 if(!isset($vtws_create_cache[$elementType]['webserviceobject'])) { 22 $webserviceObject = VtigerWebserviceObject::fromName($adb,$elementType); 23 $vtws_create_cache[$elementType]['webserviceobject'] = $webserviceObject; 24 } else { 25 $webserviceObject = $vtws_create_cache[$elementType]['webserviceobject']; 26 } 27 // END 28 29 $handlerPath = $webserviceObject->getHandlerPath(); 30 $handlerClass = $webserviceObject->getHandlerClass(); 31 32 require_once $handlerPath; 33 34 $handler = new $handlerClass($webserviceObject, $user, $adb, $log); 35 $meta = $handler->getMeta(); 36 if ($meta->hasWriteAccess() !== true) { 37 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Permission to write is denied"); 38 } 39 40 $referenceFields = $meta->getReferenceFieldDetails(); 41 foreach ($referenceFields as $fieldName => $details) { 42 if (isset($element[$fieldName]) && strlen($element[$fieldName]) > 0) { 43 $ids = vtws_getIdComponents($element[$fieldName]); 44 $elemTypeId = $ids[0]; 45 $elemId = $ids[1]; 46 $referenceObject = VtigerWebserviceObject::fromId($adb, $elemTypeId); 47 if (!in_array($referenceObject->getEntityName(), $details)) { 48 throw new WebServiceException(WebServiceErrorCode::$REFERENCEINVALID, 49 "Invalid reference specified for $fieldName"); 50 } 51 if ($referenceObject->getEntityName() == 'Users') { 52 if(!$meta->hasAssignPrivilege($element[$fieldName])) { 53 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Cannot assign record to the given user"); 54 } 55 } 56 if (!in_array($referenceObject->getEntityName(), $types['types']) && $referenceObject->getEntityName() != 'Users') { 57 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, 58 "Permission to access reference type is denied" . $referenceObject->getEntityName()); 59 } 60 } else if ($element[$fieldName] !== NULL) { 61 unset($element[$fieldName]); 62 } 63 } 64 65 66 if ($meta->hasMandatoryFields($element)) { 67 68 $ownerFields = $meta->getOwnerFields(); 69 if (is_array($ownerFields) && sizeof($ownerFields) > 0) { 70 foreach ($ownerFields as $ownerField) { 71 if (isset($element[$ownerField]) && $element[$ownerField] !== null && 72 !$meta->hasAssignPrivilege($element[$ownerField])) { 73 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Cannot assign record to the given user"); 74 } 75 } 76 } 77 $entity = $handler->create($elementType, $element); 78 VTWS_PreserveGlobal::flush(); 79 return $entity; 80 } else { 81 82 return null; 83 } 84 } 85 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |