Admin_TranslationController::getGridFilterCondition PHP Метод

getGridFilterCondition() защищенный Метод

protected getGridFilterCondition ( $tableName, $languageMode = false )
    protected function getGridFilterCondition($tableName, $languageMode = false)
    {
        $joins = [];
        $conditions = [];
        $validLanguages = $this->getUser()->getAllowedLanguagesForViewingWebsiteTranslations();
        $db = \Pimcore\Db::get();
        $conditionFilters = [];
        $filterJson = $this->getParam("filter");
        if ($filterJson) {
            $isExtJs6 = \Pimcore\Tool\Admin::isExtJS6();
            if ($isExtJs6) {
                $propertyField = "property";
                $operatorField = "operator";
            } else {
                $propertyField = "field";
                $operatorField = "comparison";
            }
            $filters = \Zend_Json::decode($filterJson);
            foreach ($filters as $filter) {
                $operator = "=";
                $field = null;
                $value = null;
                if (!$languageMode && in_array($filter[$propertyField], $validLanguages) || $languageMode && !in_array($filter[$propertyField], $validLanguages)) {
                    continue;
                }
                if ($languageMode) {
                    $fieldname = $filter[$propertyField];
                } else {
                    $fieldname = $tableName . "." . $filter[$propertyField];
                }
                if ($filter["type"] == "string") {
                    $operator = "LIKE";
                    $field = $fieldname;
                    $value = "%" . $filter["value"] . "%";
                } elseif ($filter["type"] == "date" || $isExtJs6 && in_array($fieldname, ["modificationDate", "creationdate"])) {
                    if ($filter[$operatorField] == "lt") {
                        $operator = "<";
                    } elseif ($filter[$operatorField] == "gt") {
                        $operator = ">";
                    } elseif ($filter[$operatorField] == "eq") {
                        $operator = "=";
                    }
                    $filter["value"] = strtotime($filter["value"]);
                    $field = $fieldname;
                    $value = $filter["value"];
                }
                if ($field && $value) {
                    $condition = $field . " " . $operator . " " . $db->quote($value);
                    if ($languageMode) {
                        $conditions[$filter[$propertyField]] = $condition;
                        $joins[] = ["language" => $filter[$propertyField]];
                    } else {
                        $conditionFilters[] = $condition;
                    }
                }
            }
        }
        if ($this->getParam("searchString")) {
            $filterTerm = $db->quote("%" . mb_strtolower($this->getParam("searchString")) . "%");
            $conditionFilters[] = "(lower(" . $tableName . ".key) LIKE " . $filterTerm . " OR lower(" . $tableName . ".text) LIKE " . $filterTerm . ")";
        }
        if ($languageMode) {
            $result = ["joins" => $joins, "conditions" => $conditions];
            return $result;
        } else {
            if (!empty($conditionFilters)) {
                return implode(" AND ", $conditionFilters);
            }
            return null;
        }
    }