static function getFieldValue($data, $fieldId, $lang = false) { $name = 'field_' . $fieldId; if (!array_key_exists($name, $data)) { return ''; } $model = new connectionFieldsModel(); $field = $model->getField((int) $fieldId); $lang = $lang ? $lang : Language::getActiveLanguageISO(); if ($field) { switch ($field['type']) { case 'select': $variants = $model->getLocalesVariant($fieldId, $data[$name], true); if (isset($variants[$lang])) { return $variants[$lang]; } else { return ''; } break; case 'list': $ret = array(); foreach ($data[$name] as $vart) { $variants = $model->getLocalesVariant($fieldId, $vart, true); if (isset($variants[$lang])) { $ret[] = $variants[$lang]; } } return $ret; break; default: return $data[$name]; break; } } return $data[$name]; }
private function filterCustomField($fields) { $result = array(); $model = new connectionFieldsModel(); foreach ($fields as $key => $value) { $exp = explode('_', $key); $fieldId = (int) $exp[1]; $field = $model->getField($fieldId); $type = $field['type'] == 'textarea' ? 'input' : $field['type']; switch ($type) { case 'input': $result[$key] = new MongoRegex('/' . $value . '/i'); break; case 'checkbox': $result[$key] = true; break; case 'select': if ($model->hasVariant($fieldId, $value)) { $variants = $model->getLocalesVariant($fieldId, $value); $result[$key] = array('$in' => $variants); } break; case 'list': if (is_array($value)) { $variants = array(); foreach ($value as $variant) { if ($model->hasVariant($fieldId, $variant)) { $variantsLocale = $model->getLocalesVariant($fieldId, $variant); $variants = array_merge($variants, $variantsLocale); } } if (sizeof($variants) != 0) { $result[$key] = array('$in' => $variants); } } break; } } return $result; }