コード例 #1
0
    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;
    }