DmitryDulepov\Realurl\Encoder\UrlEncoder::storeInAliasCache PHP Метод

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

Adds the value to the alias cache.
protected storeInAliasCache ( array $configuration, string $newAliasValue, string $idValue, integer $languageUid ) : string
$configuration array
$newAliasValue string
$idValue string
$languageUid integer
Результат string
    protected function storeInAliasCache(array $configuration, $newAliasValue, $idValue, $languageUid)
    {
        $newAliasValue = $this->cleanUpAlias($configuration, $newAliasValue);
        if ($configuration['autoUpdate'] && $this->getFromAliasCache($configuration, $idValue, $languageUid, $newAliasValue)) {
            return $newAliasValue;
        }
        $uniqueAlias = $this->createUniqueAlias($configuration, $newAliasValue, $idValue);
        // if no unique alias was found in the process above, just suffix a hash string and assume that is unique...
        if (!$uniqueAlias) {
            $newAliasValue .= '-' . GeneralUtility::shortMD5(microtime());
            $uniqueAlias = $newAliasValue;
        }
        // Checking that this alias hasn't been stored since we looked last time
        $returnAlias = $this->getFromAliasCache($configuration, $idValue, $languageUid, $uniqueAlias);
        if ($returnAlias) {
            // If we are here it is because another process managed to create this alias in the time between we looked the first time and now when we want to put it in database.
            $uniqueAlias = $returnAlias;
        } else {
            // Expire all other aliases
            // Look for an alias based on ID
            $this->databaseConnection->exec_UPDATEquery('tx_realurl_uniqalias', 'value_id=' . $this->databaseConnection->fullQuoteStr($idValue, 'tx_realurl_uniqalias') . '
					AND field_alias=' . $this->databaseConnection->fullQuoteStr($configuration['alias_field'], 'tx_realurl_uniqalias') . '
					AND field_id=' . $this->databaseConnection->fullQuoteStr($configuration['id_field'], 'tx_realurl_uniqalias') . '
					AND tablename=' . $this->databaseConnection->fullQuoteStr($configuration['table'], 'tx_realurl_uniqalias') . '
					AND lang=' . intval($languageUid) . '
					AND expire=0', array('expire' => time() + 24 * 3600 * ($configuration['expireDays'] ? $configuration['expireDays'] : 60)));
            // Store new alias
            $insertArray = array('tablename' => $configuration['table'], 'field_alias' => $configuration['alias_field'], 'field_id' => $configuration['id_field'], 'value_alias' => $uniqueAlias, 'value_id' => $idValue, 'lang' => $languageUid);
            $this->databaseConnection->exec_INSERTquery('tx_realurl_uniqalias', $insertArray);
            $aliasRecordId = $this->databaseConnection->sql_insert_id();
            $this->usedAliases[] = $aliasRecordId;
        }
        return $uniqueAlias;
    }