[ 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_update($element,$user){ 12 13 global $log,$adb; 14 $idList = vtws_getIdComponents($element['id']); 15 $webserviceObject = VtigerWebserviceObject::fromId($adb,$idList[0]); 16 $handlerPath = $webserviceObject->getHandlerPath(); 17 $handlerClass = $webserviceObject->getHandlerClass(); 18 19 require_once $handlerPath; 20 21 $handler = new $handlerClass($webserviceObject,$user,$adb,$log); 22 $meta = $handler->getMeta(); 23 $entityName = $meta->getObjectEntityName($element['id']); 24 25 $types = vtws_listtypes(null, $user); 26 if(!in_array($entityName,$types['types'])){ 27 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED,"Permission to perform the operation is denied"); 28 } 29 30 if($entityName !== $webserviceObject->getEntityName()){ 31 throw new WebServiceException(WebServiceErrorCode::$INVALIDID,"Id specified is incorrect"); 32 } 33 34 if(!$meta->hasPermission(EntityMeta::$UPDATE,$element['id'])){ 35 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED,"Permission to read given object is denied"); 36 } 37 38 if(!$meta->exists($idList[1])){ 39 throw new WebServiceException(WebServiceErrorCode::$RECORDNOTFOUND,"Record you are trying to access is not found"); 40 } 41 42 if($meta->hasWriteAccess()!==true){ 43 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED,"Permission to write is denied"); 44 } 45 46 $referenceFields = $meta->getReferenceFieldDetails(); 47 foreach($referenceFields as $fieldName=>$details){ 48 if(isset($element[$fieldName]) && strlen($element[$fieldName]) > 0){ 49 $ids = vtws_getIdComponents($element[$fieldName]); 50 $elemTypeId = $ids[0]; 51 $elemId = $ids[1]; 52 $referenceObject = VtigerWebserviceObject::fromId($adb,$elemTypeId); 53 if (!in_array($referenceObject->getEntityName(),$details)){ 54 throw new WebServiceException(WebServiceErrorCode::$REFERENCEINVALID, 55 "Invalid reference specified for $fieldName"); 56 } 57 if ($referenceObject->getEntityName() == 'Users') { 58 if(!$meta->hasAssignPrivilege($element[$fieldName])) { 59 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Cannot assign record to the given user"); 60 } 61 } 62 if (!in_array($referenceObject->getEntityName(), $types['types']) && $referenceObject->getEntityName() != 'Users') { 63 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, 64 "Permission to access reference type is denied ".$referenceObject->getEntityName()); 65 } 66 }else if($element[$fieldName] !== NULL){ 67 unset($element[$fieldName]); 68 } 69 } 70 71 $meta->hasMandatoryFields($element); 72 73 $ownerFields = $meta->getOwnerFields(); 74 if(is_array($ownerFields) && sizeof($ownerFields) >0){ 75 foreach($ownerFields as $ownerField){ 76 if(isset($element[$ownerField]) && $element[$ownerField]!==null && 77 !$meta->hasAssignPrivilege($element[$ownerField])){ 78 throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Cannot assign record to the given user"); 79 } 80 } 81 } 82 83 $entity = $handler->update($element); 84 VTWS_PreserveGlobal::flush(); 85 return $entity; 86 } 87 88 ?>
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 |