X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fufbuilder.inc.php;h=ee8f3fd4b911494693f3299866eb40d8204202e5;hb=5b3680d59f94955355c5d70c2eb10916671add2f;hp=d299d74aa9291743a6ee41b57d49ae7a1ab8ff0a;hpb=4b2e2074289094ec1f85d35d8f41099619049486;p=platal.git diff --git a/include/ufbuilder.inc.php b/include/ufbuilder.inc.php index d299d74..ee8f3fd 100644 --- a/include/ufbuilder.inc.php +++ b/include/ufbuilder.inc.php @@ -73,10 +73,21 @@ class UserFilterBuilder return $this->valid; } + public function isEmpty() + { + $this->buildUFC(); + foreach ($this->fields as $field) { + if (! $field->isEmpty()) { + return false; + } + } + return true; + } + /** Returns the built UFC * @return The UFC, or PFC_False() if an error happened */ - public function &getUFC() + public function getUFC() { $this->buildUFC(); if ($this->valid) { @@ -158,9 +169,9 @@ class UFB_AdvancedSearch extends UserFilterBuilder new UFBF_Group('groupexTxt', 'groupex', 'Groupe X'), new UFBF_Section('sectionTxt', 'section', 'Section'), - new UFBF_Formation('schoolTxt', 'school', "École d'application"), - new UFBF_Diploma('diplomaTxt', 'diploma', 'Diplôme'), - new UFBF_StudiesDomain('fieldTxt', 'field', "Domaine d'études"), + new UFBF_EducationSchool('schoolTxt', 'school', "École d'application"), + new UFBF_EducationDegree('diplomaTxt', 'diploma', 'Diplôme'), + new UFBF_EducationField('fieldTxt', 'field', "Domaine d'études"), new UFBF_Comment('free', 'Commentaire'), new UFBF_Phone('phone_number', 'Téléphone'), @@ -171,6 +182,22 @@ class UFB_AdvancedSearch extends UserFilterBuilder } // }}} +// {{{ class UFB_MentorSearch +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_MentorExpertise('expertise'), + ); + parent::__construct($fields, $envprefix); + } +} +// }}} + // {{{ class UFB_Field abstract class UFB_Field { @@ -219,6 +246,11 @@ abstract class UFB_Field return true; } + public function isEmpty() + { + return $this->empty; + } + /** Create the UFC associated to the field; won't be called * if the field is "empty" * @param &$ufb UFB to which fields must be added @@ -311,6 +343,7 @@ abstract class UFBF_Index extends UFB_Field if (!$ufb->has($this->envfield)) { $this->empty = true; } + $this->val = $ufb->i($this->envfield); return true; } } @@ -400,7 +433,7 @@ abstract class UFBF_Mixed extends UFB_Field $this->val = array($index); } else { $indexes = DirEnum::getIDs($this->direnum, $ufb->s($this->envfield), - $ufb->i('exact') ? DirEnumeration::MODE_EXACT : DirEnumeration::MODE_CONTAINS); + $ufb->i('exact') ? XDB::WILDCARD_EXACT : XDB::WILDCARD_CONTAINS); if (count($indexes) == 0) { return false; } @@ -436,8 +469,7 @@ class UFBF_Quick extends UFB_Field if (S::admin() && strpos($s, '@') !== false) { return new UFC_Email($s); } else if (S::admin() && preg_match('/[0-9]+\.([0-9]+|%)\.([0-9]+|%)\.([0-9]+|%)/', $s)) { - // TODO: create UFC_Ip -// $this->conds->addChild(new UFC_Ip($s)); + $this->conds->addChild(new UFC_Ip($s)); return; } @@ -897,38 +929,38 @@ class UFBF_Section extends UFBF_Index } // }}} -// {{{ class UFBF_Formation -class UFBF_Formation extends UFBF_Mixed +// {{{ class UFBF_EducationSchool +class UFBF_EducationSchool extends UFBF_Mixed { - protected $direnum = DirEnum::SCHOOLS; + protected $direnum = DirEnum::EDUSCHOOLS; protected function buildUFC(UserFilterBuilder &$ufb) { - return new UFC_Formation($this->val); + return new UFC_EducationSchool($this->val); } } // }}} -// {{{ class UFBF_Diploma -class UFBF_Diploma extends UFBF_Mixed +// {{{ class UFBF_EducationDegree +class UFBF_EducationDegree extends UFBF_Mixed { - protected $direnum = DirEnum::DEGREES; + protected $direnum = DirEnum::EDUDEGREES; protected function buildUFC(UserFilterBuilder &$ufb) { - return new UFC_Diploma($this->val); + return new UFC_EducationDegree($this->val); } } // }}} -// {{{ class UFBF_StudiesDomain -class UFBF_StudiesDomain extends UFBF_Mixed +// {{{ class UFBF_EducationField +class UFBF_EducationField extends UFBF_Mixed { - protected $direnum = DirEnum::STUDIESDOMAINS; + protected $direnum = DirEnum::EDUFIELDS; protected function buildUFC(UserFilterBuilder &$ufb) { - return new UFC_StudyField($this->val); + return new UFC_EducationField($this->val); } } // }}} @@ -981,4 +1013,42 @@ class UFBF_Networking extends UFBF_Text } } // }}} + +// {{{ class UFBF_MentorCountry +class UFBF_MentorCountry extends UFBF_Index +{ + protected function buildUFC(UserFilterBuilder &$ufb) + { + return new UFC_Mentor_Country($this->val); + } +} +// }}} + +// {{{ class UFBF_MentorSectorization +class UFBF_MentorSectorization extends UFBF_Index +{ + protected $type; + + public function __construct($envfield, $formtext = '', $type = UFC_Mentor_Sectorization::SECTOR) + { + parent::__construct($envfield, $formtext); + $this->type = $type; + } + + protected function buildUFC(UserFilterBuilder &$ufb) + { + return new UFC_Mentor_Sectorization($this->val, $this->type); + } +} +// }}} + +// {{{ class UFBF_MentorExpertise +class UFBF_MentorExpertise extends UFBF_Text +{ + protected function buildUFC(UserFilterBuilder &$ufb) + { + return new UFC_Mentor_Expertise($this->val); + } +} +// }}} ?>