Browse Source

Maintenance: Drop unpackaged Karma feature.

Martin Gruner 2 years ago
parent
commit
fb1ee83126

+ 0 - 9
.rubocop/todo.yml

@@ -144,7 +144,6 @@ Metrics/AbcSize:
     - 'app/models/import_job.rb'
     - 'app/models/job.rb'
     - 'app/models/job/assets.rb'
-    - 'app/models/karma/activity_log.rb'
     - 'app/models/knowledge_base.rb'
     - 'app/models/knowledge_base/answer.rb'
     - 'app/models/knowledge_base/category.rb'
@@ -205,7 +204,6 @@ Metrics/AbcSize:
     - 'app/models/transaction.rb'
     - 'app/models/transaction/clearbit_enrichment.rb'
     - 'app/models/transaction/cti_caller_id_detection.rb'
-    - 'app/models/transaction/karma.rb'
     - 'app/models/transaction/notification.rb'
     - 'app/models/transaction/signature_detection.rb'
     - 'app/models/transaction/slack.rb'
@@ -377,7 +375,6 @@ Metrics/BlockLength:
     - 'app/models/concerns/has_history.rb'
     - 'app/models/concerns/has_rich_text.rb'
     - 'app/models/job.rb'
-    - 'app/models/karma/activity_log.rb'
     - 'app/models/knowledge_base/search.rb'
     - 'app/models/object_manager/attribute.rb'
     - 'app/models/organization/search.rb'
@@ -433,7 +430,6 @@ Metrics/BlockNesting:
     - 'app/models/concerns/has_history.rb'
     - 'app/models/object_manager/attribute.rb'
     - 'app/models/ticket.rb'
-    - 'app/models/transaction/karma.rb'
     - 'app/models/transaction/notification.rb'
     - 'app/models/transaction/slack.rb'
     - 'lib/html_sanitizer.rb'
@@ -533,7 +529,6 @@ Metrics/CyclomaticComplexity:
     - 'app/models/history.rb'
     - 'app/models/job.rb'
     - 'app/models/job/assets.rb'
-    - 'app/models/karma/activity_log.rb'
     - 'app/models/knowledge_base.rb'
     - 'app/models/object_manager/attribute.rb'
     - 'app/models/online_notification/assets.rb'
@@ -572,7 +567,6 @@ Metrics/CyclomaticComplexity:
     - 'app/models/ticket/touches_associations.rb'
     - 'app/models/token.rb'
     - 'app/models/transaction/clearbit_enrichment.rb'
-    - 'app/models/transaction/karma.rb'
     - 'app/models/transaction/notification.rb'
     - 'app/models/transaction/signature_detection.rb'
     - 'app/models/transaction/slack.rb'
@@ -760,7 +754,6 @@ Metrics/PerceivedComplexity:
     - 'app/models/history.rb'
     - 'app/models/job.rb'
     - 'app/models/job/assets.rb'
-    - 'app/models/karma/activity_log.rb'
     - 'app/models/knowledge_base.rb'
     - 'app/models/object_manager/attribute.rb'
     - 'app/models/online_notification/assets.rb'
@@ -796,7 +789,6 @@ Metrics/PerceivedComplexity:
     - 'app/models/ticket/touches_associations.rb'
     - 'app/models/token.rb'
     - 'app/models/transaction/clearbit_enrichment.rb'
-    - 'app/models/transaction/karma.rb'
     - 'app/models/transaction/notification.rb'
     - 'app/models/transaction/signature_detection.rb'
     - 'app/models/transaction/slack.rb'
@@ -907,7 +899,6 @@ Style/OptionalBooleanParameter:
     - 'app/models/chat/session.rb'
     - 'app/models/concerns/has_history.rb'
     - 'app/models/job.rb'
-    - 'app/models/karma/activity_log.rb'
     - 'app/models/object_manager/attribute.rb'
     - 'app/models/package.rb'
     - 'app/models/setting.rb'

+ 0 - 41
app/assets/javascripts/app/controllers/karma.coffee

@@ -1,41 +0,0 @@
-class KarmaContent extends App.Controller
-  constructor: ->
-    new Karma()
-
-class Karma extends App.ControllerModal
-  head: __('Zammad Karma')
-  buttonSubmit: false
-  buttonCancel: true
-  shown: false
-  #events:
-  #  'click .js-check': 'done'
-
-  constructor: ->
-    super
-    @load()
-
-    # rerender view, e. g. on langauge change
-    @controllerBind('ui:rerender', =>
-      @update()
-      'karma'
-    )
-
-  # fetch data, render view
-  load: ->
-    @ajax(
-      id:    'karma'
-      type:  'GET'
-      url:   "#{@apiPath}/karma"
-      success: (data) =>
-        @data = data
-        @render()
-    )
-
-  content: ->
-    App.view('karma/index')(
-      levels: @data.levels
-      user: @data.user
-      logs: @data.logs
-    )
-
-App.Config.set('karma', KarmaContent, 'Routes')

