class SiteController

def self.cache_timeout

def self.cache_timeout
  TrustyCms::PageResponseCacheDirector.cache_timeout
end

def self.cache_timeout=(val)

def self.cache_timeout=(val)
  TrustyCms::PageResponseCacheDirector.cache_timeout = val
end

def batch_page_status_refresh

def batch_page_status_refresh
  @changed_pages = []
  @pages = Page.where({ status_id: Status[:scheduled].id })
  @pages.each do |page|
    if page.published_at <= Time.now
      page.status_id = Status[:published].id
      page.save
      @changed_pages << page.id
    end
  end
  expires_in nil, :private => true, 'no-cache' => true if @changed_pages.length > 0
end

def cacheable_request?

def cacheable_request?
  (request.head? || request.get?) && live?
end

def dev?

def dev?
  request.host == @trusty_config['dev.host'] || request.host =~ /^dev\./
end

def find_page(url)

def find_page(url)
  found = Page.find_by_path(url, live?)
  found if found && (found.published? || dev?)
end

def live?

def live?
  not dev?
end

def process_page(page)

def process_page(page)
  page.pagination_parameters = pagination_parameters
  page.process(request, response)
end

def response_cache_director(page)

def response_cache_director(page)
  klass_name = "TrustyCms::#{page.class}ResponseCacheDirector"
  begin
    klass = klass_name.constantize
  rescue NameError, LoadError
    director_klass = 'TrustyCms::PageResponseCacheDirector'
    # Rubocop: The use of eval is a serious security risk.
    # eval(%Q{class #{klass_name} < #{director_klass}; end}, TOPLEVEL_BINDING)
    klass = director_klass.constantize
  end
  klass.new(page, self)
end

def set_cache_control

def set_cache_control
  response_cache_director(@page).set_cache_control
end

def set_etag(val)

def set_etag(val)
  headers['ETag'] = val
end

def set_expiry(time, options = {})

def set_expiry(time, options = {})
  expires_in time, options
end

def show_page

def show_page
  url = params[:url]
  url = if Array === url
          url.join('/')
        else
          url.to_s
        end
  if @page = find_page(url)
    batch_page_status_refresh if url == '/' || url == ''
    # This is a bit of a hack to get Vanity URL pages working in another extension
    # In Rails 2, redirect_to halted execution, so process_page could be aliased and
    # a redirect could be used. This no longer works. There's a better fix for this,
    # but for now, anything that aliases process_page can return false if it's rendering
    # or redirecting on its own.
    return unless process_page(@page)
    set_cache_control
    @performed_render ||= true
    render layout: false
  else
    render template: 'site/not_found', status: 404, layout: false
  end
rescue Page::MissingRootPageError
  redirect_to welcome_path
end