[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/include/Webservices/ -> Revise.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_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  ?>


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