/** * Function to get Relation query * @return <String> */ public function getRelationQuery() { $relationModel = $this->getRelationModel(); if (!empty($relationModel) && $relationModel->get('name') != NULL) { $recordModel = $this->getParentRecordModel(); $query = $relationModel->getQuery($recordModel, false, $this); return $query; } $searchParams = $this->get('search_params'); if (empty($searchParams)) { $searchParams = array(); } $relatedModuleModel = $this->getRelatedModuleModel(); $relatedModuleName = $relatedModuleModel->getName(); $relatedModuleBaseTable = $relatedModuleModel->basetable; $relatedModuleEntityIdField = $relatedModuleModel->basetableid; $parentModuleModel = $relationModel->getParentModuleModel(); $parentModuleBaseTable = $parentModuleModel->basetable; $parentModuleEntityIdField = $parentModuleModel->basetableid; $parentRecordId = $this->getParentRecordModel()->getId(); $parentModuleDirectRelatedField = $parentModuleModel->get('directRelatedFieldName'); $relatedModuleFields = array_keys($this->getHeaders()); $currentUserModel = Users_Record_Model::getCurrentUserModel(); $queryGenerator = new QueryGenerator($relatedModuleName, $currentUserModel); $queryGenerator->setFields($relatedModuleFields); if (count($searchParams) > 0) { $queryGenerator->parseAdvFilterList($searchParams); } $joinQuery = ' INNER JOIN ' . $parentModuleBaseTable . ' ON ' . $parentModuleBaseTable . '.' . $parentModuleDirectRelatedField . " = " . $relatedModuleBaseTable . '.' . $relatedModuleEntityIdField; $query = $queryGenerator->getQuery(); $queryComponents = spliti(' FROM ', $query); foreach ($queryComponents as $key => $val) { if ($key == 0) { $query = $queryComponents[0] . ' ,vtiger_crmentity.crmid'; } else { $query .= ' FROM ' . $val; } } $whereSplitQueryComponents = spliti(' WHERE ', $query); $query = $whereSplitQueryComponents[0] . $joinQuery; foreach ($whereSplitQueryComponents as $key => $val) { if ($key == 0) { $query .= " WHERE {$parentModuleBaseTable}.{$parentModuleEntityIdField} = {$parentRecordId} AND "; } else { $query .= $val . ' WHERE '; } } $query = trim($query, "WHERE "); return $query; }
public function addSearchConditions($query, $searchParams, $related_module) { if (!empty($searchParams)) { $currentUserModel = Users_Record_Model::getCurrentUserModel(); $queryGenerator = new QueryGenerator($related_module, $currentUserModel); $queryGenerator->parseAdvFilterList($searchParams); $where = $queryGenerator->getWhereClause(true); $query .= $where; } return $query; }