X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fprofile.php;h=0ce66e760e9bfbd39763840272f8bfeddaedef87;hb=833a6e86ea17d40444ae32cd6c92b9359f383e71;hp=11b08edd6733c9dbb7ece3a892356ab08b2dd2fb;hpb=d2100923749766ffcf61745b0145cf82a3886716;p=platal.git diff --git a/classes/profile.php b/classes/profile.php index 11b08ed..0ce66e7 100644 --- a/classes/profile.php +++ b/classes/profile.php @@ -61,6 +61,9 @@ class Profile $this->data = $data; $this->pid = $this->data['pid']; $this->hrpid = $this->data['hrpid']; + if (!S::logged()) { + $this->setVisibilityLevel(self::VISIBILITY_PUBLIC); + } } public function id() @@ -164,6 +167,32 @@ class Profile } + /* Photo + */ + public function getPhoto($fallback = true) + { + /* TODO: migrate photo table to profile_photo, change uid to pid + */ + $cond = ''; + if ($this->visibility) { + $cond = ' AND pub IN ' . XDB::formatArray($this->visibility); + } + $res = XDB::query('SELECT * + FROM photo + WHERE attachmime IN (\'jpeg\', \'png\') + ' . $cond . ' AND uid = {?}', + $this->id()); + if ($res->numRows() > 0) { + $photo = $res->fetchOneAssoc(); + return PlImage::fromData($photo['attach'], 'image/' . $photo['attachmime'], + $photo['x'], $photo['y']); + } else if ($fallback) { + return PlImage::fromFile(dirname(__FILE__).'/../htdocs/images/none.png', + 'image/png'); + } + return null; + } + /* Addresses */ public function getAddresses($flags, $limit = null) @@ -301,11 +330,10 @@ class Profile return XDB::iterator('SELECT pje.name, pje.acronym, pje.url, pje.email, pje.NAF_code, pj.description, pj.url AS user_site, IF (' . $cond . ', pj.email, NULL) AS user_email, - pjfe.name AS function, pjse.name AS sector, - pjsse.name AS subsector, pjssse.name AS subsubsector + pjse.name AS sector, pjsse.name AS subsector, + pjssse.name AS subsubsector FROM profile_job AS pj INNER JOIN profile_job_enum AS pje ON (pje.id = pj.jobid) - LEFT JOIN profile_job_function_enum AS pjfe ON (pjfe.id = pj.functionid) LEFT JOIN profile_job_sector_enum AS pjse ON (pjse.id = pj.sectorid) LEFT JOIN profile_job_subsector_enum AS pjsse ON (pjsse.id = pj.subsectorid) LEFT JOIN profile_job_subsubsector_enum AS pjssse ON (pjssse.id = pj.subsubsectorid) @@ -339,21 +367,22 @@ class Profile IF(pn_uf.name IS NULL, pn_f.name, pn_uf.name) AS firstname_usual, IF(pn_ul.name IS NULL, pn_l.name, pn_ul.name) AS lastname_usual, pd.promo AS promo, pd.short_name, pd.directory_name AS full_name, - pp.display_tel AS mobile, pp.pub AS mobile_pub + pp.display_tel AS mobile, pp.pub AS mobile_pub, ph.pub AS photo_pub FROM profiles AS p INNER JOIN profile_display AS pd ON (pd.pid = p.pid) INNER JOIN profile_education AS pe ON (pe.uid = p.pid AND FIND_IN_SET(\'primary\', pe.flags)) INNER JOIN profile_name AS pn_f ON (pn_f.pid = p.pid - AND pn_f.typeid = ' . self::getNameTypeId('lastname', true) . ') + AND pn_f.typeid = ' . self::getNameTypeId('firstname', true) . ') INNER JOIN profile_name AS pn_l ON (pn_l.pid = p.pid - AND pn_l.typeid = ' . self::getNameTypeId('firstname', true) . ') + AND pn_l.typeid = ' . self::getNameTypeId('lastname', true) . ') LEFT JOIN profile_name AS pn_uf ON (pn_uf.pid = p.pid - AND pn_uf.typeid = ' . self::getNameTypeId('lastname_ordinary', true) . ') + AND pn_uf.typeid = ' . self::getNameTypeId('firstname_ordinary', true) . ') LEFT JOIN profile_name AS pn_ul ON (pn_ul.pid = p.pid - AND pn_ul.typeid = ' . self::getNameTypeId('firstname_ordinary', true) . ') + AND pn_ul.typeid = ' . self::getNameTypeId('lastname_ordinary', true) . ') LEFT JOIN profile_name AS pn_n ON (pn_n.pid = p.pid AND pn_n.typeid = ' . self::getNameTypeId('nickname', true) . ') LEFT JOIN profile_phones AS pp ON (pp.uid = p.pid AND pp.link_type = \'user\' AND tel_type = \'mobile\') + LEFT JOIN photo AS ph ON (ph.uid = p.pid) WHERE p.pid IN ' . XDB::formatArray($pids) . ' GROUP BY p.pid'); }