X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fprofile.php;h=d9b55b076aa640cd92a37cae24f3dd6d157f5e39;hb=51c2c63a898801a7a6839f7b08313c12ddd1c47f;hp=304ca7bf9edc8739c2ad44a490e11538c2a3bf7b;hpb=ae163e7a83670527fcc67e38b5bbc0902b7fe119;p=platal.git diff --git a/classes/profile.php b/classes/profile.php index 304ca7b..d9b55b0 100644 --- a/classes/profile.php +++ b/classes/profile.php @@ -1,6 +1,6 @@ 'Noms', + 'nationality1' => 'Nationalité', + 'nationality2' => '2e nationalité', + 'nationality3' => '3e nationalité', + 'promo_display' => 'Promotion affichée', + 'email_directory' => 'Email annuaire papier', + 'networking' => 'Messageries…', + 'tels' => 'Téléphones', + 'edus' => 'Formations', + 'promo' => 'Promotion de sortie', + 'birthdate' => 'Date de naissance', + 'yourself' => 'Nom affiché', + 'freetext' => 'Commentaire', + 'freetext_pub' => 'Affichage du commentaire', + 'photo' => 'Photographie', + 'photo_pub' => 'Affichage de la photographie', + 'addresses' => 'Adresses', + 'corps' => 'Corps', + 'cv' => 'CV', + 'jobs' => 'Emplois', + 'section' => 'Section', + 'binets' => 'Binets', + 'medals' => 'Décorations', + 'medals_pub' => 'Affichage des décorations', + 'competences' => 'Compétences', + 'langues' => 'Langues', + 'expertise' => 'Expertises (mentoring)', + 'terms' => 'Compétences (mentoring)', + 'countries' => 'Pays (mentoring)' + ); + private $fetched_fields = 0x000000; private $pid; @@ -486,17 +518,19 @@ class Profile { if ($this->has_photo) { if ($data && ($this->photo == null || $this->photo->mimeType == null)) { - $res = XDB::fetchOneAssoc('SELECT attach, attachmime, x, y + $res = XDB::fetchOneAssoc('SELECT attach, attachmime, x, y, last_update FROM profile_photos WHERE pid = {?}', $this->pid); - $this->photo = PlImage::fromData($res['attach'], $res['attachmime'], $res['x'], $res['y']); + $this->photo = PlImage::fromData($res['attach'], 'image/' .$res['attachmime'], $res['x'], $res['y'], $res['last_update']); } else if ($this->photo == null) { $this->photo = PlImage::fromData(null, null, $this->photo_width, $this->photo_height); } return $this->photo; } else if ($fallback) { - return PlImage::fromFile(dirname(__FILE__).'/../htdocs/images/none.png', - 'image/png'); + if ($this->mainEducation() == 'X') { + return PlImage::fromFile(dirname(__FILE__) . '/../htdocs/images/none_x.png', 'image/png'); + } + return PlImage::fromFile(dirname(__FILE__) . '/../htdocs/images/none_md.png', 'image/png'); } return null; } @@ -538,11 +572,15 @@ class Profile public function getMainAddress() { - $addr = $this->getAddresses(self::ADDRESS_PERSO | self::ADDRESS_MAIN); - if (count($addr) == 0) { - return null; + $main = $this->getAddresses(self::ADDRESS_MAIN); + $perso = $this->getAddresses(self::ADDRESS_PERSO); + + if (count($main)) { + return array_pop($main); + } else if (count($perso)) { + return array_pop($perso); } else { - return array_pop($addr); + return null; } } @@ -805,6 +843,24 @@ class Profile return ($isOk && ($maxlen > 2 || $maxlen == strlen($_lastname))); } + /* Export to JSON + */ + public function export() + { + return array( + 'hrpid' => $this->hrid(), + 'display_name' => $this->shortName(), + 'full_name' => $this->fullName(), + 'directory_name' => $this->directory_name, + 'promo' => $this->promo(), + 'year_promo' => $this->yearpromo(), + 'is_active' => $this->isActive(), + 'first_name' => $this->firstName(), + 'last_name' => $this->lastName(), + 'is_female' => $this->isFemale(), + ); + } + private static function fetchProfileData(array $pids, $respect_order = true, $fields = 0x0000, $visibility = null) { if (count($pids) == 0) { @@ -1007,7 +1063,7 @@ class Profile } } - public static function rebuildSearchTokens($pids) + public static function rebuildSearchTokens($pids, $transaction = true) { if (!is_array($pids)) { $pids = array($pids); @@ -1049,7 +1105,9 @@ class Profile $eltScore, $key['public']); } } - XDB::startTransaction(); + if ($transaction) { + XDB::startTransaction(); + } XDB::execute('DELETE FROM search_name WHERE pid IN {?}', $pids); @@ -1057,7 +1115,9 @@ class Profile XDB::rawExecute('INSERT INTO search_name (token, pid, soundex, score, flags) VALUES ' . implode(', ', $names)); } - XDB::commit(); + if ($transaction) { + XDB::commit(); + } } /** The school identifier consists of 6 digits. The first 3 represent the