Add UFO_IsAdmin
[platal.git] / classes / userfilter / conditions.inc.php
index 817fa4d..7a2ded5 100644 (file)
@@ -31,7 +31,7 @@
  */
 abstract class UserFilterCondition implements PlFilterCondition
 {
-    const OP_EQUALS     = '==';
+    const OP_EQUALS     = '=';
     const OP_GREATER    = '>';
     const OP_NOTGREATER = '<=';
     const OP_LESSER     = '<';
@@ -324,6 +324,19 @@ class UFC_Hrpid extends UserFilterCondition
     }
 }
 // }}}
+// {{{ class UFC_HasEmailRedirect
+/** Filters users, keeping only those with a valid email redirection.
+ */
+class UFC_HasEmailRedirect extends UserFilterCondition
+{
+    public function buildCondition(PlFilter $uf)
+    {
+        $sub_redirect = $uf->addEmailRedirectFilter();
+        $sub_options = $uf->addEmailOptionsFilter();
+        return 'e' . $sub_redirect . '.flags = \'active\' OR FIND_IN_SET(\'googleapps\', ' . $sub_options . '.storage)';
+    }
+}
+// }}}
 // {{{ class UFC_Ip
 /** Filters users based on one of their last IPs
  * @param $ip IP from which connection are checked
@@ -418,6 +431,7 @@ class UFC_Promo extends UserFilterCondition
 
     public function export()
     {
+        $export = $this->buildExport('promo');
         $export['comparison'] = $this->comparison;
         if ($this->grade != UserFilter::DISPLAY) {
             $export['grade'] = $this->grade;
@@ -801,6 +815,28 @@ class UFC_Sex extends UserFilterCondition
     }
 }
 // }}}
+// {{{ class UFC_NLSubscribed
+/** Filters users based on NL subscription
+ * @param $nlid NL whose subscribers we are selecting
+ * @param $issue Select only subscribers who have not yet received that issue
+ */
+class UFC_NLSubscribed extends UserFilterCondition
+{
+    private $nlid;
+    private $issue_id;
+    public function __construct($nlid, $issue_id)
+    {
+        $this->nlid = $nlid;
+        $this->issue_id = $issue_id;
+    }
+
+    public function buildCondition(PlFilter $uf)
+    {
+        $sub = $uf->addNewsLetterFilter($this->nlid);
+        return XDB::format($sub . '.last < {?}', $this->issue_id);
+    }
+}
+// }}}
 // {{{ class UFC_Group
 /** Filters users based on group membership
  * @param $group Group whose members we are selecting
@@ -1489,7 +1525,7 @@ class UFC_Mentor_Terms extends UserFilterCondition
 abstract class UFC_UserRelated extends UserFilterCondition
 {
     protected $user;
-    public function __construct(PlUser &$user)
+    public function __construct(PlUser $user)
     {
         $this->user =& $user;
     }
@@ -1534,7 +1570,7 @@ class UFC_WatchRegistration extends UFC_UserRelated
 class UFC_WatchPromo extends UFC_UserRelated
 {
     private $grade;
-    public function __construct(PlUser &$user, $grade = UserFilter::GRADE_ING)
+    public function __construct(PlUser $user, $grade = UserFilter::GRADE_ING)
     {
         parent::__construct($user);
         $this->grade = $grade;