Skip to content
Extraits de code Groupes Projets
share_visibilities_controller.rb 1,33 ko
Newer Older
  • Learn to ignore specific revisions
  • danielgrippi's avatar
    danielgrippi a validé
    #   Copyright (c) 2010-2011, Diaspora Inc.  This file is
    
    #   licensed under the Affero General Public License version 3 or later.  See
    #   the COPYRIGHT file.
    #
    
    
    Manuel Schölling's avatar
    Manuel Schölling a validé
    class ShareVisibilitiesController < ApplicationController
    
      before_filter :authenticate_user!
    
    
        #note :id references a postvisibility
    
    Manuel Schölling's avatar
    Manuel Schölling a validé
        params[:shareable_id] ||= params[:post_id]
        params[:shareable_type] ||= 'Post'
    
    zhitomirskiyi's avatar
    zhitomirskiyi a validé
    
    
        @contact = current_user.contact_for(@post.author)
    
    
    Manuel Schölling's avatar
    Manuel Schölling a validé
        if @contact && @vis = ShareVisibility.where(:contact_id => @contact.id,
                                                    :shareable_id => params[:shareable_id],
                                                    :shareable_type => params[:shareable_type]).first
          @vis.hidden = !@vis.hidden
    
    zhitomirskiyi's avatar
    zhitomirskiyi a validé
          if @vis.save
    
    zhitomirskiyi's avatar
    zhitomirskiyi a validé
            return
    
    zhitomirskiyi's avatar
    zhitomirskiyi a validé
        render :nothing => true, :status => 403
    
    
      protected
    
      def update_cache(visibility)
        return unless RedisCache.configured?
    
        cache = RedisCache.new(current_user, 'created_at')
    
        if visibility.hidden?
          cache.remove(accessible_post.id)
        else
          cache.add(accessible_post.created_at.to_i, accessible_post.id)
        end
      end
    
      def accessible_post
        @post ||= Post.where(:id => params[:post_id]).select("id, guid, author_id, created_at").first
      end