Sha256: 4a3cd40fe23f956d91682c56db067e0151096db34c2fcecb98069e2471d5af41

Contents?: true

Size: 1.34 KB

Versions: 6

Compression:

Stored size: 1.34 KB

Contents

module C80NewsTz

  # считает клики по баннерам
  class BannersController < ActionController::Base

    # считает клики по баннерам
    def counter

      # TODO_MY:: реализовать защиту от накручивания, быстрых повторных кликов с того же ip, левых запросов

      # params[:c] = $
      # где строка вида rb{(\d\d)}_{(\d+)}:
      #   $1: часть имени класса баннера
      #   $2: id баннера в базе

      s = params[:c]
      rex = /(?<=rb)(\d\d)_(\d+)/
      result = s[rex]

      if result.present?

        # извлекаем данные
        class_part_name = result[$1]
        banner_id = result[$2]
        Rails.logger.debug("<BannersController.counter> class_part_name = #{class_part_name}, banner_id = #{banner_id}")

        # фиксируем баннер
        b = nil
        if class_part_name == '01'
          b = Banner01.find(banner_id)
        elsif class_part_name == '02'
          b = Banner02.find(banner_id)
        elsif class_part_name == '03'
          b = Banner03.find(banner_id)
        end

        # увеличиваем счётчик на единицу
        if b.present?
          b.clicks += 1
          b.save!
        end

      end

    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
c80_news_tz-0.1.1.26 app/controllers/c80_news_tz/banners_controller.rb
c80_news_tz-0.1.1.25 app/controllers/c80_news_tz/banners_controller.rb
c80_news_tz-0.1.1.24 app/controllers/c80_news_tz/banners_controller.rb
c80_news_tz-0.1.1.23 app/controllers/c80_news_tz/banners_controller.rb
c80_news_tz-0.1.1.22 app/controllers/c80_news_tz/banners_controller.rb
c80_news_tz-0.1.1.21 app/controllers/c80_news_tz/banners_controller.rb