public function searchRelationValues($field, $value) { if (is_array($value)) { $result = array(); foreach ($value as $sval) { $result[] = $this->searchRelationValues($field, $sval); } return $result; } $guideId = $field->getGuideId(); if ($guideId) { if (is_numeric($value)) { return $value; } else { $sel = new umiSelection(); $sel->addObjectType($guideId); $sel->searchText($value); $result = umiSelectionsParser::runSelection($sel); return sizeof($result) ? $result : array(-1); } } else { return $value; } }
public function autoDetectFilters(umiSelection $sel, $object_type_id) { if (is_null(getRequest('search-all-text')) == false) { $searchStrings = getRequest('search-all-text'); if (is_array($searchStrings)) { foreach ($searchStrings as $searchString) { if ($searchString) { $sel->searchText($searchString); } } } } if (array_key_exists("fields_filter", $_REQUEST)) { $cmsController = cmsController::getInstance(); $data_module = $cmsController->getModule("data"); if (!$data_module) { throw new publicException("Need data module installed to use dynamic filters"); } $sel->setPropertyFilter(); $type = umiObjectTypesCollection::getInstance()->getType($object_type_id); $order_filter = getRequest('fields_filter'); if (!is_array($order_filter)) { return false; } foreach ($order_filter as $field_name => $value) { if ($field_name == "name") { $data_module->applyFilterName($sel, $value); continue; } if ($field_id = $type->getFieldId($field_name)) { $this->isSelectionFiltered = true; $field = umiFieldsCollection::getInstance()->getField($field_id); $field_type_id = $field->getFieldTypeId(); $field_type = umiFieldTypesCollection::getInstance()->getFieldType($field_type_id); $data_type = $field_type->getDataType(); switch ($data_type) { case "text": $data_module->applyFilterText($sel, $field, $value); break; case "wysiwyg": $data_module->applyFilterText($sel, $field, $value); break; case "string": $data_module->applyFilterText($sel, $field, $value); break; case "tags": $tmp = array_extract_values($value); if (empty($tmp)) { break; } case "boolean": $data_module->applyFilterBoolean($sel, $field, $value); break; case "int": $data_module->applyFilterInt($sel, $field, $value); break; case "symlink": case "relation": $data_module->applyFilterRelation($sel, $field, $value); break; case "float": $data_module->applyFilterFloat($sel, $field, $value); break; case "price": $emarket = $cmsController->getModule('emarket'); if ($emarket instanceof def_module) { $defaultCurrency = $emarket->getDefaultCurrency(); $currentCurrency = $emarket->getCurrentCurrency(); $prices = $emarket->formatCurrencyPrice($value, $defaultCurrency, $currentCurrency); foreach ($value as $index => $void) { $value[$index] = getArrayKey($prices, $index); } } $data_module->applyFilterPrice($sel, $field, $value); break; case "file": case "img_file": case "swf_file": case "boolean": $data_module->applyFilterInt($sel, $field, $value); break; case "date": $data_module->applyFilterDate($sel, $field, $value); break; default: break; } } else { continue; } } } else { return false; } }