* SPDX-License-Identifier: AGPL-3.0-only ************************************/ function vtws_delete($id,$user){ global $log,$adb; $webserviceObject = VtenextWebserviceObject::fromId($adb,$id);//crmv@207871 $handlerPath = $webserviceObject->getHandlerPath(); $handlerClass = $webserviceObject->getHandlerClass(); require_once $handlerPath; $handler = new $handlerClass($webserviceObject,$user,$adb,$log); $meta = $handler->getMeta(); $entityName = $meta->getObjectEntityName($id); $idComponents = vtws_getIdComponents($id); if(!$meta->exists($idComponents[1])){ //crmv@2390m //throw new WebServiceException(WebServiceErrorCode::$RECORDNOTFOUND,"Record you are trying to access is not found"); return $entity; //crmv@2390me } $types = vtws_listtypes(null, $user); if(!in_array($entityName,$types['types'])){ throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED,"Permission to perform the operation is denied"); } if($entityName !== $webserviceObject->getEntityName()){ throw new WebServiceException(WebServiceErrorCode::$INVALIDID,"Id specified is incorrect"); } if(!$meta->hasPermission(EntityMeta::$DELETE,$id)){ throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED,"Permission to read given object is denied"); } if($meta->hasDeleteAccess()!==true){ throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED,"Permission to delete is denied"); } $entity = $handler->delete($id); VTWS_PreserveGlobal::flush(); return $entity; } ?>