Merge branch 'platal-1.0.0'
[platal.git] / include / ufbuilder.inc.php
index 94f76c2..09dc307 100644 (file)
@@ -140,6 +140,18 @@ class UserFilterBuilder
         return Env::blank($key, $strict);
     }
 
+    public function hasAlnum($key)
+    {
+        $str = $this->s($key);
+        return preg_match('/[a-z0-9]/i', $str);
+    }
+
+    public function hasAlpha($key)
+    {
+        $str = $this->s($key);
+        return preg_match('/[a-z]/i', $str);
+    }
+
     public function isOn($key)
     {
         return $this->has($key) && $this->t($key) == 'on';
@@ -181,6 +193,7 @@ class UFB_AdvancedSearch extends UserFilterBuilder
             new UFBF_JobSector('sector', 'Poste'),
             new UFBF_JobDescription('jobdescription', 'Fonction'),
             new UFBF_JobCv('cv', 'CV'),
+            new UFBF_JobTerms('jobterm', 'Mots-clefs'),
 
             new UFBF_Nationality('nationaliteTxt', 'nationalite', 'Nationalité'),
             new UFBF_Binet('binetTxt', 'binet', 'Binet'),
@@ -194,6 +207,8 @@ class UFB_AdvancedSearch extends UserFilterBuilder
             new UFBF_Comment('free', 'Commentaire'),
             new UFBF_Phone('phone_number', 'Téléphone'),
             new UFBF_Networking('networking_address', 'networking_type', 'Networking et sites webs'),
+
+            new UFBF_Mentor('only_referent', 'Référent'),
         );
         parent::__construct($fields, $envprefix);
     }
@@ -206,9 +221,8 @@ class UFB_MentorSearch extends UserFilterBuilder
     public function __construct($envprefix = '')
     {
         $fields = array(
-            new UFBF_MentorCountry('pays_sel'),
-            new UFBF_MentorSectorization('sector', '', UFC_Mentor_Sectorization::SECTOR),
-            new UFBF_MentorSectorization('subSector', '', UFC_Mentor_Sectorization::SUBSECTOR),
+            new UFBF_MentorCountry('country'),
+            new UFBF_MentorTerm('jobterm', 'jobtermText'),
             new UFBF_MentorExpertise('expertise'),
         );
         parent::__construct($fields, $envprefix);
@@ -436,7 +450,7 @@ abstract class UFBF_Mixed extends UFB_Field
 
     protected function check(UserFilterBuilder &$ufb)
     {
-        if ($ufb->blank($this->envfieldindex) && $ufb->blank($this->envfield)) {
+        if ($ufb->blank($this->envfieldindex) && !$ufb->hasAlnum($this->envfield)) {
             $this->empty = true;
             return true;
         }
@@ -450,7 +464,7 @@ abstract class UFBF_Mixed extends UFB_Field
             }
             $this->val = array($index);
         } else {
-            $indexes = DirEnum::getIDs($this->direnum, $ufb->t($this->envfield), 
+            $indexes = DirEnum::getIDs($this->direnum, $ufb->t($this->envfield),
                 $ufb->b('exact') ? XDB::WILDCARD_EXACT : XDB::WILDCARD_CONTAINS);
             if (count($indexes) == 0) {
                 return false;
@@ -842,6 +856,16 @@ class UFBF_JobSector extends UFBF_Mixed
 }
 // }}}
 
+// {{{ class UFBF_JobTerms
+class UFBF_JobTerms extends UFBF_Index
+{
+    protected function buildUFC(UserFilterBuilder &$ufb)
+    {
+        return new UFC_Job_Terms($this->val);
+    }
+}
+// }}}
+
 // {{{ class UFBF_JobDescription
 class UFBF_JobDescription extends UFBF_Text
 {
@@ -1027,6 +1051,16 @@ class UFBF_Networking extends UFBF_Text
 }
 // }}}
 
+// {{{ class UFBF_Mentor
+class UFBF_Mentor extends UFBF_Bool
+{
+    protected function buildUFC(UserFilterBuilder &$ufb)
+    {
+        return new UFC_Mentor();
+    }
+}
+// }}}
+
 // {{{ class UFBF_MentorCountry
 class UFBF_MentorCountry extends UFBF_Text
 {
@@ -1037,6 +1071,16 @@ class UFBF_MentorCountry extends UFBF_Text
 }
 // }}}
 
+// {{{ class UFBF_Mentorterm
+class UFBF_MentorTerm extends UFBF_Index
+{
+    protected function buildUFC(UserFilterBuilder &$ufb)
+    {
+        return new UFC_Mentor_Terms($this->val);
+    }
+}
+// }}}
+
 // {{{ class UFBF_MentorSectorization
 class UFBF_MentorSectorization extends UFBF_Index
 {