public function getSearchViewList($module, $view) { $currentUser = Users_Record_Model::getCurrentUserModel(); $db = PearDatabase::getInstance(); $queryGenerator = new QueryGenerator($module, $currentUser); $meta = $queryGenerator->getMeta($module); $baseTable = $meta->getEntityBaseTable(); $tableIndexList = $meta->getEntityTableIndexList(); $baseTableIndex = $tableIndexList[$baseTable]; $queryGenerator->initForCustomViewById($view); $queryGenerator->setFields([]); $queryGenerator->setCustomColumn('userid'); $queryGenerator->setCustomFrom(['joinType' => 'INNER', 'relatedTable' => 'u_yf_crmentity_showners', 'relatedIndex' => 'crmid', 'baseTable' => $baseTable, 'baseIndex' => $baseTableIndex]); $listQuery = $queryGenerator->getQuery('SELECT DISTINCT'); $result = $db->query($listQuery); $users = $group = []; while ($id = $db->getSingleValue($result)) { $name = self::getUserName($id); if ($name !== false) { $users[$id] = $name; continue; } $name = self::getGroupName($id); if ($name !== false) { $group[$id] = $name; continue; } } asort($users); asort($group); return ['users' => $users, 'group' => $group]; }
/** * Function to get relation query for particular module with function name * @param <record> $recordId * @param <String> $functionName * @param Vtiger_Module_Model $relatedModule * @return <String> */ public function getRelationQuery($recordId, $functionName, $relatedModule, $relationModel = false) { $relatedModuleName = $relatedModule->getName(); $focus = CRMEntity::getInstance($this->getName()); $focus->id = $recordId; switch ($functionName) { case 'get_many_to_many': $query = $this->getRelationQueryM2M($recordId, $relatedModule, $relationModel); break; case 'get_activities': $query = $this->getRelationQueryForActivities($recordId, $relatedModule, $relationModel); break; default: $result = $focus->{$functionName}($recordId, $this->getId(), $relatedModule->getId()); $query = $result['query'] . ' ' . $this->getSpecificRelationQuery($relatedModuleName); break; } //modify query if any module has summary fields, those fields we are displayed in related list of that module $relatedListFields = []; if ($relationModel) { $relatedListFields = $relationModel->getRelationFields(true, true); } if (count($relatedListFields) == 0) { $relatedListFields = $relatedModule->getConfigureRelatedListFields(); if ($relatedModuleName == 'Documents') { $relatedListFields['filelocationtype'] = 'filelocationtype'; $relatedListFields['filestatus'] = 'filestatus'; } } if (count($relatedListFields) > 0) { $currentUser = Users_Record_Model::getCurrentUserModel(); $queryGenerator = new QueryGenerator($relatedModuleName, $currentUser); $queryGenerator->setFields($relatedListFields); if ($relationModel->showCreatorDetail()) { $queryGenerator->setCustomColumn('rel_created_user'); $queryGenerator->setCustomColumn('rel_created_time'); } if ($relationModel->showComment()) { $queryGenerator->setCustomColumn('rel_comment'); } $selectColumnSql = $queryGenerator->getSelectClauseColumnSQL(); $query = str_replace('FROM', 'from', $query); $newQuery = explode('from', $query); $selectColumnSql = 'SELECT DISTINCT vtiger_crmentity.crmid,' . $selectColumnSql; $query = $selectColumnSql . ' FROM ' . $newQuery[1]; } $instance = CRMEntity::getInstance($relatedModuleName); $securityParameter = $instance->getUserAccessConditionsQuerySR($relatedModuleName, false, $recordId); if ($securityParameter != '') { $query .= $securityParameter; } return $query; }
public function getUsersAndGroupForModuleList($module, $view) { $currentUser = Users_Record_Model::getCurrentUserModel(); $db = PearDatabase::getInstance(); $userEntityInfo = Vtiger_Functions::getEntityModuleInfo('Users'); $table = $userEntityInfo['tablename']; $columnsName = explode(',', $userEntityInfo['fieldname']); $queryGenerator = new QueryGenerator($module, $currentUser); $queryGenerator->initForCustomViewById($view); $queryGenerator->setFields(['assigned_user_id']); $queryGenerator->setCustomColumn('vtiger_groups.groupname'); foreach ($columnsName as &$column) { $queryGenerator->setCustomColumn($table . '.' . $column); } $listQuery = $queryGenerator->getQuery('SELECT DISTINCT'); $listQuery .= ' ORDER BY last_name ASC, first_name ASC'; $result = $db->query($listQuery); $users = $group = []; while ($row = $db->fetch_array($result)) { if (isset($row['groupname'])) { $group[$row['smownerid']] = $row['groupname']; } else { $name = ''; foreach ($columnsName as &$column) { $name .= $row[$column] . ' '; } $users[$row['smownerid']] = trim($name); } } return ['users' => $users, 'group' => $group]; }