[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/include/Webservices/LineItem/ -> VtigerLineItemMeta.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  
  12  /**
  13   * Description of VtigerLineItemMeta
  14   */
  15  class VtigerLineItemMeta extends VtigerCRMActorMeta {
  16  
  17  	protected function getTableFieldList($tableName) {
  18          $tableFieldList = array();
  19  
  20          $factory = WebserviceField::fromArray($this->pearDB, array('tablename'=>$tableName));
  21          $dbTableFields = $factory->getTableFields();
  22          foreach ($dbTableFields as $dbField) {
  23              if($dbField->primary_key){
  24                  if($this->idColumn === null){
  25                      $this->idColumn = $dbField->name;
  26                  }else{
  27                      throw new WebServiceException(WebServiceErrorCode::$UNKOWNENTITY,
  28                          "Entity table with multi column primary key is not supported");
  29                  }
  30              }
  31              $field = $this->getFieldArrayFromDBField($dbField,$tableName);
  32              if(preg_match('/tax\d+/', $dbField->name) != 0){
  33                  $taxLabel = $this->getTaxLabelFromName($dbField->name);
  34                  if(!empty($taxLabel)) {
  35                      $field['fieldlabel'] = $taxLabel;
  36                  }
  37              }
  38              $webserviceField = WebserviceField::fromArray($this->pearDB,$field);
  39              $fieldDataType = $this->getFieldType($dbField,$tableName);
  40              if($fieldDataType === null){
  41                  $fieldDataType = $this->getFieldDataTypeFromDBType($dbField->type);
  42              }
  43              $webserviceField->setFieldDataType($fieldDataType);
  44              if(strcasecmp($fieldDataType,'reference') === 0){
  45                  if ($webserviceField->getFieldName() == 'parent_id') {
  46                      $webserviceField->setReferenceList(getInventoryModules());
  47                  } else {
  48                      $webserviceField->setReferenceList(array('Products','Services'));
  49                  }
  50              }
  51              array_push($tableFieldList,$webserviceField);
  52          }
  53          return $tableFieldList;
  54      }
  55  
  56  	private function getTaxLabelFromName($name){
  57          $db = PearDatabase::getInstance();
  58          $sql = 'SELECT * FROM vtiger_inventorytaxinfo WHERE taxname=? AND deleted=0';
  59          $params = array($name);
  60          $result = $db->pquery($sql, $params);
  61          $it = new SqlResultIterator($db, $result);
  62          foreach ($it as $row) {
  63              return $row->taxlabel;
  64          }
  65          return null;
  66      }
  67  
  68  	protected function getFieldArrayFromDBField($dbField, $tableName) {
  69          $mandatoryFieldList = array('parent_id', 'productid', 'quantity');
  70          $field = array();
  71          $field['fieldname'] = $dbField->name;
  72          $field['columnname'] = $dbField->name;
  73          $field['tablename'] = $tableName;
  74          $field['fieldlabel'] = str_replace('_', ' ',$dbField->name);
  75          $field['displaytype'] = 1;
  76          $field['uitype'] = 1;
  77          
  78          if($dbField->name == 'id') {
  79              $field['fieldname'] = 'parent_id';
  80              $field['fieldlabel'] = 'parent id';
  81          }
  82  
  83          $fieldDataType = $this->getFieldType($dbField,$tableName);
  84          if($fieldDataType !== null){
  85              $fieldType = $this->getTypeOfDataForType($fieldDataType);
  86          }else{
  87              $fieldType = $this->getTypeOfDataForType($dbField->type);
  88          }
  89          $typeOfData = null;
  90          $fieldName = $dbField->name;
  91          
  92          if(in_array($fieldName,$mandatoryFieldList)){
  93              $typeOfData = $fieldType.'~M';
  94          }else if(($dbField->not_null == 1 && $fieldName != 'incrementondel' 
  95                  && $dbField->primary_key != 1) || $dbField->unique_key == 1){
  96              $typeOfData = $fieldType.'~M';
  97          }else{
  98              $typeOfData = $fieldType.'~O';
  99          }
 100          $field['typeofdata'] = $typeOfData;
 101          $field['tabid'] = null;
 102          $field['fieldid'] = null;
 103          $field['masseditable'] = 0;
 104          return $field;
 105      }
 106  
 107  }
 108  ?>


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