+ public function get()
+ {
+ return $this->jobterms;
+ }
+
+ public static function fetchData(array $pids, Visibility $visibility)
+ {
+ $data = XDB::iterator('SELECT jt.jtid, jte.full_name, jt.pid, jt.jid
+ FROM profile_job_term AS jt
+ INNER JOIN profile_job AS j ON (jt.pid = j.pid AND jt.jid = j.id)
+ LEFT JOIN profile_job_term_enum AS jte USING(jtid)
+ LEFT JOIN profile_visibility_enum AS pve ON (pve.access_level = {?})
+ WHERE jt.pid IN {?} AND pve.best_display_level + 0 <= j.pub + 0
+ ORDER BY ' . XDB::formatCustomOrder('jt.pid', $pids),
+ $visibility->level(), $pids);
+ return PlIteratorUtils::subIterator($data, PlIteratorUtils::arrayValueCallback('pid'));
+ }
+}
+// }}}
+// {{{ class ProfileMentoringTerms [ Field ]
+class ProfileMentoringTerms extends ProfileJobTerms
+{
+ public static function fetchData(array $pids, Visibility $visibility)
+ {
+ $data = XDB::iterator('SELECT mt.jtid, jte.full_name, mt.pid
+ FROM profile_mentor_term AS mt
+ LEFT JOIN profile_job_term_enum AS jte USING(jtid)
+ WHERE mt.pid IN {?}
+ ORDER BY ' . XDB::formatCustomOrder('mt.pid', $pids),
+ $pids);
+ return PlIteratorUtils::subIterator($data, PlIteratorUtils::arrayValueCallback('pid'));
+ }
+}
+// }}}
+// {{{ class ProfileSkills [ Field ]
+class ProfileSkills extends ProfileField
+{
+ public $skills = array();
+
+ public function __construct(PlInnerSubIterator $it)
+ {
+ $this->pid = $it->value();
+ while ($skill = $it->next()) {
+ $this->skills[$skill['cid']] = $skill;
+ }
+ }
+
+ public static function fetchData(array $pids, Visibility $visibility)
+ {
+ $data = XDB::iterator('SELECT ps.cid, pse.text_fr, ps.level, ps.pid
+ FROM profile_skills AS ps
+ INNER JOIN profile_skill_enum AS pse ON (pse.id = ps.cid)
+ WHERE ps.pid IN {?}
+ ORDER BY ' . XDB::formatCustomOrder('ps.pid', $pids),
+ $pids);
+ return PlIteratorUtils::subIterator($data, PlIteratorUtils::arrayValueCallback('pid'));
+ }
+}
+// }}}
+// {{{ class ProfileLanguages [ Field ]
+class ProfileLanguages extends ProfileField
+{
+ public $languages = array();
+
+ public function __construct(PlInnerSubIterator $it)
+ {
+ static $levels = array(
+ 1 => 'connaissance basique',
+ 2 => 'maîtrise des bases',
+ 3 => 'maîtrise limitée',
+ 4 => 'maîtrise générale',
+ 5 => 'bonne maîtrise',
+ 6 => 'maîtrise complète'
+ );
+
+ $this->pid = $it->value();
+ while ($language = $it->next()) {
+ $this->languages[$language['lid']] = $language;
+ $this->languages[$language['lid']]['level'] = $levels[$language['level']];
+ }
+ }
+
+ public static function fetchData(array $pids, Visibility $visibility)
+ {
+ $data = XDB::iterator('SELECT ps.lid, pse.language, ps.level, ps.pid
+ FROM profile_langskills AS ps
+ INNER JOIN profile_langskill_enum AS pse ON (pse.iso_639_2b = ps.lid)
+ WHERE ps.pid IN {?}
+ ORDER BY ' . XDB::formatCustomOrder('ps.pid', $pids),
+ $pids);
+ return PlIteratorUtils::subIterator($data, PlIteratorUtils::arrayValueCallback('pid'));
+ }
+}
+// }}}
+// {{{ class ProfilePartnerSharing [ Field ]
+class ProfilePartnerSharing extends ProfileField
+{
+ public function __construct(PlInnerSubIterator $it)
+ {
+ require_once 'partnersharing.inc.php';
+
+ $this->pid = $it->value();
+ while ($partner_settings = $it->next()) {
+ $settings = new PartnerSettings($partner_settings);
+ $this->partners_settings[$settings->partner->id] = $settings;
+ }
+ }
+
+ public static function fetchData(array $pids, Visibility $visibility)
+ {
+ $data = XDB::iterator('SELECT ppss.pid, ppss.exposed_uid, ppss.sharing_level,
+ ppss.allow_email, ppss.partner_id,
+ ppse.shortname AS partner_shortname,
+ ppse.name AS partner_name,
+ ppse.url AS partner_url
+ FROM profile_partnersharing_settings AS ppss
+ LEFT JOIN profile_partnersharing_enum AS ppse ON (ppss.partner_id = ppse.id)
+ WHERE ppss.pid IN {?}
+ ORDER BY ' . XDB::formatCustomOrder('ppss.pid', $pids),
+ $pids);
+ return PlIteratorUtils::subIterator($data, PlIteratorUtils::arrayValueCallback('pid'));
+ }
+
+ public function get($partner_id)
+ {
+ if (isset($this->partners_settings[$partner_id])) {
+ return $this->partners_settings[$partner_id];
+ } else {
+ return PartnerSettings::getEmpty($partner_id);
+ }
+ }
+}
+// }}}