/** * * @param Advertisement or AdvertisementDenormalizedProperty $advertisement */ private function invalidateAdsCache($advertisement) { $advertisementType = $advertisement->getAdvertisementType()->getId(); $memcacheKey = FrontendMemcacheKeysHelper::getAdvertisementKeyByType($advertisementType); if (!$memcacheKey) { $denormalizedAd = $advertisement instanceof AdvertisementDenormalizedProperty ? $advertisement : $this->get('services.advertisement')->getDenomralizedPropertyById($advertisement->getId()); switch ($advertisementType) { case AdvertisementTypes::SEARCH_RESULTS_SPECIALIZATION_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsSpecializationFeaturedAdsKey($denormalizedAd->getSpecializationId()); break; case AdvertisementTypes::SEARCH_RESULTS_SUBSPECIALIZATION_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsSubSpecializationFeaturedAdsKey($denormalizedAd->getSubSpecializationId()); break; case AdvertisementTypes::SEARCH_RESULTS_TREATMENT_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsTreatmentFeaturedAdsKey($denormalizedAd->getTreatmentId()); break; case AdvertisementTypes::SEARCH_RESULTS_CITY_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCityFeaturedAdsKey($denormalizedAd->getCityId()); break; case AdvertisementTypes::SEARCH_RESULTS_CITY_SPECIALIZATION_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCitySpecializationFeaturedAdsKey($denormalizedAd->getCityId(), $denormalizedAd->getSpecializationId()); break; case AdvertisementTypes::SEARCH_RESULTS_CITY_SUBSPECIALIZATION_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCitySubSpecializationFeaturedAdsKey($denormalizedAd->getCityId(), $denormalizedAd->getSubSpecializationId()); break; case AdvertisementTypes::SEARCH_RESULTS_CITY_TREATMENT_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCityTreatmentFeaturedAdsKey($denormalizedAd->getCityId(), $denormalizedAd->getTreatmentId()); break; case AdvertisementTypes::SEARCH_RESULTS_COUNTRY_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCountryFeaturedAdsKey($denormalizedAd->getCountryId()); break; case AdvertisementTypes::SEARCH_RESULTS_COUNTRY_SPECIALIZATION_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCountrySpecializationFeaturedAdsKey($denormalizedAd->getCountryId(), $denormalizedAd->getSpecializationId()); break; case AdvertisementTypes::SEARCH_RESULTS_COUNTRY_SUBSPECIALIZATION_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCountrySubSpecializationFeaturedAdsKey($denormalizedAd->getCountryId(), $denormalizedAd->getSubSpecializationId()); break; case AdvertisementTypes::SEARCH_RESULTS_COUNTRY_TREATMENT_FEATURE: $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCountryTreatmentFeaturedAdsKey($denormalizedAd->getCountryId(), $denormalizedAd->getTreatmentId()); break; } } $this->get('services.memcache')->delete($memcacheKey); }