public function replaceConstants($text, $constantPrefix = '{$coupon_', $userID) { $constantPrefixLenght = strlen($constantPrefix); $constantLenght = $constantPrefixLenght + 9; $offset = 0; while (($start = strpos($text, $constantPrefix, $offset)) !== false && strlen(substr($text, $start)) >= $constantLenght) { $offset = $start + $constantLenght; $couponConstant = substr($text, $start, $constantLenght); $bannerID = substr($couponConstant, $constantPrefixLenght, -1); try { $couponBanner = $this->getCouponBanner($bannerID); } catch (Gpf_Exception $e) { continue; } foreach ($this->getCoupons($bannerID, $userID) as $couponData) { $coupon = new Pap_Db_Coupon(); $coupon->fillFromRecord($couponData); if ($constantPrefix == '{$coupon_') { $couponText = $couponBanner->getCouponText($coupon); $text = str_replace($couponConstant, $couponText, $text); $offset = $start + strlen($couponText); continue; } $text = str_replace($couponConstant, $coupon->getCode(), $text); $offset = $start + strlen($coupon->getCode()); } } return $text; }