/**
  * 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;
 }
Example #2
0
 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;
 }