diff --git a/Changelog.md b/Changelog.md index 13de62d61b363082a4984efbdbf86f2035660b78..0238b7d368120b042f9b0b3a996f7e8681baa2fe 100644 --- a/Changelog.md +++ b/Changelog.md @@ -127,6 +127,7 @@ diaspora.yml file**. The existing settings from 0.4.x and before will not work a * Fix localization of post and comment timestamps on mobile [#5482](https://github.com/diaspora/diaspora/issues/5482) * Fix mobile JS loading to quieten errors. Fixes also service buttons on mobile bookmarklet. * Don't error out when adding a too long location to the profile [#5614](https://github.com/diaspora/diaspora/pull/5614) +* Total user statistic no longer includes closed accounts [#5041](https://github.com/diaspora/diaspora/pull/5041) ## Features * Don't pull jQuery from a CDN by default [#5105](https://github.com/diaspora/diaspora/pull/5105) diff --git a/app/models/user.rb b/app/models/user.rb index 1fa150afb860a7fa958e48a304134a985dde52dc..da04d5a50a03abbef048936ae4cf5d30bba23555 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -522,6 +522,11 @@ class User < ActiveRecord::Base end end + + def self.total_users + User.joins(:person).where(:people => {:closed_account => false}).where.not(:username => nil) + end + private def clearable_fields self.attributes.keys - ["id", "username", "encrypted_password", diff --git a/app/presenters/statistics_presenter.rb b/app/presenters/statistics_presenter.rb index dd766f02c2ab0cd5e470a4f2575a87f40670db7b..60aae690c26dfc18f2ca7a462dc59c7939761631 100644 --- a/app/presenters/statistics_presenter.rb +++ b/app/presenters/statistics_presenter.rb @@ -20,6 +20,21 @@ class StatisticsPresenter 'registrations_open' => open_registrations?, 'services' => available_services } + + if AppConfig.privacy.statistics.user_counts? + result['total_users'] = User.total_users.count + result['active_users_halfyear'] = User.halfyear_actives.count + result['active_users_monthly'] = User.monthly_actives.count + end + if AppConfig.privacy.statistics.post_counts? + result['local_posts'] = self.local_posts + end + if AppConfig.privacy.statistics.comment_counts? + result['local_comments'] = self.local_comments + end + result["services"] = Configuration::KNOWN_SERVICES.select {|service| AppConfig["services.#{service}.enable"]}.map(&:to_s) + Configuration::KNOWN_SERVICES.each do |service, options| + result[service.to_s] = AppConfig["services.#{service}.enable"] end def name @@ -122,4 +137,4 @@ class StatisticsPresenter } end -end \ No newline at end of file +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 33be531b013406ae1a190af685d3458ba683e858..431fed5504a3aa8a3bbc1427e522c419b85b3ef5 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1077,5 +1077,18 @@ describe User, :type => :model do @user.after_database_authentication expect(@user.remove_after).to eq(nil) end + + describe "total_users" do + before do + @user1 = FactoryGirl.build(:user, :username => nil) + @user1.save(:validate => false) + @user2 = FactoryGirl.create(:user) + @user2.person.closed_account = true + @user2.save + end + + it "returns total_users excluding closed accounts & users without usernames" do + expect(User.total_users.count).to eq 5 #5 users from fixtures + end end end diff --git a/spec/presenters/statistics_presenter_spec.rb b/spec/presenters/statistics_presenter_spec.rb index 1dd94dff1c5eb2d8ffe44863a83753916219e3ac..354ad0031ee9e4706bb938d5c852f1ed95d898e4 100644 --- a/spec/presenters/statistics_presenter_spec.rb +++ b/spec/presenters/statistics_presenter_spec.rb @@ -51,8 +51,8 @@ describe StatisticsPresenter do "name" => AppConfig.settings.pod_name, "network" => "Diaspora", "version" => AppConfig.version_string, - "registrations_open" => AppConfig.settings.enable_registrations?, - "total_users" => User.count, + "registrations_open" => AppConfig.settings.enable_registrations, + "total_users" => User.total_users.count, "active_users_halfyear" => User.halfyear_actives.count, "active_users_monthly" => User.monthly_actives.count, "local_posts" => @presenter.local_posts,