| Server IP : 138.197.176.125 / Your IP : 216.73.217.54 Web Server : Apache/2.4.41 (Ubuntu) System : Linux SuiteCRM-8 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.3.19 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/GoogleOffice365Suite/modules/CTBrowserExt1/api/ws/ |
Upload File : |
<?php
/*+*******************************************************************************
* The content of this file is subject to the CRMTiger Pro license.
* ("License"); You may not use this file except in compliance with the License
* The Initial Developer of the Original Code is vTiger
* The Modified Code of the Original Code owned by https://crmtiger.com/
* Portions created by CRMTiger.com are Copyright(C) CRMTiger.com
* All Rights Reserved.
***************************************************************************** */
//include_once dirname(__FILE__) . '/models/Alert.php';
//include_once 'include/data/CRMEntity.php';
include_once 'include/Webservices/Retrieve.php';
class CTBrowserExt_WS_RelatedModule extends CTBrowserExt_WS_Controller {
function getSearchFilterModel($module, $search) {
return CTBrowserExt_WS_SearchFilterModel::modelWithCriterias($module, Zend_JSON::decode($search));
}
function getPagingModel(CTBrowserExt_API_Request $request) {
$page = $request->get('page', 0);
return CTBrowserExt_WS_PagingModel::modelWithPageStart($page);
}
function process(CTBrowserExt_API_Request $request) {
global $adb,$site_URL, $current_user;
$current_user = $this->getActiveUser();
$record = trim($request->get('record'));
$view = trim($request->get('view'));
$moduleName = trim($request->get('module'));
$records = vtws_retrieve($record, $current_user);
$recordid = explode('x', $record);
$sql1 = "select tabid,name,tablabel from vtiger_tab where name='".$moduleName."'";
$result1 = $adb->pquery($sql1,array());
$matchtabid =$adb->query_result($result1,0,'tabid');
$parentModuleModel = Vtiger_Module_Model::getInstance($moduleName);
$relatedid = array();
if($parentModuleModel->isSummaryViewSupported() && $moduleName != 'Users'){
$relatedid[] = array('linktype'=>'DETAILVIEWTAB','moduleName' => ($moduleName)?$moduleName:'','record' => $recordid[1],'linkKey'=>'Summary','tablabel'=>vtranslate('LBL_SUMMARY', $moduleName),'img_url'=>CTBrowserExt_WS_Utils::getModuleURL('summary'));
}
$relatedid[] = array('linktype'=>'DETAILVIEWTAB','moduleName' => ($moduleName)?$moduleName:'','record' => $recordid[1],'linkKey'=>'Details','tablabel'=>vtranslate('LBL_DETAILS', $moduleName),'img_url'=>CTBrowserExt_WS_Utils::getModuleURL('details'));
if($parentModuleModel->isTrackingEnabled()) {
$relatedid[] = array('linktype'=>'DETAILVIEWTAB','moduleName' => ($moduleName)?$moduleName:'','record' => $recordid[1],'linkKey'=>'Updates','tablabel'=>vtranslate('LBL_UPDATES', $moduleName),'img_url'=>CTBrowserExt_WS_Utils::getModuleURL('update'));
}
if($moduleName == 'Emails' || $moduleName == 'Calendar'){
$response = new CTBrowserExt_API_Response();
$response->setResult($relatedid);
return $response;
}
$relationModels = $parentModuleModel->getRelations();
$parentRecordModel = Vtiger_Record_Model::getInstanceById($recordid[1], $moduleName);
$userPrivModel = Users_Privileges_Model::getInstanceById($current_user->id);
foreach($relationModels as $key => $relationModules){
$tabid = $relationModules->get('tabid');
$related_tabid = $relationModules->get('related_tabid');
$relatedmodulelabel = $relationModules->get('label');
$actions = $relationModules->get('actions');
$relatedmoduleName = $relationModules->get('relatedModuleName');
$relatedfunctionname = $relationModules->get('name');
$relation_id = $relationModules->get('relation_id');
$relation_label = $relationModules->get('label');
$relationfieldid = $relationModules->get('relationfieldid');
$relatedfieldname = "";
if($relationfieldid != 0){
$relatedFieldQuery = $adb->pquery('SELECT fieldname FROM vtiger_field WHERE fieldid = ?',array($relationfieldid));
$relatedfieldname = $adb->query_result($relatedFieldQuery,0,'fieldname');
}
$visible = $relationModules->get('presence');
if($visible != 0){
continue;
}
$detailViewLink = $site_URL."index.php?".$relationModules->getListUrl($parentRecordModel);
$detailViewLink.='&tab_label='.$relation_label;
$moduleModel = Vtiger_Module_Model::getInstance($relatedmoduleName);
$createAction = $userPrivModel->hasModuleActionPermission($moduleModel->getId(), 'CreateView');
if(($userPrivModel->isAdminUser() ||
$userPrivModel->hasGlobalReadPermission() ||
$userPrivModel->hasModulePermission($moduleModel->getId()))){
global $currentModule;
$currentModule = $moduleName;
$relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedmoduleName, $relatedmodulelabel);
$relationModel = $relationListView->getRelationModel();
$selectAction = $relationModel->isSelectActionSupported();
$query = $relationListView->getRelationQuery();
$relatedmodulelabel = vtranslate($relatedmodulelabel, $relatedmoduleName);
$moduleModel = Vtiger_Module_Model::getInstance($relatedmoduleName);
$basetableid = $moduleModel->get('basetableid');
$getfunctionres = $adb->pquery($query,array());
$numofrows2 = $adb->num_rows($getfunctionres);
$recordArray = array();
for($j=0;$j<$numofrows2;$j++){
$crmid = $adb->query_result($getfunctionres,$j,$basetableid);
if(Users_Privileges_Model::isPermitted($relatedmoduleName, 'DetailView', $crmid)){
$recordArray[] = $crmid;
}
}
if ($numofrows2 == '') {
$sql3 = "SELECT relcrmid FROM vtiger_crmentityrel INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_crmentityrel.relcrmid WHERE crmid='".$recordid[1]."' AND relmodule='".$relatedmoduleName."' AND vtiger_crmentity.deleted = 0";
$result3 = $adb->pquery($sql3,array());
$numofrows2 = $adb->num_rows($result3);
for($j=0;$j<$numofrows2;$j++){
$crmid = $adb->query_result($result3,$j,'relcrmid');
if(Users_Privileges_Model::isPermitted($relatedmoduleName, 'DetailView', $crmid)){
$recordArray[] = $crmid;
}
}
}
$isDependencyAddress = false;
if($relatedmoduleName == 'Contacts' && $moduleName == 'Accounts'){
$isDependencyAddress = true;
}else if(($relatedmoduleName == 'SalesOrder' || $relatedmoduleName == 'Quotes' || $relatedmoduleName == 'PurchaseOrder' || $relatedmoduleName == 'Invoice') && $moduleName == 'Accounts' ){
$isDependencyAddress = true;
}else if(($relatedmoduleName == 'SalesOrder' || $relatedmoduleName == 'Quotes' || $relatedmoduleName == 'PurchaseOrder' || $relatedmoduleName == 'Invoice') && $moduleName == 'Contacts'){
$isDependencyAddress = true;
}else if($relatedmoduleName == 'PurchaseOrder' && $moduleName == 'Vendors'){
$isDependencyAddress = true;
}
$numofrows2 = count($recordArray);
$createRecordUrl = $site_URL.$moduleModel->getCreateRecordUrl();
if($relatedfieldname != ''){
$createRecordUrl = $createRecordUrl.'&'.$relatedfieldname.'='.$recordid[1];
}
$relatedid[] = array('linktype'=>'DETAILVIEWRELATED','moduleName' => ($moduleName)?$moduleName:'','record' => $recordid[1],'related_tabid' => ($related_tabid)?$related_tabid:'','relatedmoduleName' => ($relatedmoduleName)?$relatedmoduleName:'','tabid' => ($tabid)?$tabid:'','tablabel'=>($relatedmodulelabel)?$relatedmodulelabel:'','numofrows'=>$numofrows2, 'actions'=>$actions,'createAction'=>$createAction,'createRecordUrl'=>$createRecordUrl,'relatedfieldname'=>$relatedfieldname,'img_url'=>CTBrowserExt_WS_Utils::getModuleURL($relatedmoduleName),'selectAction'=>$selectAction,'isDependencyAddress'=>$isDependencyAddress,'detailViewLink'=>$detailViewLink);
}
}
if(empty($relatedid)){
$relatedid = array();
}
$response = new CTBrowserExt_API_Response();
$response->setResult($relatedid);
return $response;
}
}