start to switch to rails 3.2.2
This commit is contained in:
parent
244942a78f
commit
74c23fa0d1
253 changed files with 648 additions and 17155 deletions
0
app/models/.gitkeep
Normal file
0
app/models/.gitkeep
Normal file
|
@ -1,54 +0,0 @@
|
|||
class Contact < ActiveRecord::Base
|
||||
|
||||
validates_length_of :nick, :within => 5..15
|
||||
validates_length_of :first_name,:last_name, :within => 3..20
|
||||
validates_length_of :email, :within => 5..50
|
||||
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
|
||||
validates_length_of :info, :maximum => 100
|
||||
validate :check_unique_nick, :on => :create
|
||||
default_scope :order => 'nick ASC'
|
||||
|
||||
belongs_to :user
|
||||
|
||||
def self.getPageForUser(user,page,sort_field,sort_dir)
|
||||
|
||||
if sort_field
|
||||
if Contact.attribute_method?(sort_field) == true
|
||||
order = sort_field
|
||||
sort_dir == 'desc' ? order += ' desc' : sort_dir
|
||||
end
|
||||
end
|
||||
|
||||
Contact.paginate :page => page , :per_page => $defaults["contacts_per_page"], :conditions=> ['user_id = ?', user.id],:order => order
|
||||
end
|
||||
|
||||
def full_name
|
||||
first_name + ' ' + last_name
|
||||
end
|
||||
|
||||
def check_unique_nick
|
||||
if !Contact.where('upper(nick) = ? and user_id = ?',nick.upcase,user_id).size.zero?
|
||||
errors.add(:nick, :not_unique)
|
||||
end
|
||||
end
|
||||
|
||||
def export
|
||||
fields = []
|
||||
fields << nick.presence || ""
|
||||
fields << first_name || ""
|
||||
fields << last_name || ""
|
||||
fields << email || ""
|
||||
fields << info || ""
|
||||
fields.join(';')
|
||||
end
|
||||
|
||||
def self.import(user,line)
|
||||
fields = line.split(/;/)
|
||||
contact = user.contacts.build( :nick => fields[0].strip,
|
||||
:first_name => fields[1].strip,
|
||||
:last_name => fields[2].strip,
|
||||
:email => fields[3].strip,
|
||||
:info => fields[4].strip)
|
||||
contact.save!
|
||||
end
|
||||
end
|
|
@ -1,146 +0,0 @@
|
|||
class Folder < ActiveRecord::Base
|
||||
|
||||
belongs_to :user
|
||||
validates_presence_of :name, :on => :create
|
||||
before_save :check_fill_params, :on => :create
|
||||
has_many :messages, :dependent => :destroy
|
||||
|
||||
SYS_NONE = 0
|
||||
SYS_TRASH = 1
|
||||
SYS_INBOX = 2
|
||||
SYS_SENT = 3
|
||||
SYS_DRAFTS = 4
|
||||
|
||||
default_scope :order => 'name asc'
|
||||
scope :shown, where(['shown = ?',true])
|
||||
scope :inbox, where(['sys = ?',SYS_INBOX])
|
||||
scope :sent, where(['sys = ?',SYS_SENT])
|
||||
scope :drafts, where(['sys = ?',SYS_DRAFTS])
|
||||
scope :trash, where(['sys = ?',SYS_TRASH])
|
||||
scope :sys, where(['sys > ?',SYS_NONE])
|
||||
|
||||
def full_name
|
||||
if parent.empty?
|
||||
name
|
||||
else
|
||||
parent + delim + name
|
||||
end
|
||||
end
|
||||
|
||||
def depth
|
||||
parent.split('.').size
|
||||
end
|
||||
|
||||
def selected?(session_folder)
|
||||
fields = session_folder.split("#")
|
||||
fields[1].nil? ? fields.insert(0,"") : fields
|
||||
(fields[1].downcase == name.downcase) && (fields[0].downcase == parent.downcase)
|
||||
end
|
||||
|
||||
def update_stats
|
||||
logger.info "MESS_BEFORE: "+messages.inspect
|
||||
unseen = messages.where(:unseen => true).count
|
||||
total = messages.count
|
||||
logger.info "MESS: "+messages.inspect
|
||||
logger.info "MESS: #{unseen} #{total}"
|
||||
update_attributes(:unseen => unseen, :total => total)
|
||||
end
|
||||
|
||||
def hasFullName?(folder_name)
|
||||
full_name.downcase == folder_name.downcase
|
||||
end
|
||||
|
||||
def isSystem?
|
||||
sys > SYS_NONE
|
||||
end
|
||||
|
||||
def isTrash?
|
||||
sys == SYS_TRASH
|
||||
end
|
||||
|
||||
def isSent?
|
||||
sys == SYS_SENT
|
||||
end
|
||||
|
||||
def isInbox?
|
||||
sys == SYS_INBOX
|
||||
end
|
||||
|
||||
def isDrafts?
|
||||
sys == SYS_DRAFTS
|
||||
end
|
||||
|
||||
def setNone
|
||||
update_attributes(:sys => SYS_NONE)
|
||||
end
|
||||
|
||||
def setTrash
|
||||
update_attributes(:sys => SYS_TRASH)
|
||||
end
|
||||
|
||||
def setSent
|
||||
update_attributes(:sys => SYS_SENT)
|
||||
end
|
||||
|
||||
def setInbox
|
||||
update_attributes(:sys => SYS_INBOX)
|
||||
end
|
||||
|
||||
def setDrafts
|
||||
update_attributes(:sys => SYS_DRAFTS)
|
||||
end
|
||||
|
||||
|
||||
|
||||
############################################## private section #####################################
|
||||
|
||||
private
|
||||
|
||||
def check_fill_params
|
||||
self.total.nil? ? self.total = 0 : self.total
|
||||
self.unseen.nil? ? self.unseen = 0 : self.unseen
|
||||
self.parent.nil? ? self.parent = "" : self.parent
|
||||
self.haschildren.nil? ? self.haschildren = false : self.haschildren
|
||||
self.delim.nil? ? self.delim = "." : self.delim
|
||||
self.sys.nil? ? self.sys = SYS_NONE : self.sys
|
||||
end
|
||||
|
||||
def self.createBulk(user,imapFolders)
|
||||
imapFolders.each do |name,data|
|
||||
data.attribs.find_index(:Haschildren).nil? ? has_children = 0 : has_children = 1
|
||||
name_fields = name.split(data.delim)
|
||||
|
||||
if name_fields.count > 1
|
||||
name = name_fields.delete_at(name_fields.size - 1)
|
||||
parent = name_fields.join(data.delim)
|
||||
else
|
||||
name = name_fields[0]
|
||||
parent = ""
|
||||
end
|
||||
|
||||
user.folders.create(
|
||||
:name => name,
|
||||
:parent => parent,
|
||||
:haschildren => has_children,
|
||||
:delim => data.delim,
|
||||
:total => data.messages,
|
||||
:unseen => data.unseen,
|
||||
:sys => SYS_NONE)
|
||||
end
|
||||
end
|
||||
|
||||
def self.find_by_full_name(data)
|
||||
folder = data.gsub(/\./,'#')
|
||||
fields = folder.split("#")
|
||||
nam = fields.delete_at(fields.size - 1)
|
||||
fields.size.zero? == true ? par = "" : par = fields.join(".")
|
||||
where(['name = ? and parent = ?',nam,par]).first
|
||||
end
|
||||
|
||||
def self.refresh(mailbox,user)
|
||||
user.folders.destroy_all
|
||||
folders=mailbox.folders
|
||||
Folder.createBulk(user,folders)
|
||||
end
|
||||
|
||||
end
|
|
@ -1,19 +0,0 @@
|
|||
class Link < ActiveRecord::Base
|
||||
validates_length_of :name, :within => 5..30
|
||||
validates_length_of :url, :within => 5..150
|
||||
validates_length_of :info, :maximum => 50
|
||||
belongs_to :user
|
||||
default_scope :order => 'name asc'
|
||||
|
||||
def self.getPageForUser(user,page,sort_field,sort_dir)
|
||||
|
||||
if sort_field
|
||||
if Link.attribute_method?(sort_field) == true
|
||||
order = sort_field
|
||||
sort_dir == 'desc' ? order += ' desc' : sort_dir
|
||||
end
|
||||
end
|
||||
|
||||
Link.paginate :page => page , :per_page => $defaults["links_per_page"], :conditions=> ['user_id = ?', user.id],:order => order
|
||||
end
|
||||
end
|
|
@ -1,72 +0,0 @@
|
|||
require 'iconv'
|
||||
require 'mail'
|
||||
|
||||
class Message < ActiveRecord::Base
|
||||
|
||||
belongs_to :user
|
||||
belongs_to :folder
|
||||
|
||||
set_primary_key :uid
|
||||
attr_accessible :unseen, :to_addr, :size, :content_type, :folder_id, :subject, :date, :uid, :from_addr, :user_id, :msg_id, :body,:cc_addr,:bcc_addr
|
||||
attr_accessor :body
|
||||
|
||||
def self.addr_to_db(addr)
|
||||
ret = ""
|
||||
name = addr.name
|
||||
name.nil? ? ret : ret << ApplicationController.decode_quoted(name)
|
||||
ret << "<" + addr.mailbox + "@" + addr.host
|
||||
ret
|
||||
end
|
||||
|
||||
def self.getPageForUser(user,folder,page,sort_field,sort_dir)
|
||||
|
||||
order = 'date desc'
|
||||
if sort_field
|
||||
if Message.attribute_method?(sort_field) == true
|
||||
order = sort_field
|
||||
sort_dir == 'desc' ? order += ' desc' : sort_dir
|
||||
end
|
||||
end
|
||||
|
||||
Message.paginate :page => page , :per_page => user.prefs.msgs_per_page.to_i, :conditions=> ['user_id = ? and folder_id = ?', user.id,folder.id],:order => order
|
||||
end
|
||||
|
||||
def self.createForUser(user,folder,message)
|
||||
|
||||
# envelope = imap_message.attr['ENVELOPE']
|
||||
#
|
||||
# envelope.from.nil? ? from = "" : from = addr_to_db(envelope.from[0])
|
||||
# envelope.to.nil? ? to = "" : to = addr_to_db(envelope.to[0])
|
||||
# envelope.subject.nil? ? subject = "" : subject = ApplicationController.decode_quoted(envelope.subject)
|
||||
|
||||
mail = Mail.new(message.attr['RFC822.HEADER'])
|
||||
|
||||
mail.date.nil? ? date = nil : date = mail.date.to_s
|
||||
mail.From.nil? ? from = nil : from = mail.From.charseted
|
||||
mail.To.nil? ? to = nil : to = mail.To.charseted
|
||||
mail.Subject.nil? ? subject = nil : subject = mail.Subject.charseted
|
||||
|
||||
#logger.custom('subject',mail.Subject.encoded)
|
||||
#logger.custom('subject',subject)
|
||||
#logger.custom('mail',mail.inspect)
|
||||
|
||||
create(
|
||||
:user_id => user.id,
|
||||
:folder_id => folder.id,
|
||||
:msg_id => mail.message_id,
|
||||
:uid => message.attr['UID'].to_i,
|
||||
:from_addr => from,
|
||||
:to_addr => to,
|
||||
:subject => subject,
|
||||
:content_type => mail.content_type,
|
||||
:date => date,
|
||||
:unseen => !(message.attr['FLAGS'].member? :Seen),
|
||||
:size => message.attr['RFC822.SIZE']
|
||||
)
|
||||
end
|
||||
|
||||
def change_folder(folder)
|
||||
update_attributes(:folder_id => folder.id)
|
||||
end
|
||||
|
||||
end
|
|
@ -1,19 +0,0 @@
|
|||
class Prefs < ActiveRecord::Base
|
||||
|
||||
validates_presence_of :theme,:locale
|
||||
|
||||
has_one :user
|
||||
|
||||
protected
|
||||
|
||||
def self.create_default(user)
|
||||
Prefs.create(:user_id => user.id,
|
||||
:theme => $defaults['theme'],
|
||||
:locale => $defaults['locale'],
|
||||
:msgs_per_page => $defaults['msgs_per_page'],
|
||||
:msg_send_type => $defaults['msg_send_type']
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
# TODO move refresh to prefs and make refresh page with messages
|
|
@ -1,41 +0,0 @@
|
|||
class Server < ActiveRecord::Base
|
||||
|
||||
validates_presence_of :name
|
||||
belongs_to :user
|
||||
#before_save :fill_params
|
||||
|
||||
def self.primary_for_imap
|
||||
where(:for_imap=>true).first
|
||||
end
|
||||
|
||||
def self.primary_for_smtp
|
||||
where(:for_smtp=>true).first
|
||||
end
|
||||
|
||||
def self.create_defaults(user)
|
||||
create( :user_id=>user.id,
|
||||
:name=>"localhost",
|
||||
:port=>$defaults['imap_port'],
|
||||
:use_ssl=>false,
|
||||
:use_tls=>false,
|
||||
:for_smtp=>false,
|
||||
:for_imap=>true
|
||||
)
|
||||
create( :user_id=>user.id,
|
||||
:name=>"localhost",
|
||||
:port=>$defaults['smtp_port'],
|
||||
:use_ssl=>false,
|
||||
:use_tls=>false,
|
||||
:for_smtp=>true,
|
||||
:for_imap=>false
|
||||
)
|
||||
end
|
||||
|
||||
# private
|
||||
|
||||
# def fill_params
|
||||
# port.nil? ? port = $defaults['imap_port'] : port
|
||||
# $defaults['imap_use_ssl'] == true ? self.use_ssl = 1 : self.use_ssl = 0
|
||||
# end
|
||||
|
||||
end
|
|
@ -1,64 +0,0 @@
|
|||
require 'ezcrypto'
|
||||
|
||||
class User < ActiveRecord::Base
|
||||
|
||||
#acts_as_notes_owner
|
||||
|
||||
validates_presence_of :first_name,:last_name
|
||||
validates_uniqueness_of :login
|
||||
has_many :servers, :dependent => :destroy
|
||||
has_one :prefs, :dependent => :destroy
|
||||
has_many :folders, :dependent => :destroy
|
||||
has_many :messages, :dependent => :destroy
|
||||
has_many :contacts, :dependent => :destroy
|
||||
has_many :links, :dependent => :destroy
|
||||
|
||||
def set_cached_password(session,password)
|
||||
if $defaults['session_encryption']
|
||||
session[:session_salt] = generate_salt
|
||||
session[:user_password] = EzCrypto::Key.encrypt_with_password($defaults['session_password'], session[:session_salt], password)
|
||||
else
|
||||
session[:user_password] = password
|
||||
end
|
||||
end
|
||||
|
||||
def get_cached_password(session)
|
||||
if $defaults['session_encryption']
|
||||
EzCrypto::Key.decrypt_with_password($defaults['session_password'], session[:session_salt], session[:user_password])
|
||||
else
|
||||
session[:user_password]
|
||||
end
|
||||
end
|
||||
|
||||
def generate_salt
|
||||
(0...8).map{65.+(rand(25)).chr}.join
|
||||
end
|
||||
|
||||
def name
|
||||
first_name + " " + last_name
|
||||
end
|
||||
|
||||
def full_id
|
||||
(name + " <" + email + ">") if email
|
||||
end
|
||||
|
||||
def email
|
||||
if login =~ /\@/
|
||||
login
|
||||
else
|
||||
(login + "@" + domain) if domain.presence
|
||||
end
|
||||
end
|
||||
|
||||
def username
|
||||
login.gsub(/\@/,"_").gsub(/\./,"_")
|
||||
end
|
||||
|
||||
def has_domain?
|
||||
return domain if domain.presence
|
||||
if login =~ /\@/
|
||||
login.split(/\@/)[1]
|
||||
end
|
||||
end
|
||||
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue