Exemplo n.º 1
0
 /** Compute the conditions to use for the current request.
  * @return A PlFilterCondition instance (actually a PFC_And)
  */
 protected function getCond()
 {
     $cond = new PFC_And();
     foreach ($this->criteria as $criterion => $value) {
         switch ($criterion) {
             // ENUM fields
             case WSRequestCriteria::SCHOOL:
                 // Useless criterion: we don't need to check on origin school
                 if (WSRequestCriteria::$choices_enum[$criterion][$value]) {
                     $cond->addChild(new PFC_True());
                 } else {
                     $cond->addChild(new PFC_False());
                 }
                 break;
             case WSRequestCriteria::DIPLOMA:
                 $diploma = WSRequestCriteria::$choices_enum[$criterion][$value];
                 $id_X = XDB::fetchOneCell('SELECT  id
                                          FROM  profile_education_enum
                                         WHERE  abbreviation = {?}', 'X');
                 $cond->addChildren(array(new UFC_EducationSchool($id_X), new UFC_EducationDegree($diploma)));
                 break;
                 // TEXT fields
             // TEXT fields
             case WSRequestCriteria::FIRSTNAME:
             case WSRequestCriteria::LASTNAME:
                 $cond->addChild(new UFC_NameTokens($value, UFC_NameTokens::FLAG_PUBLIC, false, false, $criterion));
                 break;
             case WSRequestCriteria::PROMOTION:
                 $cond->addChild(new PFC_Or(new UFC_Promo(UserFilter::OP_EQUALS, UserFilter::GRADE_ING, $value), new UFC_Promo(UserFilter::OP_EQUALS, UserFilter::GRADE_MST, $value), new UFC_Promo(UserFilter::OP_EQUALS, UserFilter::GRADE_PHD, $value)));
                 break;
             case WSRequestCriteria::ALT_DIPLOMA:
                 $cond->addChild(new UFC_EducationDegree(DirEnum::getIds(DirEnum::EDUDEGREES, $value)));
                 break;
             case WSRequestCriteria::DIPLOMA_FIELD:
                 $cond->addChild(new UFC_EducationField(DirEnum::getIds(DirEnum::EDUFIELDS, $value)));
                 break;
             case WSRequestCriteria::CITY:
                 $cond->addChild(new UFC_AddressField($value, UFC_AddressField::FIELD_LOCALITY, UFC_Address::TYPE_HOME, UFC_Address::FLAG_CURRENT));
                 break;
             case WSRequestCriteria::COUNTRY:
                 $cond->addChild(new UFC_AddressField($value, UFC_AddressField::FIELD_COUNTRY, UFC_Address::TYPE_HOME, UFC_Address::FLAG_CURRENT));
                 break;
             case WSRequestCriteria::ZIPCODE:
                 $cond->addChild(new UFC_AddressField($value, UFC_AddressField::FIELD_ZIPCODE, UFC_Address::TYPE_HOME, UFC_Address::FLAG_CURRENT));
                 break;
             case WSRequestCriteria::JOB_ANY_COUNTRY:
                 $cond->addChild(new UFC_AddressField($value, UFC_AddressField::FIELD_COUNTRY, UFC_Address::TYPE_PRO, UFC_Address::FLAG_ANY));
                 break;
             case WSRequestCriteria::JOB_CURRENT_CITY:
                 $cond->addChild(new UFC_AddressField($value, UFC_AddressField::FIELD_LOCALITY, UFC_Address::TYPE_PRO, UFC_Address::FLAG_ANY));
                 break;
             case WSRequestCriteria::JOB_ANY_COMPANY:
             case WSRequestCriteria::JOB_CURRENT_COMPANY:
                 $cond->addChild(new UFC_Job_Company(UFC_Job_Company::JOBNAME, $value));
                 break;
             case WSRequestCriteria::JOB_ANY_SECTOR:
             case WSRequestCriteria::JOB_CURRENT_SECTOR:
             case WSRequestCriteria::JOB_CURRENT_TITLE:
                 $cond->addChild(new UFC_Job_Terms(DirEnum::getIds(DirEnum::JOBTERMS, $value)));
                 break;
                 // LIST fields
             // LIST fields
             case WSRequestCriteria::HOBBIES:
                 $subcond = new PFC_Or();
                 foreach ($value as $val) {
                     $subcond->addChild(new UFC_Comment($value));
                 }
                 $cond->addChild($subcond);
                 break;
             case WSRequestCriteria::JOB_COMPETENCIES:
             case WSRequestCriteria::JOB_RESUME:
             case WSRequestCriteria::PROFESSIONAL_PROJECT:
                 $subcond = new PFC_Or();
                 foreach ($value as $val) {
                     $subcond->addChild(new UFC_Job_Description($value, UserFilter::JOB_USERDEFINED));
                 }
                 $cond->addChild($subcond);
                 break;
             case WSRequestCriteria::NOT_UID:
                 $cond->addChild(new PFC_Not(new UFC_PartnerSharingID($this->partner->id, $value)));
                 break;
             default:
                 break;
         }
     }
     return $cond;
 }