Adds UFC_Nationality and UFC_Binet
authorRaphaël Barrois <raphael.barrois@polytechnique.org>
Thu, 28 Jan 2010 11:39:44 +0000 (12:39 +0100)
committerRaphaël Barrois <raphael.barrois@polytechnique.org>
Sat, 13 Feb 2010 23:33:55 +0000 (00:33 +0100)
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
classes/userfilter.php

index 29430ab..d6ce657 100644 (file)
@@ -201,6 +201,30 @@ class UFC_NameTokens implements UserFilterCondition
 }
 // }}}
 
+// {{{ class UFC_Nationality
+class UFC_Nationality implements UserFilterCondition
+{
+    private $nationality;
+
+    public function __construct($nationality)
+    {
+        $this->nationality = $nationality;
+    }
+
+    public function buildCondition(PlFilter &$uf)
+    {
+        $uf->requireProfiles();
+        $nat = XDB::format('{?}', $this->nationality);
+        $conds = array(
+            'p.nationality1 = ' . $nat,
+            'p.nationality2 = ' . $nat,
+            'p.nationality3 = ' . $nat,
+        );
+        return implode(' OR ', $conds);
+    }
+}
+// }}}
+
 // {{{ class UFC_Dead
 /** Filters users based on death date
  * @param $comparison Comparison operator
@@ -358,6 +382,24 @@ class UFC_Group implements UserFilterCondition
 }
 // }}}
 
+// {{{ class UFC_Binet
+class UFC_Binet implements UserFilterCondition
+{
+    private $binet;
+
+    public function __construct($binet)
+    {
+        $this->binet = $binet;
+    }
+
+    public function buildCondition(PlFilter &$uf)
+    {
+        $sub = $uf->addBinetsFilter();
+        return $sub . 'binet_id = ' . XDB::format('{?}', $this->binet);
+    }
+}
+// }}}
+
 // {{{ class UFC_Email
 /** Filters users based on email address
  * @param $email Email whose owner we are looking for
@@ -1830,6 +1872,26 @@ class UserFilter extends PlFilter
         return $joins;
     }
 
+    /** BINETS
+     */
+
+    private $with_binets = false;
+    public function addBinetsFilter()
+    {
+        $this->requireProfiles();
+        $this->with_binets = true;
+        return 'bi';
+    }
+
+    protected function binetsJoins()
+    {
+        $joins = array();
+        if ($this->with_binets) {
+            $joins['bi'] = new PlSqlJoin(PlSqlJoin::MODE_LEFT, 'binets_ins', '$ME.uid = $PID');
+        }
+        return $joins;
+    }
+
     /** EMAILS
      */
     private $e = array();