Class: Principal

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/principal.rb

Overview

Redmine - project management software Copyright (C) 2006-2014 Jean-Philippe Lang

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Direct Known Subclasses

Group, User

Constant Summary collapse

STATUS_ANONYMOUS =

Account statuses

0
STATUS_ACTIVE =
1
STATUS_REGISTERED =
2
STATUS_LOCKED =
3

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.fields_for_order_statement(table = nil) ⇒ Object

Returns an array of fields names than can be used to make an order statement for principals. Users are sorted before Groups. Examples:


134
135
136
137
138
# File 'app/models/principal.rb', line 134

def self.fields_for_order_statement(table=nil)
  table ||= table_name
  columns = ['type DESC'] + (User.name_formatter[:order] - ['id']) + ['lastname', 'id']
  columns.uniq.map {|field| "#{table}.#{field}"}
end

Instance Method Details

#<=>(principal) ⇒ Object


120
121
122
123
124
125
126
127
128
129
# File 'app/models/principal.rb', line 120

def <=>(principal)
  if principal.nil?
    -1
  elsif self.class.name == principal.class.name
    self.to_s.downcase <=> principal.to_s.downcase
  else
    # groups after users
    principal.class.name <=> self.class.name
  end
end

#member_of?(project) ⇒ Boolean

Return true if the principal is a member of project

Returns:

  • (Boolean)

116
117
118
# File 'app/models/principal.rb', line 116

def member_of?(project)
  projects.to_a.include?(project)
end

#name(formatter = nil) ⇒ Object


107
108
109
# File 'app/models/principal.rb', line 107

def name(formatter = nil)
  to_s
end

#visible?(user = User.current) ⇒ Boolean

Returns:

  • (Boolean)

111
112
113
# File 'app/models/principal.rb', line 111

def visible?(user=User.current)
  Principal.visible(user).where(:id => id).first == self
end