Skip to content
Extraits de code Groupes Projets
admins_controller.rb 3,07 ko
Newer Older
  • Learn to ignore specific revisions
  • class AdminsController < ApplicationController
      before_filter :authenticate_user!
    
      before_filter :redirect_unless_admin
    
    
        params[:user] ||= {}
        params[:user].delete_if {|key, value| value.blank? }
        @users = params[:user].empty? ? [] : User.where(params[:user])
    
      def admin_inviter 
        user = User.find_by_email params[:idenitifer]
        unless user
    
    Maxwell Salzberg's avatar
    Maxwell Salzberg a validé
          Invitation.create(:service => 'email', :identifier => params[:identifier], :admin => true)
    
          flash[:notice] = "invitation sent to #{params[:identifier]}"
    
    Maxwell Salzberg's avatar
    Maxwell Salzberg a validé
        else
          flash[:notice]= "error sending invite to #{params[:identifier]}"
    
    Maxwell Salzberg's avatar
    Maxwell Salzberg a validé
        redirect_to user_search_path, :notice => flash[:notice]
    
      def weekly_user_stats
        @created_users_by_day = User.where("username IS NOT NULL").count(:group => "date(created_at)") 
        @created_users_by_week = {}
        @created_users_by_day.keys.each do |k| 
    
          unless k.nil?
            if @created_users_by_week[k.beginning_of_week].blank?
              @created_users_by_week[k.beginning_of_week] = @created_users_by_day[k] 
            else
              @created_users_by_week[k.beginning_of_week] += @created_users_by_day[k] 
            end
    
      def stats
        @popular_tags = ActsAsTaggableOn::Tagging.joins(:tag).limit(15).count(:group => :tag, :order => 'count(taggings.id) DESC')
    
    danielgrippi's avatar
    danielgrippi a validé
        case params[:range]
        when "week"
          range = 1.week
    
          @segment = "week"
    
    danielgrippi's avatar
    danielgrippi a validé
        when "2weeks"
          range = 2.weeks
    
          @segment = "2 week"
    
    danielgrippi's avatar
    danielgrippi a validé
        when "month"
          range = 1.month
    
          @segment = "month"
    
    danielgrippi's avatar
    danielgrippi a validé
        else
          range = 1.day
    
          @segment = "daily"
    
        [Post, Comment, AspectMembership, User].each do |model|
    
    danielgrippi's avatar
    danielgrippi a validé
          create_hash(model, :range => range)
    
        @posts_per_day = Post.count(:group => "DATE(created_at)", :conditions => ["created_at >= ?", Date.today - 21.days], :order => "DATE(created_at) ASC")
        @most_posts_within = @posts_per_day.values.max.to_f
    
    
        @user_count = User.count
    
    
        #@posts[:new_public] = Post.where(:type => ['StatusMessage','ActivityStreams::Photo'],
        #                                 :public => true).order('created_at DESC').limit(15).all
    
    
    danielgrippi's avatar
    danielgrippi a validé
      end
    
      def correlations
    
    
        @correlations = Statistics.generate_correlations(params[:number_of_weeks])
    
        5.times.inject({}) do |stats, n|
          week_start = (Time.now - n.weeks).beginning_of_week
          week_end = week_start - 1.week
          stats[week_start] = Statistics.new(week_start, week_end).generate_correlations
        end
    
    
    
    
      end
    
      private
      def percent_change(today, yesterday)
        sprintf( "%0.02f", ((today-yesterday) / yesterday.to_f)*100).to_f
      end
    
    
    danielgrippi's avatar
    danielgrippi a validé
      def create_hash(model, opts={})
        opts[:range] ||= 1.day
    
        plural = model.to_s.underscore.pluralize
        eval(<<DATA
          @#{plural} = {
    
    danielgrippi's avatar
    danielgrippi a validé
            :day_before => #{model}.where(:created_at => ((Time.now.midnight - #{opts[:range]*2})..Time.now.midnight - #{opts[:range]})).count,
            :yesterday => #{model}.where(:created_at => ((Time.now.midnight - #{opts[:range]})..Time.now.midnight)).count
    
          @#{plural}[:change] = percent_change(@#{plural}[:yesterday], @#{plural}[:day_before])