<?php
/***************************************************************************
- * Copyright (C) 2003-2011 Polytechnique.org *
+ * Copyright (C) 2003-2014 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
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 = 0x001FFF; // OR of FETCH_*
+ const FETCH_ALL = 0x007FFF; // OR of FETCH_*
static public $descriptions = array(
'search_names' => 'Noms',
'yourself' => 'Nom affiché',
'freetext' => 'Commentaire',
'freetext_pub' => 'Affichage du commentaire',
+ 'axfreetext' => 'Commentaire AX',
'photo' => 'Photographie',
'photo_pub' => 'Affichage de la photographie',
'addresses' => 'Adresses',
$this->visibility = $visibility;
}
+ public function __destruct()
+ {
+ // Need to delete objects allocated by the profile
+ // http://www.php.net/manual/en/function.unset.php#98692
+ unset($this->owner);
+ }
+
public function id()
{
return $this->pid;
}
}
+ // 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
return $this->short_name;
}
+ public function sortName()
+ {
+ return $this->sort_name;
+ }
+
public function firstName()
{
- return $this->firstname;
+ return $this->firstname_ordinary;
}
public function firstNames()
public function lastName()
{
- return $this->lastname;
+ return $this->lastname_ordinary;
}
public function lastNames()
}
XDB::execute("UPDATE profiles
- SET cv = NULL, freetext = NULL, freetext_pub = 'private',
- medals_pub = 'private', alias_pub = 'private',
+ SET cv = NULL, freetext = NULL, freetext_pub = 'private', axfreetext = NULL,
+ medals_pub = 'private', alias_pub = 'hidden',
email_directory = NULL
WHERE pid = {?}",
$this->id());
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) {
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;
}
+ /**
+ * Retrieve the name of the corps which has been done.
+ *
+ * Note: this function first tries getCorps(), and if this field is blank
+ * tries to find an education which degree is "Corps".
+ *
+ * Returns an empty string if nothing has been found.
+ */
+ public function getCorpsName()
+ {
+ $corps = $this->getCorps();
+ if ($corps && $corps->current) {
+ $corpsList = DirEnum::getOptions(DirEnum::CURRENTCORPS);
+ return $corpsList[$corps->current];
+ }
+
+ foreach ($this->getExtraEducations() as $edu) {
+ if (!strcasecmp($edu->degree, 'Corps')) {
+ if ($edu->school_short) {
+ return $edu->school_short;
+ } elseif ($edu->school) {
+ return $edu->school;
+ }
+ }
+ }
+ return '';
+ }
+
/** Networking
*/
private $networks = null;
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) {
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) {
}
}
+ /* 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
*/
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)) {
}
}
+ /* Hobbies
+ */
+ public function getHobbies() {
+ if ($this->visibility->isVisible(Visibility::EXPORT_PRIVATE)) {
+ return XDB::fetchAllAssoc('type', 'SELECT type, GROUP_CONCAT(text)
+ FROM profile_hobby
+ WHERE pid = {?}
+ GROUP BY type', $this->id());
+ } else {
+ return XDB::fetchAllAssoc('type', 'SELECT type, GROUP_CONCAT(text)
+ FROM profile_hobby
+ WHERE pub = \'public\' AND pid = {?}
+ GROUP BY type', $this->id());
+ }
+ }
+
/* Medals
*/
private $medals = null;
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();
public function getPartnerSettings($partner_id)
{
- if ($this->partners_settings == null && !$this->fetched(self::FETCH_PARTNER)) {
- $this->setPartnersSettings($this->getProfileField(self::FETCH_PARTNER));
+ 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) {
+ if ($this->partners_settings === null) {
return PartnerSettings::getEmpty($partner_id);
}
return $this->partners_settings->get($partner_id);
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,
+ pd.directory_name, pd.public_name, pd.private_name, pd.sort_name,
IF (pp.pub >= {?}, pp.display_tel, NULL) AS mobile,
(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,
*/
public static function getAccountEquivalentName($name)
{
- switch ($name)
- {
- case self::DN_DIRECTORY:
- case self::DN_SORT:
+ switch ($name) {
+ case self::DN_DIRECTORY:
return 'directory_name';
- case self::DN_FULL:
- case self::DN_PUBLIC:
+ case self::DN_SORT:
+ return 'sort_name';
+ case self::DN_FULL:
+ case self::DN_PUBLIC:
+ case self::DN_PRIVATE:
+ case self::DN_SHORT:
return 'full_name';
- case self::DN_PRIVATE:
- case self::DN_SHORT:
- case self::DN_YOURSELF:
- default:
+ case self::DN_YOURSELF:
+ return 'display_name';
+ default:
return 'display_name';
}
}
}
}
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
?>