X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fprofile.php;h=104702b6ec14496b1015bace051b70e468e858d8;hb=c0d4dad8b8e2112e8e7bcf3353ee6a39beef08c5;hp=6b062315be26fb43f44ac4dc4da21c7f8a7ee837;hpb=22771578c2d44fe4488546116a84e1561f083ed7;p=platal.git diff --git a/classes/profile.php b/classes/profile.php index 6b06231..104702b 100644 --- a/classes/profile.php +++ b/classes/profile.php @@ -110,10 +110,13 @@ class Profile implements PlExportable const FETCH_JOB_TERMS = 0x000200; const FETCH_MENTOR_TERMS = 0x000400; const FETCH_DELTATEN = 0x000800; + const FETCH_PARTNER = 0x001000; + const FETCH_SKILL = 0x002000; + const FETCH_LANGUAGE = 0x004000; const FETCH_MINIFICHES = 0x00012D; // FETCH_ADDRESSES | FETCH_EDU | FETCH_JOBS | FETCH_NETWORKING | FETCH_PHONES - const FETCH_ALL = 0x000FFF; // OR of FETCH_* + const FETCH_ALL = 0x007FFF; // OR of FETCH_* static public $descriptions = array( 'search_names' => 'Noms', @@ -318,6 +321,16 @@ class Profile implements PlExportable } } + // Returns younger/older promotion year for a given education. + static public function extremePromotions($education) + { + return XDB::fetchOneRow("SELECT MIN(pe.promo_year) AS min, MAX(pe.promo_year) AS max + FROM profile_education AS pe + INNER JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id) + WHERE pede.degree = {?} AND FIND_IN_SET('primary', pe.flags)", + $education); + } + /** Print a name with the given formatting: * %s = • for women * %f = firstname @@ -353,7 +366,7 @@ class Profile implements PlExportable public function firstName() { - return $this->firstname; + return $this->firstname_ordinary; } public function firstNames() @@ -363,7 +376,7 @@ class Profile implements PlExportable public function lastName() { - return $this->lastname; + return $this->lastname_ordinary; } public function lastNames() @@ -458,7 +471,8 @@ class Profile implements PlExportable * Clears a profile. * *always deletes in: profile_addresses, profile_binets, profile_deltaten, * profile_job, profile_langskills, profile_mentor, profile_networking, - * profile_phones, profile_skills, watch_profile + * profile_partnersharing_settings, profile_phones, profile_skills, + * watch_profile * *always keeps in: profile_corps, profile_display, profile_education, * profile_medals, profile_*_names, profile_photos, search_name * *modifies: profiles @@ -469,7 +483,7 @@ class Profile implements PlExportable 'profile_job', 'profile_langskills', 'profile_mentor', 'profile_networking', 'profile_skills', 'watch_profile', 'profile_phones', 'profile_addresses', 'profile_binets', - 'profile_deltaten'); + 'profile_deltaten', 'profile_partnersharing_settings'); foreach ($tables as $t) { XDB::execute('DELETE FROM ' . $t . ' @@ -479,7 +493,7 @@ class Profile implements PlExportable XDB::execute("UPDATE profiles SET cv = NULL, freetext = NULL, freetext_pub = 'private', - medals_pub = 'private', alias_pub = 'private', + medals_pub = 'private', alias_pub = 'hidden', email_directory = NULL WHERE pid = {?}", $this->id()); @@ -674,7 +688,10 @@ class Profile implements PlExportable public function getEducations($flags, $limit = null) { if ($this->educations == null && !$this->fetched(self::FETCH_EDU)) { - $this->setEducations($this->getProfileField(self::FETCH_EDU)); + $educations = $this->getProfileField(self::FETCH_EDU); + if ($educations) { + $this->setEducations($educations); + } } if ($this->educations == null) { @@ -699,7 +716,10 @@ class Profile implements PlExportable public function getCorps() { if ($this->corps == null && !$this->fetched(self::FETCH_CORPS)) { - $this->setCorps($this->getProfileField(self::FETCH_CORPS)); + $corps = $this->getProfileField(self::FETCH_CORPS); + if ($corps) { + $this->setCorps($corps); + } } return $this->corps; } @@ -794,7 +814,10 @@ class Profile implements PlExportable public function getMentoringCountries() { if ($this->mentor_countries == null && !$this->fetched(self::FETCH_MENTOR_COUNTRY)) { - $this->setMentoringCountries($this->getProfileField(self::FETCH_MENTOR_COUNTRY)); + $countries = $this->getProfileField(self::FETCH_MENTOR_COUNTRY); + if ($countries) { + $this->setMentoringCountries($countries); + } } if ($this->mentor_countries == null) { @@ -821,7 +844,10 @@ class Profile implements PlExportable public function getMentoringTerms() { if ($this->mentor_terms == null && !$this->fetched(self::FETCH_MENTOR_TERMS)) { - $this->setMentoringTerms($this->getProfileField(self::FETCH_MENTOR_TERMS)); + $terms = $this->getProfileField(self::FETCH_MENTOR_TERMS); + if ($terms) { + $this->setMentoringTerms($terms); + } } if ($this->mentor_terms == null) { @@ -831,6 +857,50 @@ class Profile implements PlExportable } } + /* Skills */ + private $skills = null; + public function setSkills(ProfileSkills $skills) + { + $this->skills = $skills; + } + public function getSkills() + { + if ($this->skills == null && !$this->fetched(self::FETCH_SKILL)) { + $skills = $this->getProfileField(self::FETCH_SKILL); + if ($skills) { + $this->setSkills($skills); + } + } + + if ($this->skills == null) { + return array(); + } else { + return $this->skills->skills; + } + } + + /* Languades */ + private $languages = null; + public function setLanguages(ProfileLanguages $languages) + { + $this->languages = $languages; + } + public function getLanguages() + { + if ($this->languages == null && !$this->fetched(self::FETCH_LANGUAGE)) { + $languages = $this->getProfileField(self::FETCH_LANGUAGE); + if ($languages) { + $this->setLanguages($languages); + } + } + + if ($this->languages == null) { + return array(); + } else { + return $this->languages->languages; + } + } + /** DeltaTen */ @@ -882,6 +952,19 @@ class Profile implements PlExportable return array(); } } + + public function getFullBinets() + { + if ($this->visibility->isVisible(Visibility::EXPORT_PRIVATE)) { + return XDB::fetchAllAssoc('SELECT binet_id, text, url + FROM profile_binets AS pb + LEFT JOIN profile_binet_enum AS pbe ON (pbe.id = pb.binet_id) + WHERE pid = {?}', $this->id()); + } else { + return array(); + } + } + public function getBinetsNames() { if ($this->visibility->isVisible(Visibility::EXPORT_PRIVATE)) { @@ -905,7 +988,10 @@ class Profile implements PlExportable public function getMedals() { if ($this->medals == null && !$this->fetched(self::FETCH_MEDALS)) { - $this->setMedals($this->getProfileField(self::FETCH_MEDALS)); + $medals = $this->getProfileField(self::FETCH_MEDALS); + if ($medals) { + $this->setMedals($medals); + } } if ($this->medals == null) { return array(); @@ -913,6 +999,28 @@ class Profile implements PlExportable return $this->medals->medals; } + /** Sharing data with partner websites + */ + private $partners_settings = null; + public function setPartnersSettings(ProfilePartnerSharing $partners_settings) + { + $this->partners_settings = $partners_settings; + } + + public function getPartnerSettings($partner_id) + { + if ($this->partners_settings === null && !$this->fetched(self::FETCH_PARTNER)) { + $settings = $this->getProfileField(self::FETCH_PARTNER); + if ($settings) { + $this->setPartnersSettings($settings); + } + } + if ($this->partners_settings === null) { + return PartnerSettings::getEmpty($partner_id); + } + return $this->partners_settings->get($partner_id); + } + public function compareNames($firstname, $lastname) { $_lastname = mb_strtoupper($this->lastName()); @@ -975,11 +1083,11 @@ class Profile implements PlExportable IF ({?}, pse.text, NULL) AS section, ppn.firstname_main AS firstname, ppn.lastname_main AS lastname, IF ({?}, pn.name, NULL) AS nickname, IF (ppn.firstname_ordinary = \'\', ppn.firstname_main, ppn.firstname_ordinary) AS firstname_ordinary, - IF (ppn.lastname_ordinary = \'\', ppn.firstname_main, ppn.lastname_ordinary) AS lastname_ordinary, + IF (ppn.lastname_ordinary = \'\', ppn.lastname_main, ppn.lastname_ordinary) AS lastname_ordinary, pd.yourself, pd.promo, pd.short_name, pd.public_name AS full_name, pd.directory_name, pd.public_name, pd.private_name, IF (pp.pub >= {?}, pp.display_tel, NULL) AS mobile, - (ph.pub >= {?} AND ph.attach IS NOT NULL) AS has_photo, + (ph.pub >= {?} AND ph.attach IS NOT NULL) AS has_photo, ph.pub as photo_pub, ph.x AS photo_width, ph.y AS photo_height, p.last_change < DATE_SUB(NOW(), INTERVAL 365 DAY) AS is_old, pm.expertise AS mentor_expertise,