[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/include/Webservices/ -> Update.php (source)

   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  ?>


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1