diff --git a/.rubocop.yml b/.rubocop.yml
index 3b8d266ea..bc92e3f6d 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -173,43 +173,10 @@ Style/Documentation:
Description: 'Document classes and non-namespace modules.'
Enabled: false
-Style/EmptyLineBetweenDefs:
- Description: 'Use empty lines between defs.'
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#empty-lines-between-methods'
- Enabled: false
-
Rails/ActionFilter:
Description: 'Enforces consistent use of action filter methods.'
Enabled: false
-Rails/FindBy:
- Description: 'Prefer find_by over where.first.'
- Enabled: false
-
-Style/NilComparison:
- Description: 'Prefer x.nil? to x == nil.'
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
- Enabled: false
-
-Style/SymbolProc:
- Description: 'Use symbols as procs instead of blocks when possible.'
- Enabled: false
-
-Style/RedundantBegin:
- Description: "Don't use begin blocks when they are not needed."
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#begin-implicit'
- Enabled: false
-
-Lint/UnusedBlockArgument:
- Description: 'Checks for unused block arguments.'
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars'
- Enabled: false
-
-Lint/UnusedMethodArgument:
- Description: 'Checks for unused method arguments.'
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars'
- Enabled: false
-
Style/SignalException:
Description: 'Checks for proper usage of fail and raise.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#fail-method'
@@ -223,8 +190,6 @@ Metrics/AbcSize:
Style/RedundantSelf:
Enabled: false
-Style/Next:
- Enabled: false
Style/CommentIndentation:
Enabled: false
Metrics/CyclomaticComplexity:
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 8e1692fe8..1cd46423b 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -64,6 +64,7 @@ class ApplicationController < ActionController::Base
return if !session[:user_id]
@_current_user = User.find( session[:user_id] )
end
+
def current_user_set(user)
session[:user_id] = user.id
@_current_user = user
@@ -282,97 +283,92 @@ class ApplicationController < ActionController::Base
# model helper
def model_create_render (object, params)
- begin
- # create object
- generic_object = object.new( object.param_cleanup( params[object.to_app_model_url], true ) )
+ # create object
+ generic_object = object.new( object.param_cleanup( params[object.to_app_model_url], true ) )
- # save object
- generic_object.save!
+ # save object
+ generic_object.save!
- # set relations
- generic_object.param_set_associations( params )
+ # set relations
+ generic_object.param_set_associations( params )
- model_create_render_item(generic_object)
- rescue Exception => e
- logger.error e.message
- logger.error e.backtrace.inspect
- render json: { error: e.message }, status: :unprocessable_entity
- end
+ model_create_render_item(generic_object)
+ rescue Exception => e
+ logger.error e.message
+ logger.error e.backtrace.inspect
+ render json: { error: e.message }, status: :unprocessable_entity
end
+
def model_create_render_item (generic_object)
render json: generic_object.attributes_with_associations, status: :created
end
def model_update_render (object, params)
- begin
- # find object
- generic_object = object.find( params[:id] )
+ # find object
+ generic_object = object.find( params[:id] )
- # save object
- generic_object.update_attributes!( object.param_cleanup( params[object.to_app_model_url] ) )
+ # save object
+ generic_object.update_attributes!( object.param_cleanup( params[object.to_app_model_url] ) )
- # set relations
- generic_object.param_set_associations( params )
+ # set relations
+ generic_object.param_set_associations( params )
- model_update_render_item( generic_object )
- rescue Exception => e
- logger.error e.message
- logger.error e.backtrace.inspect
- render json: { error: e.message }, status: :unprocessable_entity
- end
+ model_update_render_item( generic_object )
+ rescue Exception => e
+ logger.error e.message
+ logger.error e.backtrace.inspect
+ render json: { error: e.message }, status: :unprocessable_entity
end
+
def model_update_render_item (generic_object)
render json: generic_object.attributes_with_associations, status: :ok
end
def model_destory_render (object, params)
- begin
- generic_object = object.find( params[:id] )
- generic_object.destroy
- model_destory_render_item()
- rescue Exception => e
- logger.error e.message
- logger.error e.backtrace.inspect
- render json: { error: e.message }, status: :unprocessable_entity
- end
+ generic_object = object.find( params[:id] )
+ generic_object.destroy
+ model_destory_render_item()
+ rescue Exception => e
+ logger.error e.message
+ logger.error e.backtrace.inspect
+ render json: { error: e.message }, status: :unprocessable_entity
end
+
def model_destory_render_item ()
render json: {}, status: :ok
end
def model_show_render (object, params)
- begin
- if params[:full]
- generic_object_full = object.full( params[:id] )
- render json: generic_object_full, status: :ok
- return
- end
-
- generic_object = object.find( params[:id] )
- model_show_render_item(generic_object)
- rescue Exception => e
- logger.error e.message
- logger.error e.backtrace.inspect
- render json: { error: e.message }, status: :unprocessable_entity
+ if params[:full]
+ generic_object_full = object.full( params[:id] )
+ render json: generic_object_full, status: :ok
+ return
end
+
+ generic_object = object.find( params[:id] )
+ model_show_render_item(generic_object)
+ rescue Exception => e
+ logger.error e.message
+ logger.error e.backtrace.inspect
+ render json: { error: e.message }, status: :unprocessable_entity
end
+
def model_show_render_item (generic_object)
render json: generic_object.attributes_with_associations, status: :ok
end
- def model_index_render (object, params)
- begin
- generic_objects = object.all
- model_index_render_result( generic_objects )
- rescue Exception => e
- logger.error e.message
- logger.error e.backtrace.inspect
- render json: { error: e.message }, status: :unprocessable_entity
- end
+ def model_index_render (object, _params)
+ generic_objects = object.all
+ model_index_render_result( generic_objects )
+ rescue Exception => e
+ logger.error e.message
+ logger.error e.backtrace.inspect
+ render json: { error: e.message }, status: :unprocessable_entity
end
+
def model_index_render_result (generic_objects)
render json: generic_objects, status: :ok
end
diff --git a/app/controllers/getting_started_controller.rb b/app/controllers/getting_started_controller.rb
index c34034240..7f77410cb 100644
--- a/app/controllers/getting_started_controller.rb
+++ b/app/controllers/getting_started_controller.rb
@@ -231,30 +231,30 @@ curl http://localhost/api/v1/getting_started -v -u #{login}:#{password}
if mail_exchangers && mail_exchangers[0] && mail_exchangers[0][0]
domains.push mail_exchangers[0][0]
end
- provider_map.each {|provider, settings|
+ provider_map.each {|_provider, settings|
domains.each {|domain_to_check|
- if domain_to_check =~ /#{settings[:domain]}/i
- # probe inbound
- result = email_probe_inbound( settings[:inbound] )
- if result[:result] != 'ok'
- render json: result
- return # rubocop:disable Lint/NonLocalExitFromIterator
- end
+ next if domain_to_check !~ /#{settings[:domain]}/i
- # probe outbound
- result = email_probe_outbound( settings[:outbound], params[:email] )
- if result[:result] != 'ok'
- render json: result
- return # rubocop:disable Lint/NonLocalExitFromIterator
- end
-
- render json: {
- result: 'ok',
- setting: settings,
- }
+ # probe inbound
+ result = email_probe_inbound( settings[:inbound] )
+ if result[:result] != 'ok'
+ render json: result
return # rubocop:disable Lint/NonLocalExitFromIterator
end
+
+ # probe outbound
+ result = email_probe_outbound( settings[:outbound], params[:email] )
+ if result[:result] != 'ok'
+ render json: result
+ return # rubocop:disable Lint/NonLocalExitFromIterator
+ end
+
+ render json: {
+ result: 'ok',
+ setting: settings,
+ }
+ return # rubocop:disable Lint/NonLocalExitFromIterator
}
}
@@ -394,11 +394,12 @@ curl http://localhost/api/v1/getting_started -v -u #{login}:#{password}
logger.info "INBOUND PROBE: #{config.inspect}"
result = email_probe_inbound( config )
logger.info "INBOUND RESULT: #{result.inspect}"
- if result[:result] == 'ok'
- success = true
- settings[:inbound] = config
- break
- end
+
+ next if result[:result] != 'ok'
+
+ success = true
+ settings[:inbound] = config
+ break
}
if !success
@@ -543,11 +544,12 @@ curl http://localhost/api/v1/getting_started -v -u #{login}:#{password}
logger.info "OUTBOUND PROBE: #{config.inspect}"
result = email_probe_outbound( config, params[:email] )
logger.info "OUTBOUND RESULT: #{result.inspect}"
- if result[:result] == 'ok'
- success = true
- settings[:outbound] = config
- break
- end
+
+ next if result[:result] != 'ok'
+
+ success = true
+ settings[:outbound] = config
+ break
}
if !success
@@ -614,7 +616,7 @@ curl http://localhost/api/v1/getting_started -v -u #{login}:#{password}
end
result = email_probe_outbound( params[:outbound], params[:meta][:email], subject )
- (1..5).each {|loop|
+ (1..5).each {
sleep 10
# fetch mailbox
@@ -635,66 +637,66 @@ curl http://localhost/api/v1/getting_started -v -u #{login}:#{password}
return # rubocop:disable Lint/NonLocalExitFromIterator
end
- if found && found == 'verify ok'
+ next if !found
+ next if found != 'verify ok'
- # remember address
- address = EmailAddress.where( email: params[:meta][:email] ).first
- if !address
- address = EmailAddress.first
- end
- if address
- address.update_attributes(
- realname: params[:meta][:realname],
- email: params[:meta][:email],
- active: 1,
- updated_by_id: 1,
- created_by_id: 1,
- )
- else
- EmailAddress.create(
- realname: params[:meta][:realname],
- email: params[:meta][:email],
- active: 1,
- updated_by_id: 1,
- created_by_id: 1,
- )
- end
-
- # store mailbox
- Channel.create(
- area: 'Email::Inbound',
- adapter: params[:inbound][:adapter],
- options: params[:inbound][:options],
- group_id: 1,
+ # remember address
+ address = EmailAddress.where( email: params[:meta][:email] ).first
+ if !address
+ address = EmailAddress.first
+ end
+ if address
+ address.update_attributes(
+ realname: params[:meta][:realname],
+ email: params[:meta][:email],
+ active: 1,
+ updated_by_id: 1,
+ created_by_id: 1,
+ )
+ else
+ EmailAddress.create(
+ realname: params[:meta][:realname],
+ email: params[:meta][:email],
active: 1,
updated_by_id: 1,
created_by_id: 1,
)
-
- # save settings
- if params[:outbound][:adapter] =~ /^smtp$/i
- smtp = Channel.where( adapter: 'SMTP', area: 'Email::Outbound' ).first
- smtp.options = params[:outbound][:options]
- smtp.active = true
- smtp.save!
- sendmail = Channel.where( adapter: 'Sendmail' ).first
- sendmail.active = false
- sendmail.save!
- else
- sendmail = Channel.where( adapter: 'Sendmail', area: 'Email::Outbound' ).first
- sendmail.options = {}
- sendmail.active = true
- sendmail.save!
- smtp = Channel.where( adapter: 'SMTP' ).first
- smtp.active = false
- smtp.save
- end
-
- render json: {
- result: 'ok',
- }
- return # rubocop:disable Lint/NonLocalExitFromIterator
end
+
+ # store mailbox
+ Channel.create(
+ area: 'Email::Inbound',
+ adapter: params[:inbound][:adapter],
+ options: params[:inbound][:options],
+ group_id: 1,
+ active: 1,
+ updated_by_id: 1,
+ created_by_id: 1,
+ )
+
+ # save settings
+ if params[:outbound][:adapter] =~ /^smtp$/i
+ smtp = Channel.where( adapter: 'SMTP', area: 'Email::Outbound' ).first
+ smtp.options = params[:outbound][:options]
+ smtp.active = true
+ smtp.save!
+ sendmail = Channel.where( adapter: 'Sendmail' ).first
+ sendmail.active = false
+ sendmail.save!
+ else
+ sendmail = Channel.where( adapter: 'Sendmail', area: 'Email::Outbound' ).first
+ sendmail.options = {}
+ sendmail.active = true
+ sendmail.save!
+ smtp = Channel.where( adapter: 'SMTP' ).first
+ smtp.active = false
+ smtp.save
+ end
+
+ render json: {
+ result: 'ok',
+ }
+ return # rubocop:disable Lint/NonLocalExitFromIterator
}
# check delivery for 30 sek.
@@ -767,15 +769,16 @@ curl http://localhost/api/v1/getting_started -v -u #{login}:#{password}
white_map = {
'Recipient address rejected' => true,
}
- white_map.each {|key, message|
- if e.message =~ /#{Regexp.escape(key)}/i
- result = {
- result: 'ok',
- settings: params,
- notice: e.message,
- }
- return result
- end
+ white_map.each {|key, _message|
+
+ next if e.message !~ /#{Regexp.escape(key)}/i
+
+ result = {
+ result: 'ok',
+ settings: params,
+ notice: e.message,
+ }
+ return result
}
end
message_human = ''
diff --git a/app/controllers/long_polling_controller.rb b/app/controllers/long_polling_controller.rb
index 302d49fdd..c09c2cd18 100644
--- a/app/controllers/long_polling_controller.rb
+++ b/app/controllers/long_polling_controller.rb
@@ -112,7 +112,7 @@ class LongPollingController < ApplicationController
begin
# update last ping
- 4.times {|loop|
+ 4.times {
sleep 0.25
}
#sleep 1
@@ -128,7 +128,7 @@ class LongPollingController < ApplicationController
render json: queue
return
end
- 8.times {|loop|
+ 8.times {
sleep 0.25
}
#sleep 2
diff --git a/app/controllers/rss_controller.rb b/app/controllers/rss_controller.rb
index 256505bdb..832124e3a 100644
--- a/app/controllers/rss_controller.rb
+++ b/app/controllers/rss_controller.rb
@@ -20,7 +20,7 @@ curl http://localhost/api/v1/rss_fetch.json -v -u #{login}:#{password} -H "Conte
def fetch
items = Rss.fetch(params[:url], params[:limit])
- if items == nil
+ if items.nil?
render json: { message: "failed to fetch #{ params[:url] }", status: :unprocessable_entity }
return
end
diff --git a/app/controllers/sessions/collection_network.rb b/app/controllers/sessions/collection_network.rb
index 4a6d8d579..d50c98fdc 100644
--- a/app/controllers/sessions/collection_network.rb
+++ b/app/controllers/sessions/collection_network.rb
@@ -1,7 +1,7 @@
# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
module ExtraCollection
- def session( collections, assets, user )
+ def session( collections, assets, _user )
collections[ Network.to_app_model ] = Network.all
collections[ Network::Category.to_app_model ] = Network::Category.all
diff --git a/app/models/application_model.rb b/app/models/application_model.rb
index caee214d1..bd23ebfb0 100644
--- a/app/models/application_model.rb
+++ b/app/models/application_model.rb
@@ -69,7 +69,7 @@ returns
def self.param_cleanup(params, newObject = false)
- if params == nil
+ if params.nil?
raise "No params for #{self}!"
end
@@ -107,17 +107,18 @@ returns
# set relations
self.class.reflect_on_all_associations.map { |assoc|
real_key = assoc.name.to_s[0, assoc.name.to_s.length - 1] + '_ids'
- if params.key?( real_key.to_sym )
- list_of_items = params[ real_key.to_sym ]
- if params[ real_key.to_sym ].class != Array
- list_of_items = [ params[ real_key.to_sym ] ]
- end
- list = []
- list_of_items.each {|item|
- list.push( assoc.klass.find(item) )
- }
- self.send( assoc.name.to_s + '=', list )
+
+ next if !params.key?( real_key.to_sym )
+
+ list_of_items = params[ real_key.to_sym ]
+ if params[ real_key.to_sym ].class != Array
+ list_of_items = [ params[ real_key.to_sym ] ]
end
+ list = []
+ list_of_items.each {|item|
+ list.push( assoc.klass.find(item) )
+ }
+ self.send( assoc.name.to_s + '=', list )
}
end
@@ -311,7 +312,7 @@ returns
cache = self.cache_get( data[:id] )
return cache if cache
- record = self.where( id: data[:id] ).first
+ record = self.find_by( id: data[:id] )
self.cache_set( data[:id], record )
return record
elsif data[:name]
@@ -357,7 +358,7 @@ returns
def self.create_if_not_exists(data)
if data[:id]
- record = self.where( id: data[:id] ).first
+ record = self.find_by( id: data[:id] )
return record if record
elsif data[:name]
records = self.where( name: data[:name] )
@@ -458,6 +459,7 @@ end
def latest_change_set_from_observer
self.class.latest_change_set(self.updated_at)
end
+
def latest_change_set_from_observer_destroy
self.class.latest_change_set(nil)
end
@@ -466,7 +468,7 @@ end
key = "#{self.new.class.name}_latest_change"
expires_in = 31_536_000 # 1 year
- if updated_at == nil
+ if updated_at.nil?
Cache.delete( key )
else
Cache.write( key, updated_at, { expires_in: expires_in } )
@@ -760,7 +762,7 @@ log object update activity stream, if configured - will be executed automaticall
end
log = false
- self.changes.each {|key, value|
+ self.changes.each {|key, _value|
# do not log created_at and updated_at attributes
next if ignore_attributes[key.to_sym] == true
@@ -1029,6 +1031,7 @@ get assets of object list
def attachments_buffer
@attachments_buffer_data
end
+
def attachments_buffer=(attachments)
@attachments_buffer_data = attachments
end
@@ -1036,7 +1039,7 @@ get assets of object list
def attachments_buffer_check
# do nothing if no attachment exists
- return 1 if attachments_buffer == nil
+ return 1 if attachments_buffer.nil?
# store attachments
article_store = []
diff --git a/app/models/authorization.rb b/app/models/authorization.rb
index 53c5e13a2..2206df77d 100644
--- a/app/models/authorization.rb
+++ b/app/models/authorization.rb
@@ -10,7 +10,7 @@ class Authorization < ApplicationModel
validates :provider, presence: true
def self.find_from_hash(hash)
- auth = Authorization.where( provider: hash['provider'], uid: hash['uid'] ).first
+ auth = Authorization.find_by( provider: hash['provider'], uid: hash['uid'] )
if auth
# update auth tokens
diff --git a/app/models/avatar.rb b/app/models/avatar.rb
index 2b6287205..a95cb0609 100644
--- a/app/models/avatar.rb
+++ b/app/models/avatar.rb
@@ -89,11 +89,11 @@ add a avatar
# check if avatar with url already exists
avatar_already_exists = nil
if data[:source] && !data[:source].empty?
- avatar_already_exists = Avatar.where(
+ avatar_already_exists = Avatar.find_by(
object_lookup_id: object_id,
o_id: data[:o_id],
source: data[:source],
- ).first
+ )
end
# fetch image
@@ -208,11 +208,11 @@ set avatars as default
def self.set_default( object_name, o_id, avatar_id )
object_id = ObjectLookup.by_name( object_name )
- avatar = Avatar.where(
+ avatar = Avatar.find_by(
object_lookup_id: object_id,
o_id: o_id,
id: avatar_id,
- ).first
+ )
avatar.default = true
avatar.save!
@@ -308,9 +308,9 @@ returns:
=end
def self.get_by_hash(hash)
- avatar = Avatar.where(
+ avatar = Avatar.find_by(
store_hash: hash,
- ).first
+ )
return if !avatar
file = Store.find(avatar.store_resize_id)
end
@@ -329,11 +329,11 @@ returns:
def self.get_default(object_name, o_id)
object_id = ObjectLookup.by_name( object_name )
- Avatar.where(
+ Avatar.find_by(
object_lookup_id: object_id,
o_id: o_id,
default: true,
- ).first
+ )
end
def self.set_default_items(object_id, o_id, avatar_id)
diff --git a/app/models/channel/email_parser.rb b/app/models/channel/email_parser.rb
index 4491f8241..1d782241b 100644
--- a/app/models/channel/email_parser.rb
+++ b/app/models/channel/email_parser.rb
@@ -66,35 +66,37 @@ class Channel::EmailParser
# set all headers
mail.header.fields.each { |field|
- if field.name
- # full line, encode, ready for storage
- data[field.name.to_s.downcase.to_sym] = Encode.conv( 'utf8', field.to_s )
+ next if !field.name
- # if we need to access the lines by objects later again
- data[ "raw-#{field.name.downcase}".to_sym ] = field
- end
+ # full line, encode, ready for storage
+ data[field.name.to_s.downcase.to_sym] = Encode.conv( 'utf8', field.to_s )
+
+ # if we need to access the lines by objects later again
+ data[ "raw-#{field.name.downcase}".to_sym ] = field
}
# get sender
from = nil
['from', 'reply-to', 'return-path'].each { |item|
- if !from
- if mail[ item.to_sym ]
- from = mail[ item.to_sym ].value
- end
- end
+
+ next if !mail[ item.to_sym ]
+
+ from = mail[ item.to_sym ].value
+
+ break if from
}
# set x-any-recipient
data['x-any-recipient'.to_sym] = ''
['to', 'cc', 'delivered-to', 'x-original-to', 'envelope-to'].each { |item|
- if mail[item.to_sym]
- if data['x-any-recipient'.to_sym] != ''
- data['x-any-recipient'.to_sym] += ', '
- end
- data['x-any-recipient'.to_sym] += mail[item.to_sym].to_s
+
+ next if !mail[item.to_sym]
+
+ if data['x-any-recipient'.to_sym] != ''
+ data['x-any-recipient'.to_sym] += ', '
end
+ data['x-any-recipient'.to_sym] += mail[item.to_sym].to_s
}
# set extra headers
@@ -333,7 +335,7 @@ class Channel::EmailParser
}
# filter( channel, mail )
- filters.each {|prio, backend|
+ filters.each {|_prio, backend|
begin
backend.run( channel, mail )
rescue Exception => e
@@ -358,10 +360,10 @@ class Channel::EmailParser
# create sender
if mail[ 'x-zammad-customer-login'.to_sym ]
- user = User.where( login: mail[ 'x-zammad-customer-login'.to_sym ] ).first
+ user = User.find_by( login: mail[ 'x-zammad-customer-login'.to_sym ] )
end
if !user
- user = User.where( email: mail[ 'x-zammad-customer-email'.to_sym ] || mail[:from_email] ).first
+ user = User.find_by( email: mail[ 'x-zammad-customer-email'.to_sym ] || mail[:from_email] )
end
if !user
user = user_create(
@@ -374,16 +376,18 @@ class Channel::EmailParser
# create to and cc user
['raw-to', 'raw-cc'].each { |item|
- if mail[item.to_sym] && mail[item.to_sym].tree
- items = mail[item.to_sym].tree
- items.addresses.each {|item|
- user_create(
- firstname: item.display_name,
- lastname: '',
- email: item.address,
- )
- }
- end
+
+ next if !mail[item.to_sym]
+ next if !mail[item.to_sym].tree
+
+ items = mail[item.to_sym].tree
+ items.addresses.each {|item|
+ user_create(
+ firstname: item.display_name,
+ lastname: '',
+ email: item.address,
+ )
+ }
}
# set current user
@@ -403,7 +407,7 @@ class Channel::EmailParser
end
if state_type.name != 'new'
- ticket.state = Ticket::State.where( name: 'open' ).first
+ ticket.state = Ticket::State.find_by( name: 'open' )
ticket.save
end
end
@@ -416,8 +420,8 @@ class Channel::EmailParser
group_id: channel[:group_id] || 1,
customer_id: user.id,
title: mail[:subject] || '',
- state_id: Ticket::State.where( name: 'new' ).first.id,
- priority_id: Ticket::Priority.where( name: '2 normal' ).first.id,
+ state_id: Ticket::State.find_by( name: 'new' ).id,
+ priority_id: Ticket::Priority.find_by( name: '2 normal' ).id,
)
set_attributes_by_x_headers( ticket, 'ticket', mail )
@@ -431,8 +435,8 @@ class Channel::EmailParser
# set attributes
article = Ticket::Article.new(
ticket_id: ticket.id,
- type_id: Ticket::Article::Type.where( name: 'email' ).first.id,
- sender_id: Ticket::Article::Sender.where( name: 'Customer' ).first.id,
+ type_id: Ticket::Article::Type.find_by( name: 'email' ).id,
+ sender_id: Ticket::Article::Sender.find_by( name: 'Customer' ).id,
body: mail[:body],
from: mail[:from],
to: mail[:to],
@@ -480,7 +484,7 @@ class Channel::EmailParser
}
# filter( channel, mail )
- filters.each {|prio, backend|
+ filters.each {|_prio, backend|
begin
backend.run( channel, mail, ticket, article, user )
rescue Exception => e
@@ -496,7 +500,7 @@ class Channel::EmailParser
def user_create(data)
# return existing
- user = User.where( login: data[:email].downcase ).first
+ user = User.find_by( login: data[:email].downcase )
return user if user
# create new user
@@ -504,7 +508,7 @@ class Channel::EmailParser
# fillup
%w(firstname lastname).each { |item|
- if data[item.to_sym] == nil
+ if data[item.to_sym].nil?
data[item.to_sym] = ''
end
}
@@ -525,7 +529,7 @@ class Channel::EmailParser
def set_attributes_by_x_headers( item_object, header_name, mail )
# loop all x-zammad-hedaer-* headers
- item_object.attributes.each {|key, value|
+ item_object.attributes.each {|key, _value|
# ignore read only attributes
next if key == 'updated_at'
@@ -541,18 +545,19 @@ class Channel::EmailParser
if mail[ header.to_sym ]
Rails.logger.info "header #{header} found #{mail[ header.to_sym ]}"
item_object.class.reflect_on_all_associations.map { |assoc|
- if assoc.name.to_s == key_short
- Rails.logger.info "ASSOC found #{assoc.class_name} lookup #{mail[ header.to_sym ]}"
- item = assoc.class_name.constantize
- if item.respond_to?(:name)
- if item.lookup( name: mail[ header.to_sym ] )
- item_object[key] = item.lookup( name: mail[ header.to_sym ] ).id
- end
- elsif item.respond_to?(:login)
- if item.lookup( login: mail[ header.to_sym ] )
- item_object[key] = item.lookup( login: mail[ header.to_sym ] ).id
- end
+ next if assoc.name.to_s != key_short
+
+ Rails.logger.info "ASSOC found #{assoc.class_name} lookup #{mail[ header.to_sym ]}"
+ item = assoc.class_name.constantize
+
+ if item.respond_to?(:name)
+ if item.lookup( name: mail[ header.to_sym ] )
+ item_object[key] = item.lookup( name: mail[ header.to_sym ] ).id
+ end
+ elsif item.respond_to?(:login)
+ if item.lookup( login: mail[ header.to_sym ] )
+ item_object[key] = item.lookup( login: mail[ header.to_sym ] ).id
end
end
}
diff --git a/app/models/channel/email_send.rb b/app/models/channel/email_send.rb
index 54fc83654..38acfd626 100644
--- a/app/models/channel/email_send.rb
+++ b/app/models/channel/email_send.rb
@@ -4,7 +4,7 @@ require 'net/imap'
module Channel::EmailSend
def self.send(attr, notification = false)
- channel = Channel.where( area: 'Email::Outbound', active: true ).first
+ channel = Channel.find_by( area: 'Email::Outbound', active: true )
begin
c = eval 'Channel::' + channel[:adapter] + '.new'
c.send(attr, channel, notification)
diff --git a/app/models/channel/filter/database.rb b/app/models/channel/filter/database.rb
index 980cc1b6b..a03a2ee1e 100644
--- a/app/models/channel/filter/database.rb
+++ b/app/models/channel/filter/database.rb
@@ -3,16 +3,16 @@
# process all database filter
module Channel::Filter::Database
- def self.run( channel, mail )
+ def self.run( _channel, mail )
# process postmaster filter
filters = PostmasterFilter.where( active: true, channel: 'email' )
filters.each {|filter|
Rails.logger.info " proccess filter #{filter.name} ..."
match = true
- loop = false
+ looped = false
filter[:match].each {|key, value|
- loop = true
+ looped = true
begin
scan = []
if mail
@@ -31,12 +31,14 @@ module Channel::Filter::Database
Rails.logger.error e.inspect
end
}
- if loop && match
- filter[:perform].each {|key, value|
- Rails.logger.info " perform '#{ key.downcase }' = '#{value}'"
- mail[ key.downcase.to_sym ] = value
- }
- end
+
+ next if !looped
+ next if !match
+
+ filter[:perform].each {|key, value|
+ Rails.logger.info " perform '#{ key.downcase }' = '#{value}'"
+ mail[ key.downcase.to_sym ] = value
+ }
}
end
diff --git a/app/models/channel/filter/trusted.rb b/app/models/channel/filter/trusted.rb
index e37cb12bb..131b3371a 100644
--- a/app/models/channel/filter/trusted.rb
+++ b/app/models/channel/filter/trusted.rb
@@ -7,10 +7,11 @@ module Channel::Filter::Trusted
# check if trust x-headers
if !channel[:trusted]
- mail.each {|key, value|
- if key =~ /^x-zammad/i
- mail.delete(key)
- end
+ mail.each {|key, _value|
+
+ next if key !~ /^x-zammad/i
+
+ mail.delete(key)
}
end
diff --git a/app/models/channel/sendmail.rb b/app/models/channel/sendmail.rb
index 21b81426a..e0ce4cc93 100644
--- a/app/models/channel/sendmail.rb
+++ b/app/models/channel/sendmail.rb
@@ -1,7 +1,7 @@
# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
class Channel::Sendmail
- def send(attr, channel, notification = false)
+ def send(attr, _channel, notification = false)
# return if we run import mode
return if Setting.get('import_mode')
diff --git a/app/models/channel/twitter2.rb b/app/models/channel/twitter2.rb
index 82b800e81..cb71db0d1 100644
--- a/app/models/channel/twitter2.rb
+++ b/app/models/channel/twitter2.rb
@@ -75,7 +75,7 @@ class Channel::TWITTER2
all_tweets.each do |tweet|
# check if tweet is already imported
- article = Ticket::Article.where( message_id: tweet.id.to_s ).first
+ article = Ticket::Article.find_by( message_id: tweet.id.to_s )
# check if sender already exists
next if article
@@ -137,15 +137,15 @@ class Channel::TWITTER2
[user, ticket, article]
end
- def fetch_user_create(tweet, sender)
+ def fetch_user_create(_tweet, sender)
# create sender in db
# puts tweet.inspect
# user = User.where( :login => tweet.sender.screen_name ).first
- auth = Authorization.where( uid: sender.id, provider: 'twitter' ).first
+ auth = Authorization.find_by( uid: sender.id, provider: 'twitter' )
user = nil
if auth
Rails.logger.info 'user_id', auth.user_id
- user = User.where( id: auth.user_id ).first
+ user = User.find_by( id: auth.user_id )
end
if !user
Rails.logger.info 'create user...'
@@ -180,13 +180,13 @@ class Channel::TWITTER2
user
end
- def fetch_ticket_create(user, tweet, sender, channel, group)
+ def fetch_ticket_create(user, tweet, _sender, _channel, group)
#Rails.logger.info '+++++++++++++++++++++++++++' + tweet.inspect
# check if ticket exists
if tweet.respond_to?('in_reply_to_status_id') && tweet.in_reply_to_status_id && tweet.in_reply_to_status_id.to_s != ''
Rails.logger.info 'tweet.in_reply_to_status_id found: ' + tweet.in_reply_to_status_id.to_s
- article = Ticket::Article.where( message_id: tweet.in_reply_to_status_id.to_s ).first
+ article = Ticket::Article.find_by( message_id: tweet.in_reply_to_status_id.to_s )
if article
Rails.logger.info 'article with id found tweet.in_reply_to_status_id found: ' + tweet.in_reply_to_status_id.to_s
return article.ticket
@@ -194,14 +194,14 @@ class Channel::TWITTER2
end
# find if record already exists
- article = Ticket::Article.where( message_id: tweet.id.to_s ).first
+ article = Ticket::Article.find_by( message_id: tweet.id.to_s )
if article
return article.ticket
end
ticket = nil
if @article_type == 'twitter direct-message'
- ticket = Ticket.where( customer_id: user.id ).first
+ ticket = Ticket.find_by( customer_id: user.id )
if ticket
state_type = Ticket::StateType.where( ticket.state.state_type_id )
if state_type.name == 'closed' || state_type.name == 'closed'
@@ -210,17 +210,17 @@ class Channel::TWITTER2
end
end
if !ticket
- group = Group.where( name: group ).first
+ group = Group.find_by( name: group )
group_id = 1
if group
group_id = group.id
end
- state = Ticket::State.where( name: 'new' ).first
+ state = Ticket::State.find_by( name: 'new' )
state_id = 1
if state
state_id = state.id
end
- priority = Ticket::Priority.where( name: '2 normal' ).first
+ priority = Ticket::Priority.find_by( name: '2 normal' )
priority_id = 1
if priority
priority_id = priority.id
@@ -237,15 +237,15 @@ class Channel::TWITTER2
ticket
end
- def fetch_article_create( user, ticket, tweet, sender )
+ def fetch_article_create( _user, ticket, tweet, sender )
# find if record already exists
- article = Ticket::Article.where( message_id: tweet.id.to_s ).first
+ article = Ticket::Article.find_by( message_id: tweet.id.to_s )
return article if article
# set ticket state to open if not new
if ticket.state.name != 'new'
- ticket.state = Ticket::State.where( name: 'open' ).first
+ ticket.state = Ticket::State.find_by( name: 'open' )
ticket.save
end
@@ -257,8 +257,8 @@ class Channel::TWITTER2
article = Ticket::Article.create(
ticket_id: ticket.id,
- type_id: Ticket::Article::Type.where( name: @article_type ).first.id,
- sender_id: Ticket::Article::Sender.where( name: 'Customer' ).first.id,
+ type_id: Ticket::Article::Type.find_by( name: @article_type ).id,
+ sender_id: Ticket::Article::Sender.find_by( name: 'Customer' ).id,
body: tweet.text,
from: sender.name,
to: to,
@@ -268,9 +268,9 @@ class Channel::TWITTER2
end
- def send(attr, notification = false)
+ def send(attr, _notification = false)
# Rails.logger.debug('tweeeeettttt!!!!!!')
- channel = Channel.where( area: 'Twitter::Inbound', active: true ).first
+ channel = Channel.find_by( area: 'Twitter::Inbound', active: true )
client = Twitter::REST::Client.new do |config|
config.consumer_key = channel[:options][:consumer_key]
diff --git a/app/models/history.rb b/app/models/history.rb
index 0526bb93b..1b7005486 100644
--- a/app/models/history.rb
+++ b/app/models/history.rb
@@ -76,7 +76,7 @@ add a new history entry for an object
}
history_record = nil
if data[:id]
- history_record = History.where( id: data[:id] ).first
+ history_record = History.find_by( id: data[:id] )
end
if history_record
history_record.update_attributes(record)
@@ -98,7 +98,7 @@ remove whole history entries of an object
=end
def self.remove( requested_object, requested_object_id )
- history_object = History::Object.where( name: requested_object ).first
+ history_object = History::Object.find_by( name: requested_object )
return if !history_object
History.where(
history_object_id: history_object.id,
@@ -185,11 +185,11 @@ returns
data.delete('history_attribute_id')
data.delete( 'updated_at' )
- if data['id_to'] == nil && data['id_from'] == nil
+ if data['id_to'].nil? && data['id_from'].nil?
data.delete( 'id_to' )
data.delete( 'id_from' )
end
- if data['value_to'] == nil && data['value_from'] == nil
+ if data['value_to'].nil? && data['value_from'].nil?
data.delete( 'value_to' )
data.delete( 'value_from' )
end
@@ -198,7 +198,7 @@ returns
end
data.delete( 'related_history_object_id' )
- if data['related_o_id'] == nil
+ if data['related_o_id'].nil?
data.delete( 'related_o_id' )
end
diff --git a/app/models/link.rb b/app/models/link.rb
index 57377ec82..53b521558 100644
--- a/app/models/link.rb
+++ b/app/models/link.rb
@@ -130,9 +130,7 @@ class Link < ApplicationModel
link_object_target_id: data[:link_object_target_id],
link_object_target_value: data[:link_object_target_value]
)
- links.each { |link|
- link.destroy
- }
+ links.each(&:destroy)
# from the other site
if data.key?(:link_type)
@@ -146,13 +144,11 @@ class Link < ApplicationModel
link_object_source_id: data[:link_object_target_id],
link_object_source_value: data[:link_object_target_value]
)
- links.each { |link|
- link.destroy
- }
+ links.each(&:destroy)
end
def self.link_type_get(data)
- linktype = Link::Type.where( name: data[:name] ).first
+ linktype = Link::Type.find_by( name: data[:name] )
if !linktype
linktype = Link::Type.create(
name: data[:name]
@@ -162,7 +158,7 @@ class Link < ApplicationModel
end
def self.link_object_get(data)
- linkobject = Link::Object.where( name: data[:name] ).first
+ linkobject = Link::Object.find_by( name: data[:name] )
if !linkobject
linkobject = Link::Object.create(
name: data[:name]
diff --git a/app/models/locale.rb b/app/models/locale.rb
index 802700505..0b329d19a 100644
--- a/app/models/locale.rb
+++ b/app/models/locale.rb
@@ -17,7 +17,7 @@ class Locale < ApplicationModel
ActiveRecord::Base.transaction do
result.data.each {|locale|
- exists = Locale.where(locale: locale['locale']).first
+ exists = Locale.find_by(locale: locale['locale'])
if exists
exists.update(locale.symbolize_keys!)
else
diff --git a/app/models/object_manager.rb b/app/models/object_manager.rb
index aafd10ff5..50f1f9c19 100644
--- a/app/models/object_manager.rb
+++ b/app/models/object_manager.rb
@@ -112,10 +112,10 @@ add a new attribute entry for an object
data.delete(:object)
# check newest entry - is needed
- result = ObjectManager::Attribute.where(
+ result = ObjectManager::Attribute.find_by(
object_lookup_id: data[:object_lookup_id],
name: data[:name],
- ).first
+ )
if result
# raise "ERROR: attribute #{data[:name]} for #{data[:object]} already exists"
return result.update_attributes(data)
@@ -143,10 +143,10 @@ get the attribute model based on object and name
data[:object_lookup_id] = ObjectLookup.by_name( data[:object] )
end
- ObjectManager::Attribute.where(
+ ObjectManager::Attribute.find_by(
object_lookup_id: data[:object_lookup_id],
name: data[:name],
- ).first
+ )
end
=begin
diff --git a/app/models/observer/organization/ref_object_touch.rb b/app/models/observer/organization/ref_object_touch.rb
index 3b6ba572d..84c617edf 100644
--- a/app/models/observer/organization/ref_object_touch.rb
+++ b/app/models/observer/organization/ref_object_touch.rb
@@ -6,9 +6,11 @@ class Observer::Organization::RefObjectTouch < ActiveRecord::Observer
def after_create(record)
ref_object_touch(record)
end
+
def after_update(record)
ref_object_touch(record)
end
+
def after_destroy(record)
ref_object_touch(record)
end
@@ -19,9 +21,7 @@ class Observer::Organization::RefObjectTouch < ActiveRecord::Observer
return if Setting.get('import_mode')
# touch organizations tickets
- Ticket.select('id').where( organization_id: record.id ).each {|ticket|
- ticket.touch
- }
+ Ticket.select('id').where( organization_id: record.id ).each(&:touch)
# touch current members
record.member_ids.uniq.each {|user_id|
diff --git a/app/models/observer/session.rb b/app/models/observer/session.rb
index 7bf93523e..cd051fb21 100644
--- a/app/models/observer/session.rb
+++ b/app/models/observer/session.rb
@@ -8,6 +8,7 @@ class Observer::Session < ActiveRecord::Observer
def before_create(record)
check(record)
end
+
def before_update(record)
check(record)
end
diff --git a/app/models/observer/tag/ticket_history.rb b/app/models/observer/tag/ticket_history.rb
index 9daeaf0f5..b9ba9470f 100644
--- a/app/models/observer/tag/ticket_history.rb
+++ b/app/models/observer/tag/ticket_history.rb
@@ -19,6 +19,7 @@ class Observer::Tag::TicketHistory < ActiveRecord::Observer
value_to: record.tag_item.name,
)
end
+
def after_destroy(record)
# just process ticket object tags
diff --git a/app/models/observer/ticket/article/communicate_email.rb b/app/models/observer/ticket/article/communicate_email.rb
index cf94e112d..b2efb34fd 100644
--- a/app/models/observer/ticket/article/communicate_email.rb
+++ b/app/models/observer/ticket/article/communicate_email.rb
@@ -10,7 +10,7 @@ class Observer::Ticket::Article::CommunicateEmail < ActiveRecord::Observer
# if sender is customer, do not communication
sender = Ticket::Article::Sender.lookup( id: record.sender_id )
- return 1 if sender == nil
+ return 1 if sender.nil?
return 1 if sender['name'] == 'Customer'
# only apply on emails
diff --git a/app/models/observer/ticket/article/communicate_email/background_job.rb b/app/models/observer/ticket/article/communicate_email/background_job.rb
index e01ef95c4..4d396fcc1 100644
--- a/app/models/observer/ticket/article/communicate_email/background_job.rb
+++ b/app/models/observer/ticket/article/communicate_email/background_job.rb
@@ -2,6 +2,7 @@ class Observer::Ticket::Article::CommunicateEmail::BackgroundJob
def initialize(id)
@article_id = id
end
+
def perform
record = Ticket::Article.find( @article_id )
@@ -37,12 +38,14 @@ class Observer::Ticket::Article::CommunicateEmail::BackgroundJob
# add history record
recipient_list = ''
[:to, :cc].each { |key|
- if record[key] && record[key] != ''
- if recipient_list != ''
- recipient_list += ','
- end
- recipient_list += record[key]
+
+ next if !record[key]
+ next if record[key] == ''
+
+ if recipient_list != ''
+ recipient_list += ','
end
+ recipient_list += record[key]
}
return if recipient_list == ''
diff --git a/app/models/observer/ticket/article/communicate_facebook.rb b/app/models/observer/ticket/article/communicate_facebook.rb
index 82d6c56e9..ea6e4bf84 100644
--- a/app/models/observer/ticket/article/communicate_facebook.rb
+++ b/app/models/observer/ticket/article/communicate_facebook.rb
@@ -10,7 +10,7 @@ class Observer::Ticket::Article::CommunicateFacebook < ActiveRecord::Observer
# if sender is customer, do not communication
sender = Ticket::Article::Sender.lookup( id: record.sender_id )
- return 1 if sender == nil
+ return 1 if sender.nil?
return 1 if sender['name'] == 'Customer'
# only apply on emails
diff --git a/app/models/observer/ticket/article/communicate_twitter.rb b/app/models/observer/ticket/article/communicate_twitter.rb
index 8b38779ab..36fb70f44 100644
--- a/app/models/observer/ticket/article/communicate_twitter.rb
+++ b/app/models/observer/ticket/article/communicate_twitter.rb
@@ -10,7 +10,7 @@ class Observer::Ticket::Article::CommunicateTwitter < ActiveRecord::Observer
# if sender is customer, do not communication
sender = Ticket::Article::Sender.lookup( id: record.sender_id )
- return 1 if sender == nil
+ return 1 if sender.nil?
return 1 if sender['name'] == 'Customer'
# only apply on tweets
diff --git a/app/models/observer/ticket/article/fillup_from_email.rb b/app/models/observer/ticket/article/fillup_from_email.rb
index 08fcf3778..59f6adc22 100644
--- a/app/models/observer/ticket/article/fillup_from_email.rb
+++ b/app/models/observer/ticket/article/fillup_from_email.rb
@@ -10,7 +10,7 @@ class Observer::Ticket::Article::FillupFromEmail < ActiveRecord::Observer
# if sender is customer, do not change anything
sender = Ticket::Article::Sender.lookup( id: record.sender_id )
- return if sender == nil
+ return if sender.nil?
return if sender['name'] == 'Customer'
# set email attributes
diff --git a/app/models/observer/ticket/article/fillup_from_general.rb b/app/models/observer/ticket/article/fillup_from_general.rb
index 99a907159..f257b18e5 100644
--- a/app/models/observer/ticket/article/fillup_from_general.rb
+++ b/app/models/observer/ticket/article/fillup_from_general.rb
@@ -10,7 +10,7 @@ class Observer::Ticket::Article::FillupFromGeneral < ActiveRecord::Observer
# if sender is customer, do not change anything
sender = Ticket::Article::Sender.lookup( id: record.sender_id )
- return if sender == nil
+ return if sender.nil?
return if sender['name'] == 'Customer'
# set from if not given
diff --git a/app/models/observer/ticket/article_changes.rb b/app/models/observer/ticket/article_changes.rb
index f122f747d..d4beac442 100644
--- a/app/models/observer/ticket/article_changes.rb
+++ b/app/models/observer/ticket/article_changes.rb
@@ -73,8 +73,8 @@ class Observer::Ticket::ArticleChanges < ActiveRecord::Observer
if sender.name == 'Customer'
# check if last communication is done by agent, else do not set last_contact_customer
- if record.ticket.last_contact_customer == nil ||
- record.ticket.last_contact_agent == nil ||
+ if record.ticket.last_contact_customer.nil? ||
+ record.ticket.last_contact_agent.nil? ||
record.ticket.last_contact_agent.to_i > record.ticket.last_contact_customer.to_i
# set last_contact customer
diff --git a/app/models/observer/ticket/notification.rb b/app/models/observer/ticket/notification.rb
index 62fd1343a..c0ff9b67f 100644
--- a/app/models/observer/ticket/notification.rb
+++ b/app/models/observer/ticket/notification.rb
@@ -19,7 +19,7 @@ class Observer::Ticket::Notification < ActiveRecord::Observer
# get uniq objects
list_objects = get_uniq_changes(list)
- list_objects.each {|ticket_id, item|
+ list_objects.each {|_ticket_id, item|
# send background job
Delayed::Job.enqueue( Observer::Ticket::Notification::BackgroundJob.new( item ) )
@@ -158,7 +158,7 @@ class Observer::Ticket::Notification < ActiveRecord::Observer
EventBuffer.add(e)
end
- def after_update(record)
+ def after_update(_record)
# return if we run import mode
return if Setting.get('import_mode')
diff --git a/app/models/observer/ticket/notification/background_job.rb b/app/models/observer/ticket/notification/background_job.rb
index 3c68b4947..f92241ee5 100644
--- a/app/models/observer/ticket/notification/background_job.rb
+++ b/app/models/observer/ticket/notification/background_job.rb
@@ -4,6 +4,7 @@ class Observer::Ticket::Notification::BackgroundJob
def initialize(params)
@p = params
end
+
def perform
ticket = Ticket.find(@p[:ticket_id])
if @p[:article_id]
@@ -225,7 +226,7 @@ class Observer::Ticket::Notification::BackgroundJob
changes
end
- def template_create(user, ticket, article, ticket_changes)
+ def template_create(user, ticket, article, _ticket_changes)
article_content = ''
if article
article_content = '<snip>
@@ -348,7 +349,7 @@ Changes:
template
end
- def template_header(user)
+ def template_header(_user)
'