Пример #1
0
 /**
  * Clears URL cache if it is found in the alias table.
  *
  * @param string $tableName
  * @param int $recordId
  * @return void
  */
 protected function clearUrlCacheForAliasChanges($tableName, $recordId)
 {
     if (!preg_match('/^(?:pages|sys_|cf_)/', $tableName)) {
         $expirationTime = time() + 30 * 24 * 60 * 60;
         // This check would be sufficient for most cases but only when id_field is 'uid' in the configuration
         $result = $this->databaseConnection->sql_query('SELECT uid,expire,url_cache_id FROM ' . 'tx_realurl_uniqalias LEFT JOIN tx_realurl_uniqalias_cache_map ON uid=alias_uid ' . 'WHERE tablename=' . $this->databaseConnection->fullQuoteStr($tableName, 'tx_realurl_uniqalias') . ' ' . 'AND value_id=' . $recordId);
         while (FALSE !== ($data = $this->databaseConnection->sql_fetch_assoc($result))) {
             if ($data['url_cache_id']) {
                 $this->cache->clearUrlCacheById($data['url_cache_id']);
                 $this->databaseConnection->exec_DELETEquery('tx_realurl_uniqalias_cache_map', 'uid=' . (int) $data['uid']);
             }
             if ((int) $data['expire'] === 0) {
                 $this->databaseConnection->exec_UPDATEquery('tx_realurl_uniqalias', 'uid=' . (int) $data['uid'], array('expire' => $expirationTime));
             }
         }
         $this->databaseConnection->sql_free_result($result);
     }
 }