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 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]);
             }
         }
     }
 }
Beispiel #3
0
 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);
 }
 function handleEvent($eventName, $entityData)
 {
     if (!in_array($eventName, ['vtiger.entity.link.after', 'vtiger.entity.unlink.after'])) {
         return;
     }
     $fields = Vtiger_MultiReferenceValue_UIType::getMultiReferenceValueFields($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']);
         }
     }
 }