Uses UserFilters to count NL members.
authorStéphane Jacob <sj@m4x.org>
Thu, 3 Nov 2011 09:53:17 +0000 (10:53 +0100)
committerStéphane Jacob <sj@m4x.org>
Thu, 3 Nov 2011 09:53:17 +0000 (10:53 +0100)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
include/newsletter.inc.php

index b9e51dc..7733f02 100644 (file)
@@ -400,23 +400,16 @@ class NewsLetter
      */
     public function subscriberCount()
     {
-        return XDB::fetchOneCell('SELECT  COUNT(uid)
-                                    FROM  newsletter_ins
-                                   WHERE  nlid = {?}', $this->id);
+        $uf = new UserFilter(new UFC_NLSubscribed($this->id));
+        return $uf->getTotalCount();
     }
 
     /** Get the count of subscribers with non valid redirection.
      */
     public function lostSubscriberCount()
     {
-        return XDB::fetchOneCell('SELECT  COUNT(DISTINCT(n.uid))
-                                    FROM  newsletter_ins         AS n
-                              INNER JOIN  accounts               AS a ON (n.uid = a.uid)
-                              INNER JOIN  account_types          AS t ON (t.type = a.type)
-                               LEFT JOIN  email_redirect_account AS r ON (r.uid = a.uid AND r.flags = \'active\' AND r.broken_level < 3
-                                                                          AND r.type != \'imap\' AND r.type != \'homonym\')
-                                   WHERE  n.nlid = {?} AND r.redirect IS NULL AND a.state = \'active\' AND FIND_IN_SET(\'mail\', t.perms)',
-                                 $this->id);
+        $uf = new UserFilter(new PFC_And(new UFC_NLSubscribed($this->id), new PFC_Not(new UFC_HasEmailRedirect())));
+        return $uf->getTotalCount();
     }
 
     /** Get the number of subscribers to the NL whose last received mailing was $last.