X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fuserfilter.php;h=26241f3e377063b63bee7cbf76a7aaaa71465fea;hb=e45ad94e25e672b591a89a7323d89230efdf2645;hp=743ff441718a0bcd743ef552ad632ddee0aef8d2;hpb=4ec03752ab489b6414915b98a459db4bbc5dc95d;p=platal.git diff --git a/classes/userfilter.php b/classes/userfilter.php index 743ff44..26241f3 100644 --- a/classes/userfilter.php +++ b/classes/userfilter.php @@ -52,6 +52,25 @@ class UFC_HasProfile implements UserFilterCondition } // }}} +// {{{ class UFC_AccountType +/** Filters users who have the given account types + */ +class UFC_AccountType implements UserFilterCondition +{ + private $types; + + public function __construct() + { + $this->types = pl_flatten(func_get_args()); + } + + public function buildCondition(PlFilter &$uf) + { + $uf->requireAccounts(); + return XDB::format('a.type IN {?}', $this->types); + } +} + // {{{ class UFC_Hruid /** Filters users based on their hruid * @param $val Either an hruid, or a list of those @@ -965,44 +984,6 @@ class UFC_Job_Company implements UserFilterCondition } // }}} -// {{{ class UFC_Job_Sectorization -/** Filters users based on the ((sub)sub)sector they work in - * @param $val The ID of the sector, or an array of such IDs - * @param $type The kind of search (subsubsector/subsector/sector) - */ -class UFC_Job_Sectorization implements UserFilterCondition -{ - private $val; - private $type; - - public function __construct($val, $type = UserFilter::JOB_SECTOR) - { - self::assertType($type); - if (!is_array($val)) { - $val = array($val); - } - $this->val = $val; - $this->type = $type; - } - - private static function assertType($type) - { - if ($type != UserFilter::JOB_SECTOR && $type != UserFilter::JOB_SUBSECTOR && $type != UserFilter::JOB_SUBSUBSECTOR) { - Platal::page()->killError("Type de secteur non valide."); - } - } - - public function buildCondition(PlFilter &$uf) - { - $sub = $uf->addJobSectorizationFilter($this->type); - $cond = $sub . '.id = ' . XDB::format('{?}', $this->val); - $jsub = $uf->addJobFilter(); - $cond .= ' AND ' . $uf->getVisibilityCondition($jsub . '.pub'); - return $cond; - } -} -// }}} - // {{{ class UFC_Job_Terms /** Filters users based on the job terms they assigned to one of their * jobs. @@ -1037,7 +1018,7 @@ class UFC_Job_Terms implements UserFilterCondition // {{{ class UFC_Job_Description /** Filters users based on their job description * @param $description The text being searched for - * @param $fields The fields to search for (user-defined, ((sub|)sub|)sector) + * @param $fields The fields to search for (CV, user-defined) */ class UFC_Job_Description implements UserFilterCondition { @@ -1073,20 +1054,6 @@ class UFC_Job_Description implements UserFilterCondition $uf->requireProfiles(); $conds[] = 'p.cv ' . XDB::formatWildcards(XDB::WILDCARD_CONTAINS, $this->description); } - if ($this->fields & UserFilter::JOB_SECTOR) { - $sub = $uf->addJobSectorizationFilter(UserFilter::JOB_SECTOR); - $conds[] = $sub . '.name ' . XDB::formatWildcards(XDB::WILDCARD_CONTAINS, $this->description); - } - if ($this->fields & UserFilter::JOB_SUBSECTOR) { - $sub = $uf->addJobSectorizationFilter(UserFilter::JOB_SUBSECTOR); - $conds[] = $sub . '.name ' . XDB::formatWildcards(XDB::WILDCARD_CONTAINS, $this->description); - } - if ($this->fields & UserFilter::JOB_SUBSUBSECTOR) { - $sub = $uf->addJobSectorizationFilter(UserFilter::JOB_SUBSUBSECTOR); - $conds[] = $sub . '.name ' . XDB::formatWildcards(XDB::WILDCARD_CONTAINS, $this->description); - $sub = $uf->addJobSectorizationFilter(UserFilter::JOB_ALTERNATES); - $conds[] = $sub . '.name ' . XDB::formatWildcards(XDB::WILDCARD_CONTAINS, $this->description); - } return implode(' OR ', $conds); } } @@ -1294,37 +1261,6 @@ class UFC_Mentor_Terms implements UserFilterCondition } // }}} -// {{{ class UFC_Mentor_Sectorization -/** Filters users based on mentoring (sub|)sector - * @param $sector ID of (sub)sector - * @param $type Whether we are looking for a sector or a subsector - */ -class UFC_Mentor_Sectorization implements UserFilterCondition -{ - const SECTOR = 1; - const SUBSECTOR = 2; - private $sector; - private $type; - - public function __construct($sector, $type = self::SECTOR) - { - $this->sector = $sector; - $this->type = $type; - } - - public function buildCondition(PlFilter &$uf) - { - $sub = $uf->addMentorFilter(UserFilter::MENTOR_SECTOR); - if ($this->type == self::SECTOR) { - $field = 'sectorid'; - } else { - $field = 'subsectorid'; - } - return $sub . '.' . $field . ' = ' . XDB::format('{?}', $this->sector); - } -} -// }}} - // {{{ class UFC_UserRelated /** Filters users based on a relation toward a user * @param $user User to which searched users are related @@ -2589,31 +2525,17 @@ class UserFilter extends PlFilter /** JOBS */ - const JOB_SECTOR = 0x0001; - const JOB_SUBSECTOR = 0x0002; - const JOB_SUBSUBSECTOR = 0x0004; - const JOB_ALTERNATES = 0x0008; - const JOB_USERDEFINED = 0x0010; - const JOB_CV = 0x0020; - - const JOB_SECTORIZATION = 0x000F; - const JOB_ANY = 0x003F; + const JOB_USERDEFINED = 0x0001; + const JOB_CV = 0x0002; + const JOB_ANY = 0x0003; /** Joins : * pj => profile_job * pje => profile_job_enum - * pjse => profile_job_sector_enum - * pjsse => profile_job_subsector_enum - * pjssse => profile_job_subsubsector_enum - * pja => profile_job_alternates * pjt => profile_job_terms */ - private $with_pj = false; + private $with_pj = false; private $with_pje = false; - private $with_pjse = false; - private $with_pjsse = false; - private $with_pjssse = false; - private $with_pja = false; private $with_pjt = 0; public function addJobFilter() @@ -2630,24 +2552,6 @@ class UserFilter extends PlFilter return 'pje'; } - public function addJobSectorizationFilter($type) - { - $this->addJobFilter(); - if ($type == self::JOB_SECTOR) { - $this->with_pjse = true; - return 'pjse'; - } else if ($type == self::JOB_SUBSECTOR) { - $this->with_pjsse = true; - return 'pjsse'; - } else if ($type == self::JOB_SUBSUBSECTOR) { - $this->with_pjssse = true; - return 'pjssse'; - } else if ($type == self::JOB_ALTERNATES) { - $this->with_pja = true; - return 'pja'; - } - } - /** * Adds a filter on job terms of profile. * @param $nb the number of job terms to use @@ -2672,18 +2576,6 @@ class UserFilter extends PlFilter if ($this->with_pje) { $joins['pje'] = PlSqlJoin::left('profile_job_enum', '$ME.id = pj.jobid'); } - if ($this->with_pjse) { - $joins['pjse'] = PlSqlJoin::left('profile_job_sector_enum', '$ME.id = pj.sectorid'); - } - if ($this->with_pjsse) { - $joins['pjsse'] = PlSqlJoin::left('profile_job_subsector_enum', '$ME.id = pj.subsectorid'); - } - if ($this->with_pjssse) { - $joins['pjssse'] = PlSqlJoin::left('profile_job_subsubsector_enum', '$ME.id = pj.subsubsectorid'); - } - if ($this->with_pja) { - $joins['pja'] = PlSqlJoin::left('profile_job_alternates', '$ME.subsubsectorid = pj.subsubsectorid'); - } if ($this->with_pjt > 0) { for ($i = 1; $i <= $this->with_pjt; ++$i) { $joins['pjt_'.$i] = PlSqlJoin::left('profile_job_term', '$ME.pid = $PID'); @@ -2762,8 +2654,7 @@ class UserFilter extends PlFilter const MENTOR = 1; const MENTOR_EXPERTISE = 2; const MENTOR_COUNTRY = 3; - const MENTOR_SECTOR = 4; - const MENTOR_TERM = 5; + const MENTOR_TERM = 4; public function addMentorFilter($type) { @@ -2778,9 +2669,6 @@ class UserFilter extends PlFilter case self::MENTOR_COUNTRY: $this->pms['pmc'] = 'profile_mentor_country'; return 'pmc'; - case self::MENTOR_SECTOR: - $this->pms['pms'] = 'profile_mentor_sector'; - return 'pms'; case self::MENTOR_TERM: $this->pms['pmt'] = 'profile_mentor_term'; $this->mjtr = true;