DmitryDulepov\Realurl\Encoder\UrlEncoder::createAliasForValue PHP Method

createAliasForValue() protected method

Converts value to the alias
protected createAliasForValue ( string $getVarValue, array $configuration ) : string
$getVarValue string
$configuration array 'lookUpTable' configuration
return string
    protected function createAliasForValue($getVarValue, array $configuration)
    {
        $result = $getVarValue;
        // Define the language for the alias
        $languageUrlParameter = $configuration['languageGetVar'] ?: 'L';
        $languageUid = isset($this->originalUrlParameters[$languageUrlParameter]) ? (int) $this->originalUrlParameters[$languageUrlParameter] : 0;
        if (GeneralUtility::inList($configuration['languageExceptionUids'], $languageUid)) {
            $languageUid = 0;
        }
        // First, test if there is an entry in cache for the id
        if (!$configuration['useUniqueCache'] || $configuration['autoUpdate'] || !($result = $this->getFromAliasCache($configuration, $getVarValue, $languageUid))) {
            $languageEnabled = FALSE;
            $fieldList = array();
            if ($configuration['table'] === 'pages') {
                $fieldList[] = 'uid';
                $languageEnabled = TRUE;
            } elseif ($configuration['transOrigPointerField'] && $configuration['languageField']) {
                $fieldList[] = 'uid';
                $fieldList[] = $configuration['transOrigPointerField'];
                $fieldList[] = $configuration['languageField'];
                $languageEnabled = TRUE;
            }
            $fieldList[] = $configuration['alias_field'];
            $row = $this->databaseConnection->exec_SELECTgetSingleRow(implode(',', $fieldList), $configuration['table'], $configuration['id_field'] . '=' . $this->databaseConnection->fullQuoteStr($getVarValue, $configuration['table']) . ' ' . $configuration['addWhereClause']);
            if (is_array($row)) {
                // Looking for localized version
                if ($languageEnabled && $languageUid !== 0) {
                    if ($configuration['table'] === 'pages') {
                        // Note: can't use $this->pageRepository->getPageOverlay() here because 'alias_field' can be an expression
                        $localizedRow = $this->databaseConnection->exec_SELECTgetSingleRow($configuration['alias_field'], 'pages_language_overlay', 'pid=' . (int) $row['uid'] . ' AND sys_language_uid=' . $languageUid . (isset($configuration['addWhereClause']) ? $configuration['addWhereClause'] : ''));
                    } else {
                        // Note: can't use $this->pageRepository->getRecordOverlay() here because 'alias_field' can be an expression
                        $localizedRow = $this->databaseConnection->exec_SELECTgetSingleRow($configuration['alias_field'], $configuration['table'], $configuration['transOrigPointerField'] . '=' . (int) $row['uid'] . ' AND ' . $configuration['languageField'] . '=' . $languageUid . (isset($configuration['addWhereClause']) ? $configuration['addWhereClause'] : ''));
                    }
                    if (is_array($localizedRow)) {
                        $row = $localizedRow;
                    }
                }
                $maxAliasLengthLength = isset($configuration['maxLength']) ? (int) $configuration['maxLength'] : self::MAX_ALIAS_LENGTH;
                $aliasValue = substr($row[$configuration['alias_field']], 0, $maxAliasLengthLength);
                # Do not allow aliases to be empty (see issue #1)
                if (empty($aliasValue)) {
                    $aliasValue = md5($configuration['table'] . '-' . $row[$configuration['id_field']] . '-' . $languageUid);
                }
                if ($configuration['useUniqueCache']) {
                    // If cache is to be used, store the alias in the cache:
                    $result = $this->storeInAliasCache($configuration, $aliasValue, $getVarValue, $languageUid);
                } else {
                    // If no cache for alias, then just return whatever value is appropriate:
                    $result = $aliasValue;
                }
            }
        }
        return is_null($result) ? $getVarValue : $result;
    }