+ 0 - 60
app/assets/javascripts/app/views/karma/index.jst.eco

@@ -1,60 +0,0 @@
-<div>
-
-<%- @T('Zammad Karma is a powerful tool that tracks and visualizes your productivity.') %>
-
-<hr>
-
-<h2><%- @T('Karma Level') %></h2>
-
-<%- @T('You are an |%s|.', App.i18n.translatePlain(@user.level)) %> <%- @T('Your karma is |%s|.', @user.score) %>
-
-<table class="table">
-<% for level in @levels: %>
-  <tr>
-    <td style="width: 60px;"><%= level.start %></td>
-    <td style="width: 40px;">→ </td>
-    <td style="width: 100px;"><% if level.end is null: %>∞<% else: %><%= level.end %><% end %></td>
-    <td><%- @T(level.name) %></td>
-    <td><% if @user.level is level.name: %>(<%- @T('Your current level') %>)<% end %></td>
-  </tr>
-<% end %>
-</table>
-
-<hr>
-
-<h2><%- @T('Latest updates') %></h2>
-
-<table class="table">
-<% for log in @logs: %>
-  <tr>
-    <td style="width: 180px;"><%- @humanTime(log.created_at) %></td>
-    <td style="width: 80px;"><%- log.score_total %></td>
-    <td>
-      <% for comment in log.comments: %>
-        <% if comment.score >= 0: %>+<% end %><%- comment.score %> <%- @T(comment.description) %>
-      <% end %>
-    </td>
-  </tr>
-<% end %>
-</table>
-
-<hr>
-
-<h2><%- @T('What affects your Zammad Karma?') %></h2>
-
-<p><%- @T('You |accumulate positive Karma| when you regularly answer and close tickets on time and when you use advanced features such as text modules, ticket reminders, or tagging tickets. Zammad |Karma will decrease| when you have re-opened tickets, escalated tickets, or tickets that are two or more days overdue.') %></p>
-
-<!--
-<p><%- @T('You can set goals regarding the number of tickets you want to answer or close every day or every week. Reaching these self-set goals will result in bonus Karma. Zammad also tracks how many days/weeks you have attained your goals, and achieving ongoing "streaks" will similarly result in positive Karma.') %></p>
-
-
-<h2><%- @T('Karma Trends') %></h2>
-
-
-<h2><%- @T('last week') %></h2>
-
-
-<h2><%- @T('last month') %></h2>
--->
-
-</div>

+ 0 - 14
app/controllers/karma_controller.rb

@@ -1,14 +0,0 @@
-# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
-
-class KarmaController < ApplicationController
-  prepend_before_action :authentication_check
-
-  def index
-    render json: {
-      levels: Setting.get('karma_levels'),
-      user:   Karma::User.by_user(current_user),
-      logs:   Karma::ActivityLog.latest(current_user, 20),
-    }
-  end
-
-end

+ 0 - 23
app/models/concerns/has_karma_activity_log.rb

@@ -1,23 +0,0 @@
-# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
-
-module HasKarmaActivityLog
-  extend ActiveSupport::Concern
-
-  included do
-    before_destroy :karma_activity_log_destroy
-  end
-
-=begin
-
-delete object online notification list, will be executed automatically
-
-  model = Model.find(123)
-  model.karma_activity_log_destroy
-
-=end
-
-  def karma_activity_log_destroy
-    Karma::ActivityLog.remove(self.class.to_s, id)
-    true
-  end
-end

+ 0 - 12
app/models/karma.rb

@@ -1,12 +0,0 @@
-# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
-
-class Karma
-
-  def self.score_by_user(user)
-    last_activity_log = Karma::ActivityLog.where(user_id: user.id).order(id: :desc).first
-    return 0 if !last_activity_log
-
-    last_activity_log.score_total
-  end
-
-end

+ 0 - 6
app/models/karma/activity.rb

@@ -1,6 +0,0 @@
-# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
-
-class Karma::Activity < ApplicationModel
-  self.table_name = 'karma_activities'
-  validates :name, presence: true
-end

+ 0 - 121
app/models/karma/activity_log.rb

