[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/include/events/ -> VTWSEntityType.inc (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  require_once  'include/Webservices/Utils.php';
  12  require_once ("modules/Users/Users.php");
  13  require_once ("include/Webservices/VtigerCRMObject.php");
  14  require_once ("include/Webservices/VtigerCRMObjectMeta.php");
  15  require_once ("include/Webservices/DataTransform.php");
  16  require_once ("include/Webservices/WebServiceError.php");
  17  require_once  'include/utils/utils.php';
  18  require_once  'include/Webservices/ModuleTypes.php';
  19  require_once ('include/Webservices/DescribeObject.php');
  20  require_once  'include/Webservices/WebserviceField.php';
  21  require_once  'include/Webservices/EntityMeta.php';
  22  require_once  'include/Webservices/VtigerWebserviceObject.php';
  23  
  24  /*
  25   * An implementation of VTEntityType that uses the webservices api to reflect on vtiger's types.
  26   */
  27  class VTWSEntityType{
  28      
  29  	function __construct($entityTypeName, $user){
  30          $describeResult = vtws_describe($entityTypeName, $user);
  31          //print_r($describeResult);
  32          $this->entityTypeName = $entityTypeName;
  33          $this->description = $describeResult;
  34      }
  35      
  36  	function usingGlobalCurrentUser($entityTypeName){
  37          global $current_user;
  38          return new VTWSEntityType($entityTypeName, $current_user);
  39          
  40          
  41      }
  42      
  43  	function forUser($entityTypeName, $user){
  44          return new VTWSEntityType($entityTypeName, $user);
  45      }
  46  	function getTabId(){
  47          global $adb;
  48          if(!isset($this->tabId)){
  49              $result = $adb->pquery("select tabid from vtiger_tab where name=?", 
  50                  array($this->entityTypeName));
  51              $this->tabId = $adb->query_result($result,0,"tabid");
  52          }
  53          return $this->tabId;
  54      }
  55      
  56  	function getModuleName(){
  57          return $this->moduleName;
  58      }
  59  
  60  	function getFieldNames(){
  61          if(!isset($this->fieldNames)){
  62              $fields = $this->description['fields'];
  63              $arr = array();
  64              foreach($fields as $field){
  65                  $arr[]=$field["name"];
  66              }
  67              $this->fieldNames = $arr;
  68          }
  69          return $this->fieldNames;
  70      }
  71      
  72      
  73      
  74  	function getFieldLabel($fieldName){
  75          if(!isset($this->fieldLabels)){
  76              $this->getFieldLabels();
  77          }
  78          return $this->fieldLabels[$fieldName];
  79      }
  80      
  81  	function getFieldLabels(){
  82          if(!isset($this->fieldLabels)){
  83              $fields = $this->description['fields'];
  84              foreach($fields as $field){
  85                  $this->fieldLabels[$field['name']] = $field['label'];
  86              }
  87          }
  88          return $this->fieldLabels;
  89      }
  90      
  91  	function getFieldType($fieldName){
  92          if(!isset($this->fieldTypes[$fieldName])){
  93              $fields = $this->description['fields'];
  94              foreach($fields as $field){
  95                  if($field['name']==$fieldName){
  96                      $type = $field['type'];
  97                      $et = new VTWSFieldType();
  98                      switch($type['name']){
  99                          case 'reference':
 100                              $et->type = 'Related';
 101                              $et->relatedTo = $type['refersTo'];
 102                              break;
 103                          case 'integer':
 104                              $et->type = 'Number';
 105                              $et->format = 'Integer';
 106                              break;
 107                          case 'url':
 108                              $et->type = 'Url';
 109                              break;
 110                          case 'string':
 111                              $et->type = 'String';
 112                              break;
 113                          case 'picklist':
 114                              $et->type = 'Select';
 115                              $et->values = $type['picklistValues'];
 116                              break;
 117                          case 'datetime':
 118                              $et->type = 'DateTime';
 119                              break;
 120                          case 'email':
 121                              $et->type = 'Email';
 122                              break;
 123                          case 'boolean':
 124                              $et->type = 'Boolean';
 125                              break;
 126                          case 'phone':
 127                              $et->type = 'Phone';
 128                              break;
 129                          case 'text':
 130                              $et->type = 'String';
 131                              break;
 132                          case 'a'://Autogenerated type is getting messed up for Accounts
 133                              $et->type = 'Id';
 134                              break;
 135                          case 'date':
 136                              $et->type = 'Date';
 137                              break;
 138                          case 'time':
 139                              $et->type = 'Time';
 140                              break;
 141                          case 'double':
 142                              $et->type = 'Number';
 143                              $et->format = 'Decimal';
 144                              break;
 145                          case 'autogenerated':
 146                              $et->type = 'Id';
 147                              break;
 148                          case 'owner':
 149                              $et->type = 'Owner';
 150                              break;
 151                          case 'multipicklist':
 152                              $et->type = 'Select';
 153                              $et->values = array();
 154                              break;
 155                          case 'skype':
 156                              $et->type = 'Skype';
 157                              break;
 158                          case 'password':
 159                              $et->type = 'Password';
 160                              break;
 161                          case 'decimal':
 162                              $et->type = 'Number';
 163                              $et->format = 'Decimal';
 164                              break;
 165                          case 'currency':
 166                              $et->type = 'Number';
 167                              $et->format = 'Decimal';
 168                              break;
 169                          default:    
 170                              print_r($type);
 171                              throw new Exception($type["name"]." is not supported yet.");
 172                      }
 173                      $this->fieldTypes[$fieldName] = $et;
 174                      break;
 175                  }
 176              }
 177          
 178          }
 179          return $this->fieldTypes[$fieldName];
 180      }
 181      
 182  	function getFieldTypes(){
 183          $adb = $this->adb;
 184          $fieldNames = $this->getFieldNames();
 185          $fieldTypes = array();
 186          foreach($fieldNames as $fieldName){
 187              $fieldTypes[$fieldName]=$this->getFieldType($fieldName);
 188          }
 189          return $fieldTypes;
 190      }
 191      
 192  }
 193  
 194  
 195  
 196  class VTWSFieldType{
 197  	function toArray(){
 198          $ro = new ReflectionObject($this);
 199          $props = $ro->getProperties();
 200          $arr = array();
 201          foreach($props as $prop){
 202              $arr[$prop->getName()]=$prop->getValue($this);
 203          }
 204          return $arr;
 205      }    
 206  }
 207  ?>


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