get('name'), $currentUser); if (!empty($viewId) && $viewId != "0") { $queryGenerator->initForCustomViewById($viewId); } else { $viewId = self::getDefaultViewId($moduleName); if (!empty($viewId) && $viewId != 0) { $queryGenerator->initForDefaultCustomView(); } else { $entityInstance = CRMEntity::getInstance($moduleName); $listFields = $entityInstance->list_fields_name; $listFields[] = 'id'; $queryGenerator->setFields($listFields); } } $fieldsList = $queryGenerator->getFields(); if (!empty($listHeaders) && is_array($listHeaders) && self::php7_count($listHeaders) > 0) { $fieldsList = $listHeaders; $fieldsList[] = 'id'; } $fieldsList[] = 'starred'; $queryGenerator->setFields($fieldsList); $moduleSpecificControllerPath = 'modules/' . $moduleName . '/controllers/ListViewController.php'; if (file_exists($moduleSpecificControllerPath)) { include_once $moduleSpecificControllerPath; $moduleSpecificControllerClassName = $moduleName . 'ListViewController'; $controller = new $moduleSpecificControllerClassName($db, $currentUser, $queryGenerator); } else { $controller = new ListViewController($db, $currentUser, $queryGenerator); } return $instance->set('module', $moduleModel)->set('query_generator', $queryGenerator)->set('listview_controller', $controller); } public static function getInstanceForPopup($value) { $db = PearDatabase::getInstance(); $currentUser = vglobal('current_user'); $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'ListView', $value); $instance = new $modelClassName(); $moduleModel = Vtiger_Module_Model::getInstance($value); $queryGenerator = new EnhancedQueryGenerator($moduleModel->get('name'), $currentUser); $listFields = $moduleModel->getPopupViewFieldsList(); $listFields[] = 'id'; $queryGenerator->setFields($listFields); $controller = new ListViewController($db, $currentUser, $queryGenerator); return $instance->set('module', $moduleModel)->set('query_generator', $queryGenerator)->set('listview_controller', $controller); } protected static function getDefaultViewId($moduleName) { global $adb, $current_user; $defCVResult = $adb->pquery( 'select default_cvid from vtiger_user_module_preferences where userid = ? and tabid =?', [$current_user->id, getTabid($moduleName)] ); if (0 < $adb->num_rows($defCVResult)) { $viewId = $adb->query_result($defCVResult, 0, 'default_cvid'); } else { $viewId = ''; $query = 'select cvid from vtiger_customview where setdefault=1 and entitytype=?'; $cvResult = $adb->pquery($query, [$moduleName]); if (0 < $adb->num_rows($cvResult)) { $viewId = $adb->query_result($cvResult, 0, 'cvid'); } } $customView = new CustomView($moduleName); if (!empty($viewId) || 'yes' !== $customView->isPermittedCustomView($viewId, '', $moduleName)) { $query = "select cvid from vtiger_customview where viewname='All' and entitytype=?"; $cvResult = $adb->pquery($query, [$moduleName]); $viewId = $adb->query_result($cvResult, 0, 'cvid'); } return $viewId; } protected static function php7_count($value) { // PHP 8.x does not allow count(null) or count(string) if (is_null($value)) return 0; if (!is_array($value)) return 1; return count($value); } }