Skip to content
Extraits de code Groupes Projets
post.rb 1,23 ko
Newer Older
  • Learn to ignore specific revisions
  • Raphael's avatar
    Raphael a validé
    #   Copyright (c) 2010, Diaspora Inc.  This file is
    
    Raphael's avatar
    Raphael a validé
    #   licensed under the Affero General Public License version 3 or later.  See
    
    Raphael's avatar
    Raphael a validé
    #   the COPYRIGHT file.
    
    class Post
    
      require File.join(Rails.root, 'lib/encryptable')
      require File.join(Rails.root, 'lib/diaspora/websocket')
    
    maxwell's avatar
    maxwell a validé
      include MongoMapper::Document
    
      include ApplicationHelper
    
      include Diaspora::Webhooks
    
    ilya's avatar
    ilya a validé
      xml_accessor :_id
    
      xml_accessor :person, :as => Person
    
    ilya's avatar
    ilya a validé
      xml_reader   :public
    
      xml_reader :created_at
    
    ilya's avatar
    ilya a validé
    
      key :public   , Boolean, :default => false
    
    maxwell's avatar
    maxwell a validé
      key :person_id, ObjectId
    
      key :user_refs, Integer, :default => 0
    
    ilya's avatar
    ilya a validé
    
    
      many :comments, :class_name => 'Comment', :foreign_key => :post_id, :order => 'created_at ASC'
    
      belongs_to :person, :class_name => 'Person'
    
    Daniel Grippi's avatar
    Daniel Grippi a validé
      timestamps!
    
    maxwell's avatar
    maxwell a validé
      cattr_reader :per_page
      @@per_page = 10
    
    Raphael's avatar
    Raphael a validé
      after_destroy :destroy_comments
    
      def self.instantiate params
    
    maxwell's avatar
    maxwell a validé
        self.create params.to_hash
    
      def as_json(opts={})
        {
          :post => {
            :id     => self.id,
            :person => self.person.as_json,
          }
        }
      end
    
    Daniel Grippi's avatar
    Daniel Grippi a validé
      protected
      def destroy_comments
    
        comments.each{|c| c.destroy}
      end
    
    Daniel Grippi's avatar
    Daniel Grippi a validé
      def propogate_retraction
        self.person.owner.retract(self)
      end