community.rb 1.13 KB
require_dependency 'community'

class Community

  attr_accessible :visible

  has_one :software_info, :dependent=>:delete
  has_one :institution, :dependent=>:delete

  def self.create_after_moderation(requestor, attributes = {}, software_info = nil, license_info = nil, controlled_vocabulary = nil)
    community = Community.new(attributes)
    if community.environment.enabled?('admin_must_approve_new_communities')
      CreateCommunity.create(attributes.merge(:requestor => requestor))
    else
      community = Community.create(attributes)

      if not software_info.nil?
        if not license_info.nil?
          software_info.license_info = license_info
        end

        if not controlled_vocabulary.nil?
          software_info.controlled_vocabulary = controlled_vocabulary
        end

        community.software_info = software_info
      end

      community.add_admin(requestor)
    end
    community
  end

  def software?
    return !software_info.nil?
  end

  def institution?
    return !institution.nil?
  end

  def deactivate
   self.visible = false
   self.save!
  end

  def activate
   self.visible = true
   self.save!
  end
end