[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |