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