Actually merge the emails into base.

This commit is contained in:
Dominik Pantůček 2023-04-06 19:46:33 +02:00
parent 43aea708f9
commit 0f76514a46
3 changed files with 23 additions and 12 deletions

View file

@ -153,7 +153,7 @@ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
(newline)) (newline))
;; Load the members database (required for everything anyway) ;; Load the members database (required for everything anyway)
(define MB (define MB0
(if (-action-) (if (-action-)
(let ((mb (load-members (*members-directory*) #t))) (let ((mb (load-members (*members-directory*) #t)))
(if (-needs-bank-) (if (-needs-bank-)
@ -161,6 +161,12 @@ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
mb)) mb))
#f)) #f))
;; Load ML(s)
(define internal-ml (load-mailman-list "internal"))
;; Merge
(define MB (members-base-merge-mailman MB0 internal-ml))
;; If a member is specified by either id or nick, get its record ;; If a member is specified by either id or nick, get its record
(define mr (define mr
(if (-member-id-) (if (-member-id-)

View file

@ -31,6 +31,7 @@
*mailman-bin* *mailman-bin*
list-mailman-lists list-mailman-lists
list-mailman-list-members list-mailman-list-members
load-mailman-list
load-mailman-lists load-mailman-lists
find-mailman-list find-mailman-list
mailman-list-name mailman-list-name
@ -78,7 +79,9 @@
(define mailman-list-name car) (define mailman-list-name car)
(define mailman-list-members cdr) (define mailman-list-members cdr)
;; Loads a single mailman list as mailman structure ;; Loads a single mailman list as mailman structure, if
;; unsuccessfull, returns only a list with ML name and no member
;; emails.
(define (load-mailman-list name) (define (load-mailman-list name)
(make-mailman-list name (make-mailman-list name
(list-mailman-list-members name))) (list-mailman-list-members name)))

View file

@ -244,15 +244,17 @@
string-ci<?)) string-ci<?))
;; Merges given ML members into members base ;; Merges given ML members into members base
(define (members-base-merge-mailman mb listname emails) (define (members-base-merge-mailman mb ml)
(let ((listname (car ml))
(emails (cdr ml)))
(foldl (lambda (mb email) (foldl (lambda (mb email)
(members-base-update mb (members-base-update mb
(lambda (mr) (lambda (mr)
(equal? (member-record-info 'mail) (equal? (member-record-info 'mail)
email)) email))
(lambda (mr) (lambda (mr)
(member-record-add-mailman mr listname)))) (member-add-mailman mr listname))))
mb mb
emails)) emails)))
) )