/** * * @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); }
public function renderSearchResultsFeaturedInstitutionAd($params) { if (isset($params['cityId'])) { $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCityFeaturedAdsKey($params['cityId']); } else { if (isset($params['countryId'])) { $memcacheKey = FrontendMemcacheKeysHelper::generateSearchResultsCountryFeaturedAdsKey($params['countryId']); } } $searchResultsFeaturedInstitutions = $this->memcacheService->get($memcacheKey); if (!$searchResultsFeaturedInstitutions) { if ($ads = $this->retrieverService->getSearchResultsFeaturedInstitutionByCriteria($params)) { // added quick patch for filtering out displayed results items to exclude those institutions that are in featured ad $featuredInstitutionIds = array(); foreach ($ads as $_ad) { $featuredInstitutionIds[] = $_ad->getInstitution()->getId(); } // add the ids in current session. adding as global here won't work on already loaded twig templates // https://github.com/chromedia/healthcareabroad/issues/510 $inSessionFeaturedInstitutions = $this->session->get($this->getFeaturedInstitutionsSessionKey()); $inSessionFeaturedInstitutions[$this->generateSearchResultsParametersSessionKey($params)] = $featuredInstitutionIds; $this->session->set($this->getFeaturedInstitutionsSessionKey(), $inSessionFeaturedInstitutions); $searchResultsFeaturedInstitutions = $this->twig->render('AdvertisementBundle:Frontend:searchResultsFeaturedAds.html.twig', array('featuredAds' => $ads)); $this->memcacheService->set($memcacheKey, $searchResultsFeaturedInstitutions); } } return $searchResultsFeaturedInstitutions; }