function handleEvent($eventName, $entityData) { if (in_array($eventName, ['vtiger.entity.link.after', 'vtiger.entity.unlink.after'])) { $fields = Vtiger_MultiReferenceValue_UIType::getFieldsByModules($entityData['sourceModule'], $entityData['destinationModule']); foreach ($fields as $field) { $fieldModel = new Vtiger_Field_Model(); $fieldModel->initialize($field); $UITypeModel = $fieldModel->getUITypeModel(); if ($eventName == 'vtiger.entity.link.after') { $UITypeModel->addValue($entityData['CRMEntity'], $entityData['sourceRecordId'], $entityData['destinationRecordId']); } elseif ($eventName == 'vtiger.entity.unlink.after') { $UITypeModel->removeValue(CRMEntity::getInstance($entityData['sourceModule']), $entityData['sourceRecordId'], $entityData['destinationRecordId']); } } } else { if ($eventName == 'vtiger.entity.aftersave.final') { $db = PearDatabase::getInstance(); $moduleName = $entityData->getModuleName(); $modules = Vtiger_MultiReferenceValue_UIType::getRelatedModules($moduleName); foreach ($modules as $module) { $db->insert('s_yf_multireference', ['source_module' => $module, 'dest_module' => $moduleName, 'lastid' => $entityData->getId(), 'type' => 1]); } } } }
public function showAccountsList(Vtiger_Request $request) { $moduleName = $request->getModule(); $selected = $request->get('selected'); $sourceModule = $request->get('selectedModule'); $filter = $request->get('selectedFilter'); $records = []; if (empty($selected)) { return; } $multiReferenceFirld = Vtiger_MultiReferenceValue_UIType::getFieldsByModules($moduleName, $sourceModule); if (count($multiReferenceFirld) === 0) { return; } $multiReferenceFirld = reset($multiReferenceFirld); //var_dump($multiReferenceFirld); $searchParams = [['columns' => [['columnname' => $multiReferenceFirld['tablename'] . ':' . $multiReferenceFirld['columnname'] . ':' . $multiReferenceFirld['fieldname'], 'value' => implode(',', $selected), 'column_condition' => '', 'comparator' => 'c']]]]; $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('limit', 'no_limit'); $listViewModel = Vtiger_ListView_Model::getInstance('Accounts', $filter); $listViewModel->set('search_key', $multiReferenceFirld['fieldname']); $listViewModel->set('search_params', $searchParams); $listEntries = $listViewModel->getListViewEntries($pagingModel, true); if (count($listEntries) === 0) { return; } $listHeaders = $listViewModel->getListViewHeaders(); $viewer = $this->getViewer($request); $viewer->assign('ENTRIES', $listEntries); $viewer->assign('HEADERS', $listHeaders); $viewer->assign('MODULE', $moduleName); $viewer->view('AccountsList.tpl', $moduleName); }
function process(Vtiger_Request $request) { $branches = $request->get('branches'); $filter = $request->get('filter'); $category = $request->get('category'); if (empty($branches) && empty($category)) { return; } $moduleName = $request->getModule(); $viewer = $this->getViewer($request); $baseModuleName = 'Accounts'; $multiReferenceFirld = Vtiger_MultiReferenceValue_UIType::getFieldsByModules($baseModuleName, $moduleName); $multiReferenceFirld = reset($multiReferenceFirld); if (count($multiReferenceFirld) === 0) { return; } $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('limit', 'no_limit'); $listViewModel = Vtiger_ListView_Model::getInstance($baseModuleName, $filter); $queryGenerator = $listViewModel->get('query_generator'); $glue = ''; if (!empty($branches)) { if (count($queryGenerator->getWhereFields()) > 0 && count($searchParams) > 0) { $glue = QueryGenerator::$AND; } $queryGenerator->addCondition($multiReferenceFirld['columnname'], implode(',', $branches), 'c'); } if (!empty($category)) { $baseModuleId = Vtiger_Functions::getModuleId($baseModuleName); $moduleId = Vtiger_Functions::getModuleId($moduleName); $query = 'SELECT crmid FROM u_yf_crmentity_rel_tree WHERE module = ' . $baseModuleId . ' AND relmodule = ' . $moduleId . ' AND tree IN (\'' . implode("','", $category) . '\')'; if (count($queryGenerator->getWhereFields()) > 0 && count($searchParams) > 0) { $glue = QueryGenerator::$AND; } $queryGenerator->addCondition($multiReferenceFirld['columnname'], $query, 'subQuery', 'OR', true); } $listViewModel->set('query_generator', $queryGenerator); $listEntries = $listViewModel->getListViewEntries($pagingModel, true); if (count($listEntries) === 0) { return; } $listHeaders = $listViewModel->getListViewHeaders(); $viewer->assign('ENTRIES', $listEntries); $viewer->assign('HEADERS', $listHeaders); $viewer->assign('MODULE', $baseModuleName); $viewer->view('TreeRecords.tpl', $moduleName); }