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

storeInAliasCache() protected method

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
return 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;
    }