class QuickML::GroupSite

Attributes

key[R]
site[R]
total_file_size_exceeded[R]
total_file_size_reaching[R]

Public Class Methods

new(ml_config, sitename, test=false) click to toggle source
# File vendor/qwik/lib/qwik/group-site.rb, line 66
    def initialize(ml_config, sitename, test=false)
      @ml_config = ml_config

      if test || defined?($test) && $test
        @config = $test_config
        @memory = $test_memory
      else

=begin
        hash = {:debug=>true}

        # FIXME: Web Config should be inherited from the web server.
        f = @ml_config[:config_file].path
        if f.exist?
          config = Qwik::Config.load_config_file(f.to_s)
          hash.update(config)
        end

        @config = Qwik::Config.new
        @config.update(hash)
=end
        @config = @ml_config
        @memory = Qwik::ServerMemory.new(@config)
      end

      @sitename = sitename
      @site = @memory.farm.get_site(@sitename)
      raise 'site does not exist' if @site.nil? # Check if the site is exist.
      @key = nil
      @total_file_size_exceeded = false
      @total_file_size_reaching = false
    end

Private Class Methods

attach(site, key, filename, file_content) click to toggle source
# File vendor/qwik/lib/qwik/group-site.rb, line 173
def self.attach(site, key, filename, file_content)
  files = site.files(key)

  result_filename = files.fput(filename, file_content)
  result_filename = result_filename.to_page_charset

  addmessage = "\n{{file(#{filename})}}\n\n"
  if result_filename != filename
    addmessage = "\n{{file(#{result_filename})}}\n\n"
  end

  return addmessage
end
file_with_num(filename, num) click to toggle source
# File vendor/qwik/lib/qwik/group-site.rb, line 187
def self.file_with_num(filename, num)
  return "#{num}-#{filename}"
end

Public Instance Methods

post(mail) click to toggle source
# File vendor/qwik/lib/qwik/group-site.rb, line 103
def post(mail)
  # Parse page title.
  title = mail.get_unified_subject(@sitename)       # Get unified subject.
  page_title, tags = Qwik::Page.parse_title(title)

  page = @site.get_by_title(page_title)
  if page.nil?                      # Create a new page.
    if Qwik::Page.valid_as_pagekey?(page_title)
      page = @site.create(page_title)      # CREATE
    else
      page = @site.create_new      # CREATE
    end
    page.store('* '+title+"\n")    # Save title with tags.
  end
  @key = page.key                   # @key will be used at site_url

  # Get body text.
  now = $quickml_debug ? Time.at(0) : Time.now
  content = make_content(@key, mail, now)
  page.add(content)
end

Private Instance Methods

make_content(key, mail, now) click to toggle source
# File vendor/qwik/lib/qwik/group-site.rb, line 132
    def make_content(key, mail, now)
      content = ''
      mail_default_charset = 'ISO-2022-JP'
      site_files_total = @site.files_total
      max_total_file_size = @config[:max_total_file_size].to_i
      max_total_warn_size = @config[:max_total_warn_size].to_i

      mail.each_part {|sub_mail|
        if sub_mail.plain_text_body?
          c = sub_mail.decoded_body.normalize_eol
          charset = c.guess_charset || mail_default_charset
          c = c.set_charset(charset).to_page_charset
          content << c
        else
          filename = sub_mail.filename
          decoded_body = sub_mail.decoded_body
          if filename && decoded_body
            if max_total_file_size < site_files_total
              #do not attach file
              content << _("\nFile '%s' was not attached.\n",filename)
            else
              msg = GroupSite.attach(@site, key, filename, decoded_body)
              content << msg
              site_files_total += decoded_body.size
            end
            if max_total_file_size < site_files_total
              @total_file_size_exceeded = true
            elsif (max_total_file_size - max_total_warn_size) < site_files_total
              @total_file_size_reaching = true
            end
          end
        end
      }
      content.gsub!(/\n\n\z/, "\n")     # FIXME: Why truncate newlines?
      from = mail.mail_from
      time = now.to_i
      return "{{mail(#{from},#{time})
#{content}}}
"
    end