From 21d0357ffdcbba43ab0c0d6797c4f649e0173734 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Wed, 4 Oct 2023 13:09:52 +0800 Subject: [PATCH 01/12] Add discourse_plugin_statistics plugin definition --- .rubocop.yml | 3 + lib/custom_wizard/subscription.rb | 2 +- lib/discourse_plugin_statistics/plugin.rb | 94 +++++++++++++++++++ plugin.rb | 2 + .../plugin_spec.rb | 82 ++++++++++++++++ 5 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 lib/discourse_plugin_statistics/plugin.rb create mode 100644 spec/components/discourse_plugin_statistics/plugin_spec.rb diff --git a/.rubocop.yml b/.rubocop.yml index 69fcfc56..74c8c853 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -6,3 +6,6 @@ RSpec/ContextWording: RSpec/DescribeClass: Enabled: false + +Discourse/TimeEqMatcher: + Enabled: false diff --git a/lib/custom_wizard/subscription.rb b/lib/custom_wizard/subscription.rb index ee72b7f8..23de1808 100644 --- a/lib/custom_wizard/subscription.rb +++ b/lib/custom_wizard/subscription.rb @@ -157,7 +157,7 @@ class CustomWizard::Subscription return :none unless subscribed? return :business if business? return :standard if standard? - return :community if community? + :community if community? end def subscribed? diff --git a/lib/discourse_plugin_statistics/plugin.rb b/lib/discourse_plugin_statistics/plugin.rb new file mode 100644 index 00000000..11fb72d6 --- /dev/null +++ b/lib/discourse_plugin_statistics/plugin.rb @@ -0,0 +1,94 @@ +# frozen_string_literal: true +module DiscoursePluginStatistics + class Plugin + def self.discourse_custom_wizard + subscription_features = { + wizard: { + save_submissions: 0, + after_signup: 0, + prompt_completion: 0, + required: 0, + permitted: 0, + }, + step: { + required_data: 0, + permitted_params: 0, + force_final: 0 + }, + field: { + condition: 0, + type: { + text: 0, + textarea: 0, + text_only: 0, + date: 0, + time: 0, + date_time: 0, + number: 0, + checkbox: 0, + dropdown: 0, + composer: 0, + composer_preview: 0, + url: 0, + upload: 0, + tag: 0, + category: 0, + group: 0, + user_selector: 0, + }, + realtime_validations: 0 + }, + action: { + type: { + create_topic: 0, + send_message: 0, + update_profile: 0, + open_composer: 0, + route_to: 0, + send_to_api: 0, + watch_categories: 0, + watch_tags: 0, + add_to_group: 0, + create_group: 0, + create_category: 0, + } + } + } + + increment_feature_count = lambda do |type, key, value| + if key == 'type' + subscription_features[type.to_sym][:type][value.to_sym] += 1 + elsif !subscription_features[type.to_sym][key.to_sym].nil? + subscription_features[type.to_sym][key.to_sym] += 1 + end + end + + CustomWizard::Template.list.each do |template| + template.each do |key, value| + increment_feature_count.call(:wizard, key, value) + end + template['steps'].each do |step| + step.each do |key, value| + increment_feature_count.call(:step, key, value) + end + step['fields'].each do |field| + field.each do |key, value| + increment_feature_count.call(:field, key, value) + end + end + end + template['actions'].each do |action| + action.each do |key, value| + increment_feature_count.call(:action, key, value) + end + end + end + + { + total_wizards: CustomWizard::Template.list.size, + subscription_type: CustomWizard::Subscription.type.to_s, + subscription_features: subscription_features + } + end + end +end diff --git a/plugin.rb b/plugin.rb index 3a84371b..bcc983a5 100644 --- a/plugin.rb +++ b/plugin.rb @@ -8,6 +8,7 @@ # subscription_url: https://coop.pavilion.tech gem 'liquid', '5.0.1', require: true +gem 'discourse_plugin_statistics', '0.1.0.pre1', require: true register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' @@ -73,6 +74,7 @@ after_initialize do ../lib/custom_wizard/api/log_entry.rb ../lib/custom_wizard/liquid_extensions/first_non_empty.rb ../lib/custom_wizard/exceptions/exceptions.rb + ../lib/discourse_plugin_statistics/plugin.rb ../app/serializers/custom_wizard/api/authorization_serializer.rb ../app/serializers/custom_wizard/api/basic_endpoint_serializer.rb ../app/serializers/custom_wizard/api/endpoint_serializer.rb diff --git a/spec/components/discourse_plugin_statistics/plugin_spec.rb b/spec/components/discourse_plugin_statistics/plugin_spec.rb new file mode 100644 index 00000000..bf3635c2 --- /dev/null +++ b/spec/components/discourse_plugin_statistics/plugin_spec.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +describe DiscoursePluginStatistics::Plugin do + let(:template_json) { get_wizard_fixture("wizard") } + + describe "#discourse_custom_wizard" do + before do + enable_subscription('standard') + + CustomWizard::Template.save(template_json, skip_jobs: true) + + template_json_2 = template_json.dup + template_json_2["id"] = 'super_mega_fun_wizard_2' + CustomWizard::Template.save(template_json_2, skip_jobs: true) + + @data = DiscoursePluginStatistics::Plugin.discourse_custom_wizard + end + + it "includes a total wizard count" do + expect(@data[:total_wizards]).to eq(2) + end + + it "includes the subscription type" do + expect(@data[:subscription_type]).to eq('standard') + end + + it "includes a count of features being used across all wizards" do + expect(@data[:subscription_features]).to eq( + wizard: { + save_submissions: 2, + after_signup: 2, + prompt_completion: 2, + required: 0, + permitted: 0, + }, + step: { + required_data: 0, + permitted_params: 0, + force_final: 0 + }, + field: { + condition: 0, + type: { + text: 2, + textarea: 2, + text_only: 2, + date: 2, + time: 2, + date_time: 2, + number: 2, + checkbox: 2, + dropdown: 2, + composer: 0, + composer_preview: 0, + url: 0, + upload: 0, + tag: 0, + category: 0, + group: 0, + user_selector: 0, + }, + realtime_validations: 0 + }, + action: { + type: { + create_topic: 2, + send_message: 0, + update_profile: 2, + open_composer: 2, + route_to: 2, + send_to_api: 0, + watch_categories: 0, + watch_tags: 0, + add_to_group: 0, + create_group: 0, + create_category: 0, + } + } + ) + end + end +end From 2dd3f5fa7280245426f195a0f157f0dfea7b8d1a Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Wed, 4 Oct 2023 13:13:58 +0800 Subject: [PATCH 02/12] Bump version --- plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.rb b/plugin.rb index bcc983a5..38474b8e 100644 --- a/plugin.rb +++ b/plugin.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true # name: discourse-custom-wizard # about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more. -# version: 2.4.24 +# version: 2.5.0 # authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever, Juan Marcos Gutierrez Ramos # url: https://github.com/paviliondev/discourse-custom-wizard # contact_emails: development@pavilion.tech From 6472b2aaa2e8b76ee974b49c969bc184f7d0e4f8 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Wed, 4 Oct 2023 13:45:57 +0800 Subject: [PATCH 03/12] Add additional check in feature counter --- lib/discourse_plugin_statistics/plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/discourse_plugin_statistics/plugin.rb b/lib/discourse_plugin_statistics/plugin.rb index 11fb72d6..bc347b48 100644 --- a/lib/discourse_plugin_statistics/plugin.rb +++ b/lib/discourse_plugin_statistics/plugin.rb @@ -56,7 +56,7 @@ module DiscoursePluginStatistics } increment_feature_count = lambda do |type, key, value| - if key == 'type' + if key == 'type' && !subscription_features[type.to_sym][:type][value.to_sym].nil? subscription_features[type.to_sym][:type][value.to_sym] += 1 elsif !subscription_features[type.to_sym][key.to_sym].nil? subscription_features[type.to_sym][key.to_sym] += 1 From e29605c66097fd39876758f0433fdce4dd0a7f42 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Wed, 4 Oct 2023 14:16:52 +0800 Subject: [PATCH 04/12] Update plugin.rb --- lib/discourse_plugin_statistics/plugin.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/discourse_plugin_statistics/plugin.rb b/lib/discourse_plugin_statistics/plugin.rb index bc347b48..70e62889 100644 --- a/lib/discourse_plugin_statistics/plugin.rb +++ b/lib/discourse_plugin_statistics/plugin.rb @@ -56,10 +56,14 @@ module DiscoursePluginStatistics } increment_feature_count = lambda do |type, key, value| - if key == 'type' && !subscription_features[type.to_sym][:type][value.to_sym].nil? - subscription_features[type.to_sym][:type][value.to_sym] += 1 - elsif !subscription_features[type.to_sym][key.to_sym].nil? - subscription_features[type.to_sym][key.to_sym] += 1 + if key == 'type' + if !subscription_features[type.to_sym][:type][value.to_sym].nil? + subscription_features[type.to_sym][:type][value.to_sym] += 1 + end + else + if !subscription_features[type.to_sym][key.to_sym].nil? + subscription_features[type.to_sym][key.to_sym] += 1 + end end end From fceb539ab3bf1bfaaa863da1e674d0e5a6ca980d Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Wed, 4 Oct 2023 14:50:52 +0800 Subject: [PATCH 05/12] Update plugin.rb --- plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.rb b/plugin.rb index 38474b8e..4f26d848 100644 --- a/plugin.rb +++ b/plugin.rb @@ -8,7 +8,7 @@ # subscription_url: https://coop.pavilion.tech gem 'liquid', '5.0.1', require: true -gem 'discourse_plugin_statistics', '0.1.0.pre1', require: true +gem 'discourse_plugin_statistics', '0.1.0.pre2', require: true register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' From 581669445686f849e0bc4f1efd5844cb0d4b8707 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Wed, 4 Oct 2023 16:13:53 +0800 Subject: [PATCH 06/12] Bump statistics gem version --- plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.rb b/plugin.rb index 4f26d848..4ccef1a0 100644 --- a/plugin.rb +++ b/plugin.rb @@ -8,7 +8,7 @@ # subscription_url: https://coop.pavilion.tech gem 'liquid', '5.0.1', require: true -gem 'discourse_plugin_statistics', '0.1.0.pre2', require: true +gem 'discourse_plugin_statistics', '0.1.0.pre3', require: true register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' From ba94f59cb70c9fe17dacdc375aa3ba3175ba83b9 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Thu, 5 Oct 2023 09:31:28 +0800 Subject: [PATCH 07/12] Undo rubocop autoformat --- lib/custom_wizard/subscription.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/custom_wizard/subscription.rb b/lib/custom_wizard/subscription.rb index 23de1808..ee72b7f8 100644 --- a/lib/custom_wizard/subscription.rb +++ b/lib/custom_wizard/subscription.rb @@ -157,7 +157,7 @@ class CustomWizard::Subscription return :none unless subscribed? return :business if business? return :standard if standard? - :community if community? + return :community if community? end def subscribed? From 3c41443294bef82d605d5020be278ca68cb6ed65 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Thu, 5 Oct 2023 13:39:56 +0800 Subject: [PATCH 08/12] Bump stats gem version --- plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.rb b/plugin.rb index 4ccef1a0..680fd882 100644 --- a/plugin.rb +++ b/plugin.rb @@ -8,7 +8,7 @@ # subscription_url: https://coop.pavilion.tech gem 'liquid', '5.0.1', require: true -gem 'discourse_plugin_statistics', '0.1.0.pre3', require: true +gem 'discourse_plugin_statistics', '0.1.0.pre4', require: true register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' From ab158e0fb795b4a0a23bf57d51c5320b10664426 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Thu, 5 Oct 2023 14:28:49 +0800 Subject: [PATCH 09/12] Bump stats gem version --- plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.rb b/plugin.rb index 680fd882..d5c5ccf7 100644 --- a/plugin.rb +++ b/plugin.rb @@ -8,7 +8,7 @@ # subscription_url: https://coop.pavilion.tech gem 'liquid', '5.0.1', require: true -gem 'discourse_plugin_statistics', '0.1.0.pre4', require: true +gem 'discourse_plugin_statistics', '0.1.0.pre5', require: true register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' From 4393bd923677e3881821e333a2153f8371aba876 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Fri, 6 Oct 2023 13:41:37 +0800 Subject: [PATCH 10/12] Bump gem stats version --- plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.rb b/plugin.rb index d5c5ccf7..e99eb722 100644 --- a/plugin.rb +++ b/plugin.rb @@ -8,7 +8,7 @@ # subscription_url: https://coop.pavilion.tech gem 'liquid', '5.0.1', require: true -gem 'discourse_plugin_statistics', '0.1.0.pre5', require: true +gem 'discourse_plugin_statistics', '0.1.0.pre6', require: true register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' From 7613626e9ea47be5362fe993a57702ac91366da1 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Fri, 6 Oct 2023 15:52:42 +0800 Subject: [PATCH 11/12] Update stats gem version --- plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.rb b/plugin.rb index e99eb722..3f199471 100644 --- a/plugin.rb +++ b/plugin.rb @@ -8,7 +8,7 @@ # subscription_url: https://coop.pavilion.tech gem 'liquid', '5.0.1', require: true -gem 'discourse_plugin_statistics', '0.1.0.pre6', require: true +gem 'discourse_plugin_statistics', '0.1.0.pre7', require: true register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' From 1d987647b6105d4c604f47037e21344a275e52e2 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Tue, 14 Nov 2023 13:18:11 +0100 Subject: [PATCH 12/12] Add note to readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 41aaeafc..063ceaa2 100644 --- a/README.md +++ b/README.md @@ -25,3 +25,7 @@ If you're not sure how to install a plugin in Discourse, please follow the [plug ## Support - [Report an issue](https://pavilion.tech/products/discourse-custom-wizard-plugin/support/bug-report) + +## Statistics + +For improved service and development, this plugin collects some generalised quantitative data related to version and usage. No personal or sensitive information is gathered. Please email contact@pavilion.tech if you have any questions or concerns about our data collection.