@@ -1,121 +0,0 @@
-# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
-
-class Karma::ActivityLog < ApplicationModel
-  belongs_to :object_lookup, optional: true
-  belongs_to :user, class_name: '::User'
-
-  self.table_name = 'karma_activity_logs'
-
-=begin
-
-add karma activity log of an object
-
-  Karma::ActivityLog.add('ticket create', User.find(1), 'Ticket', 123)
-
-=end
-
-  def self.add(action, user, object, o_id, force = false)
-    activity = Karma::Activity.lookup(name: action)
-
-    if object
-      object_id = ObjectLookup.by_name(object)
-    end
-
-    # scheduler transactions causes a lot of calls
-    # so we try to cache the add process
-    # to skip the time loss of the transaction
-    # to increase performance
-    if !force
-      cache = Rails.cache.read("Karma::ActivityLog.add::#{activity.once_ttl.seconds}::#{action}::#{user.id}::#{object}::#{o_id}")
-      return cache if cache
-    end
-
-    Karma::ActivityLog.transaction do
-      last_activity = Karma::ActivityLog.where(user_id: user.id).order(id: :desc).lock(true).first
-      latest_activity = Karma::ActivityLog.where(
-        user_id:          user.id,
-        object_lookup_id: object_id,
-        o_id:             o_id,
-        activity_id:      activity.id,
-      ).find_by('created_at >= ?', Time.zone.now - activity.once_ttl.seconds)
-
-      # End transaction block
-      next if !force && latest_activity
-
-      score_total = 0
-      if last_activity
-        score_total = last_activity.score_total
-      end
-
-      local_score_total = score_total + activity.score
-      if local_score_total.negative?
-        local_score_total = 0
-      end
-
-      Karma::ActivityLog.create(
-        object_lookup_id: object_id,
-        o_id:             o_id,
-        user_id:          user.id,
-        activity_id:      activity.id,
-        score:            activity.score,
-        score_total:      local_score_total,
-      )
-
-      if !force
-        Rails.cache.write("Karma::ActivityLog.add::#{activity.once_ttl.seconds}::#{action}::#{user.id}::#{object}::#{o_id}", true, expires_in: activity.once_ttl.seconds)
-      end
-
-      # set new karma level
-      Karma::User.sync(user)
-    end
-
-    true
-  end
-
-=begin
-
-remove whole karma activity log of an object
-
-  Karma::ActivityLog.remove('Ticket', 123)
-
-=end
-
-  def self.remove(object_name, o_id)
-    object_id = ObjectLookup.by_name(object_name)
-    Karma::ActivityLog.where(
-      object_lookup_id: object_id,
-      o_id:             o_id,
-    ).destroy_all
-  end
-
-  def self.latest(user, limit = 12)
-    result = []
-    logs = Karma::ActivityLog.where(user_id: user.id).order(id: :desc).limit(limit)
-    logs.each do |log|
-      last = result.last
-      if last && last[:object_id] == log.object_id && last[:o_id] == log.o_id && last[:created_at] == log.created_at
-        comment = {
-          description: Karma::Activity.lookup(id: log.activity_id).description,
-          score:       log.score,
-        }
-        last[:comments].push comment
-        last[:score_total] = score_total
-        next
-      end
-      comment = {
-        object_id:   log.object_id,
-        o_id:        log.o_id,
-        description: Karma::Activity.lookup(id: log.activity_id).description,
-        score:       log.score,
-      }
-      data = {
-        comments:    [comment],
-        score_total: log.score_total,
-        created_at:  log.created_at,
-      }
-      result.push data
-    end
-    result
-  end
-
-end

+ 0 - 47
app/models/karma/user.rb

@@ -1,47 +0,0 @@
-# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
-
-class Karma::User < ApplicationModel
-  self.table_name = 'karma_users'
-
-  def self.sync(user)
-    score = Karma.score_by_user(user)
-    level = level_by_score(score)
-    record = Karma::User.find_by(user_id: user.id)
-    if record
-      return record if record.score == score && record.level == level
-
-      record.score = score
-      record.level = level
-      record.save
-      return record
-    end
-    Karma::User.create!(
-      user_id: user.id,
-      level:   level,
-      score:   score,
-    )
-  end
-
-  def self.by_user(user)
-    record = Karma::User.find_by(user_id: user.id)
-    return record if record
-
-    sync(user)
-  end
-
-  def self.level_by_score(score)
-    level = nil
-    karma_levels = Setting.get('karma_levels')
-    karma_levels.each do |local_level|
-      if !level
-        level = local_level[:name]
-      end
-      next if local_level[:start] && score < local_level[:start]
-      next if local_level[:end] && score > local_level[:end]
-
-      level = local_level[:name]
-    end
-    level
-  end
-
-end

+ 0 - 1
app/models/ticket.rb

@@ -10,7 +10,6 @@ class Ticket < ApplicationModel
   include HasTags
   include HasSearchIndexBackend
   include HasOnlineNotifications
-  include HasKarmaActivityLog
   include HasLinks
   include HasObjectManagerAttributes
   include HasTaskbars

Some files were not shown because too many files changed in this diff