Simplify prune plugins and fix array difference error.
[mailshears.git] / lib / prune / prune_plugin.rb
index 0fbe69d12f403f7ed12ce8954b425b72b107d6f1..1046f2d0b29c575a8a4ecfc8c51a54f1e609e6ad 100644 (file)
@@ -1,43 +1,35 @@
 require 'rm/rm_plugin'
 
 module PrunePlugin
-  include RmPlugin
-
   #
   # Plugins for the removal of leftover non-PostfixAdmin users,
   # i.e. after an user has been removed from the PostfixAdmin
   # database.
   #
+  include RmPlugin
+  extend Plugin::Run
 
-  def PrunePlugin.included(c)
-    # Callback, called whenever another class or module includes this
-    # one. The parameter given is the name of the class or module
-    # that included us.
-    @includers ||= []
-    @includers << c
-  end
-
-  def PrunePlugin.includers
-    return @includers
-  end
-
-  def runner()
+  def self.runner()
     return PruneRunner
   end
 
-  def dummy_runner
+  def self.dummy_runner
     return PruneDummyRunner
   end
 
   def get_leftover_domains(db_domains)
     # Given a list of domains, determine which domains belonging to
     # this plugin are not contained in the given list.
-    raise NotImplementedError
+
+    # WARNING! Array difference doesn't work for some reason.
+    return list_domains().select{ |d| !db_domains.include?(d) }
   end
 
   def get_leftover_users(db_users)
     # Given a list of users, determine which users belonging to
     # this plugin are not contained in the given list.
-    raise NotImplementedError
+
+    # WARNING! Array difference doesn't work for some reason.
+    return list_users().select{ |u| !db_users.include?(u) }
   end
 end