[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/include/Webservices/ -> ModuleTypes.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_listtypes($fieldTypeList, $user){
  12          // Bulk Save Mode: For re-using information
  13          static $webserviceEntities = false;
  14          // END
  15  
  16          static $types = array();
  17          if(!empty($fieldTypeList)) {
  18              $fieldTypeList = array_map(strtolower, $fieldTypeList);
  19              sort($fieldTypeList);
  20              $fieldTypeString = implode(',', $fieldTypeList);
  21          } else {
  22              $fieldTypeString = 'all';
  23          }
  24          if(!empty($types[$user->id][$fieldTypeString])) {
  25              return $types[$user->id][$fieldTypeString];
  26          }
  27          try{
  28              global $log;
  29              /**
  30               * @var PearDatabase
  31               */
  32              $db = PearDatabase::getInstance();
  33              
  34              vtws_preserveGlobal('current_user',$user);
  35              //get All the modules the current user is permitted to Access.
  36              $allModuleNames = getPermittedModuleNames();
  37              if(array_search('Calendar',$allModuleNames) !== false){
  38                  array_push($allModuleNames,'Events');
  39              }
  40  
  41              if(!empty($fieldTypeList)) {
  42                  $sql = "SELECT distinct(vtiger_field.tabid) as tabid FROM vtiger_field LEFT JOIN vtiger_ws_fieldtype ON ".
  43                  "vtiger_field.uitype=vtiger_ws_fieldtype.uitype
  44                   INNER JOIN vtiger_profile2field ON vtiger_field.fieldid = vtiger_profile2field.fieldid
  45                   INNER JOIN vtiger_def_org_field ON vtiger_def_org_field.fieldid = vtiger_field.fieldid
  46                   INNER JOIN vtiger_role2profile ON vtiger_profile2field.profileid = vtiger_role2profile.profileid
  47                   INNER JOIN vtiger_user2role ON vtiger_user2role.roleid = vtiger_role2profile.roleid
  48                   where vtiger_profile2field.visible=0 and vtiger_def_org_field.visible = 0
  49                   and vtiger_field.presence in (0,2)
  50                   and vtiger_user2role.userid=? and fieldtype in (".
  51                  generateQuestionMarks($fieldTypeList).')';
  52                  $params = array();
  53                  $params[] = $user->id;
  54                  foreach($fieldTypeList as $fieldType)
  55                      $params[] = $fieldType;
  56                  $result = $db->pquery($sql, $params);
  57                  $it = new SqlResultIterator($db, $result);
  58                  $moduleList = array();
  59                  foreach ($it as $row) {
  60                      $moduleList[] = getTabModuleName($row->tabid);
  61                  }
  62                  $allModuleNames = array_intersect($moduleList, $allModuleNames);
  63  
  64                  $params = $fieldTypeList;
  65  
  66                  $sql = "select name from vtiger_ws_entity inner join vtiger_ws_entity_tables on ".
  67                  "vtiger_ws_entity.id=vtiger_ws_entity_tables.webservice_entity_id inner join ".
  68                  "vtiger_ws_entity_fieldtype on vtiger_ws_entity_fieldtype.table_name=".
  69                  "vtiger_ws_entity_tables.table_name where fieldtype=(".
  70                  generateQuestionMarks($fieldTypeList).')';
  71                  $result = $db->pquery($sql, $params);
  72                  $it = new SqlResultIterator($db, $result);
  73                  $entityList = array();
  74                  foreach ($it as $row) {
  75                      $entityList[] = $row->name;
  76                  }
  77              }
  78              //get All the CRM entity names.
  79              if($webserviceEntities === false || !CRMEntity::isBulkSaveMode()) {
  80                  // Bulk Save Mode: For re-using information
  81                  $webserviceEntities = vtws_getWebserviceEntities();
  82              }
  83  
  84              $accessibleModules = array_values(array_intersect($webserviceEntities['module'],$allModuleNames));
  85              $entities = $webserviceEntities['entity'];
  86              $accessibleEntities = array();
  87              if(empty($fieldTypeList)) {
  88                  foreach($entities as $entity){
  89                      $webserviceObject = VtigerWebserviceObject::fromName($db,$entity);
  90                      $handlerPath = $webserviceObject->getHandlerPath();
  91                      $handlerClass = $webserviceObject->getHandlerClass();
  92  
  93                      require_once $handlerPath;
  94                      $handler = new $handlerClass($webserviceObject,$user,$db,$log);
  95                      $meta = $handler->getMeta();
  96                      if($meta->hasAccess()===true){
  97                          array_push($accessibleEntities,$entity);
  98                      }
  99                  }
 100              }
 101          }catch(WebServiceException $exception){
 102              throw $exception;
 103          }catch(Exception $exception){
 104              throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR,
 105                  "An Database error occured while performing the operation");
 106          }
 107          
 108          $default_language = VTWS_PreserveGlobal::getGlobal('default_language');
 109          global $current_language;
 110          if(empty($current_language)) $current_language = $default_language;
 111          $current_language = vtws_preserveGlobal('current_language',$current_language);
 112          
 113          $appStrings = return_application_language($current_language);
 114          $appListString = return_app_list_strings_language($current_language);
 115          vtws_preserveGlobal('app_strings',$appStrings);
 116          vtws_preserveGlobal('app_list_strings',$appListString);
 117          
 118          $informationArray = array();
 119          foreach ($accessibleModules as $module) {
 120              $vtigerModule = ($module == 'Events')? 'Calendar':$module;
 121              $informationArray[$module] = array('isEntity'=>true,'label'=>getTranslatedString($module,$vtigerModule),
 122                  'singular'=>getTranslatedString('SINGLE_'.$module,$vtigerModule));
 123          }
 124          
 125          foreach ($accessibleEntities as $entity) {
 126              $label = (isset($appStrings[$entity]))? $appStrings[$entity]:$entity;
 127              $singular = (isset($appStrings['SINGLE_'.$entity]))? $appStrings['SINGLE_'.$entity]:$entity;
 128              $informationArray[$entity] = array('isEntity'=>false,'label'=>$label,
 129                  'singular'=>$singular);
 130          }
 131          
 132          VTWS_PreserveGlobal::flush();
 133          $types[$user->id][$fieldTypeString] = array("types"=>array_merge($accessibleModules,$accessibleEntities),
 134              'information'=>$informationArray);
 135          return $types[$user->id][$fieldTypeString];
 136      }
 137  
 138  ?>


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