X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fprofile.php;h=0f5eb73d0b7a380023a793b735f39e170f1d9249;hb=bc0276a2d79d88a56656514fe24bd427c0ef3b88;hp=953d1d9c744cb14a385c024bb53ca41bace2b7c7;hpb=673e56aa757fce4ea57c27ab2c0d5ce87d713e51;p=platal.git diff --git a/classes/profile.php b/classes/profile.php index 953d1d9..0f5eb73 100644 --- a/classes/profile.php +++ b/classes/profile.php @@ -1,6 +1,6 @@ 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; @@ -321,6 +328,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 @@ -356,7 +373,7 @@ class Profile implements PlExportable public function firstName() { - return $this->firstname; + return $this->firstname_ordinary; } public function firstNames() @@ -366,7 +383,7 @@ class Profile implements PlExportable public function lastName() { - return $this->lastname; + return $this->lastname_ordinary; } public function lastNames() @@ -483,7 +500,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()); @@ -714,6 +731,34 @@ class Profile implements PlExportable 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; @@ -942,6 +987,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)) { @@ -1060,7 +1118,7 @@ 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, @@ -1204,18 +1262,19 @@ class Profile implements PlExportable */ 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'; } }