<?php
/***************************************************************************
- * Copyright (C) 2003-2009 Polytechnique.org *
+ * Copyright (C) 2003-2010 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
static private $v_values = array('public' => array('public'),
'ax' => array('ax', 'public'),
'private' => array('private', 'ax', 'public'));
+
const VISIBILITY_PUBLIC = 'public';
const VISIBILITY_AX = 'ax';
const VISIBILITY_PRIVATE = 'private';
+ /* name tokens */
+ const LASTNAME = 'lastname';
+ const FIRSTNAME = 'firstname';
+ const NICKNAME = 'nickname';
+ const PSEUDONYM = 'pseudonym';
+ const NAME = 'name';
+ /* name variants */
+ const VN_MARITAL = 'marital';
+ const VN_ORDINARY = 'ordinary';
+ const VN_OTHER = 'other';
+ const VN_INI = 'ini';
+ /* display names */
+ const DN_FULL = 'directory_name';
+ const DN_DISPLAY = 'yourself';
+ const DN_YOURSELF = 'yourself';
+ const DN_DIRECTORY = 'directory_name';
+ const DN_PRIVATE = 'private_name';
+ const DN_PUBLIC = 'public_name';
+ const DN_SHORT = 'short_name';
+ const DN_SORT = 'sort_name';
+
+ static public $name_variants = array(
+ self::LASTNAME => array(self::VN_MARITAL, self::VN_ORDINARY),
+ self::FIRSTNAME => array(self::VN_ORDINARY, self::VN_INI, self::VN_OTHER)
+ );
+
const ADDRESS_MAIN = 0x000001;
const ADDRESS_PERSO = 0x000002;
const ADDRESS_PRO = 0x000004;
return $this->firstname;
}
+ public function firstNames()
+ {
+ return $this->nameVariants(self::FIRSTNAME);
+ }
+
public function lastName()
{
return $this->lastname;
}
+ public function lastNames()
+ {
+ return $this->nameVariants(self::LASTNAME);
+ }
+
public function isFemale()
{
return $this->sex == PlUser::GENDER_FEMALE;
return $this->data;
}
+ private function nameVariants($type)
+ {
+ $vals = array($this->$type);
+ foreach (self::$name_variants[$type] as $var) {
+ $vartype = $type . '_' . $var;
+ $varname = $this->$vartype;
+ if ($varname != null && $varname != "") {
+ $vals[] = $varname;
+ }
+ }
+ return array_unique($vals);
+ }
+
public function __get($name)
{
if (property_exists($this, $name)) {
Platal::page()->kill("Visibility invalide: " . $visibility);
}
$this->visibility = self::$v_values[$visibility];
- if ($this->mobile && !in_array($this->modbile_pub, $this->visibility)) {
+ if ($this->mobile && !in_array($this->mobile_pub, $this->visibility)) {
unset($this->data['mobile']);
}
}
+ /* 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)
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)
return $job->next();
}
+ /* Binets
+ */
+ public function getBinets()
+ {
+ return XDB::fetchColumn('SELECT binet_id
+ FROM binets_ins
+ WHERE user_id = {?}', $this->id());
+ }
+
public function owner()
{
}
return XDB::fetchAllAssoc('SELECT p.*, p.sex = \'female\' AS sex, pe.entry_year, pe.grad_year,
pn_f.name AS firstname, pn_l.name AS lastname, pn_n.name AS nickname,
- 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,
+ IF(pn_uf.name IS NULL, pn_f.name, pn_uf.name) AS firstname_ordinary,
+ IF(pn_ul.name IS NULL, pn_l.name, pn_ul.name) AS lastname_ordinary,
pd.promo AS promo, pd.short_name, pd.directory_name AS full_name,
- pp.display_tel AS mobile, pp.pub AS mobile_pub
+ pd.directory_name, 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');
}
return self::getBulkProfilesWithPIDs($table);
}
+ public static function isDisplayName($name)
+ {
+ return $name == self::DN_FULL || $name == self::DN_DISPLAY
+ || $name == self::DN_YOURSELF || $name == self::DN_DIRECTORY
+ || $name == self::DN_PRIVATE || $name == self::DN_PUBLIC
+ || $name == self::DN_SHORT || $name == self::DN_SORT;
+ }
+
public static function getNameTypeId($type, $for_sql = false)
{
if (!S::has('name_types')) {