Exemplo n.º 1
0
 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;
     }
 }
Exemplo n.º 2
0
 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;
     }
 }