/** * @param $filterValue * @param $return * @return mixed */ protected function taxonomyValueSetter($filterValue, $return) { $return[$filterValue['fieldID']]['overwrite'] = $filterValue['set']['overwrite']; $return[$filterValue['fieldID']]['active'] = $filterValue['active']; $value = QueryModel::isValue($return[$filterValue['fieldID']]['value'], $return[$filterValue['fieldID']]['type']); if (!$value && $filterValue['active']) { $return[$filterValue['fieldID']]['value'] = $filterValue['set']['filterValue'] ? $filterValue['set']['filterValue'] : ''; $return[$filterValue['fieldID']]['operator'] = $filterValue['set']['selected_operator'] ? $filterValue['set']['selected_operator'] : ''; //exception for toggle field if (is_null(Input::get($filterValue['fieldID'])) && $return[$filterValue['fieldID']]['type'] == 'toggle_field') { $return[$filterValue['fieldID']]['value'] = $return[$filterValue['fieldID']]['value'] ? '1' : 'skip'; } } if ($filterValue['set']['overwrite']) { $return[$filterValue['fieldID']]['value'] = $filterValue['set']['filterValue'] ? $filterValue['set']['filterValue'] : ''; $return[$filterValue['fieldID']]['operator'] = $filterValue['set']['selected_operator'] ? $filterValue['set']['selected_operator'] : ''; //exception for toggle field if ($return[$filterValue['fieldID']]['type'] == 'toggle_field') { $return[$filterValue['fieldID']]['value'] = $return[$filterValue['fieldID']]['value'] == '1' ? '1' : 'skip'; } } $val = QueryModel::isValue($return[$filterValue['fieldID']]['value'], $return[$filterValue['fieldID']]['type']); if ($val) { $return[$filterValue['fieldID']]['enable'] = true; } return $return; }
/** * @param $arrFilter * @return array */ public static function generateSQLQueryFromFilterArray($arrFilter) { $qStr = ''; $qTextSearch = ''; $isFulltextSearch = false; $searchSettings = array(); QueryModel::$arrTaxonomiesFields = array(); // fix issue https://github.com/alnv/fmodul/issues/4#issuecomment-239238372 QueryModel::$strTaxonomyQuery = ''; // fix issue https://github.com/alnv/fmodul/issues/4#issuecomment-239238372 foreach ($arrFilter as $field) { if ($field['enable']) { switch ($field['type']) { case 'simple_choice': $qStr .= QueryModel::simpleChoiceQuery($field); break; case 'date_field': $qStr .= QueryModel::dateFieldQuery($field); break; case 'search_field': $qStr .= QueryModel::searchFieldQuery($field); break; case 'multi_choice': $qStr .= QueryModel::multiChoiceQuery($field); break; case 'toggle_field': $qStr .= QueryModel::toggleFieldQuery($field); break; case 'taxonomy_field': QueryModel::setupTaxonomyFieldQueryArray($field); break; case 'fulltext_search': $isValue = QueryModel::isValue($field['value']); if ($isValue) { $isFulltextSearch = true; $qTextSearch = $field['value']; $searchSettings = array('fields' => $field['fullTextSearchFields'] ? $field['fullTextSearchFields'] : 'title,description', 'orderBy' => $field['fullTextSearchOrderBy'] ? $field['fullTextSearchOrderBy'] : 'title'); } break; } } } // taxonomy query builder if (count(QueryModel::$arrTaxonomiesFields) > 0) { QueryModel::taxonomyFieldQueryBuilder(); $qStr = QueryModel::$strTaxonomyQuery; } return array('qStr' => $qStr, 'isFulltextSearch' => $isFulltextSearch, '$qTextSearch' => $qTextSearch, 'searchSettings' => $searchSettings); }