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,
- (ph.pub >= {?} AND ph.attach IS NOT NULL) AS has_photo,
+ (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,
p.last_change < DATE_SUB(NOW(), INTERVAL 365 DAY) AS is_old,
pm.expertise AS mentor_expertise,
// The $sub.display_levels cell will contain allowed display levels
// for an access level of $this->visibility_field.
$sub = $this->addVisibilityFieldFilter($this->visibility_field);
- return XDB::format('FIND_IN_SET({?}, ' . $sub . '.display_levels', $level);
+ return XDB::format('FIND_IN_SET({?}, ' . $sub . '.display_levels)', $level);
} else {
if ($this->visibility->isVisible($level)) {
return 'TRUE';
return $joins;
}
- /** VISIBILITY
- */
- private $vlevels = array();
- private $vfields = array();
- public function addVisibilityAbsoluteFilter($level)
- {
- $sub = 'pvel_' . $level;
- $this->vlevels[$level] = $sub;
- return $sub;
- }
-
- public function addVisibilityFieldFilter($field)
- {
- $sub = 'pvef_' . self::getDBSuffix($field);
- $this->vfields[$field] = $sub;
- return $sub;
- }
-
- protected function visibilityJoins()
- {
- $joins = array();
- foreach ($this->vlevels as $level => $sub) {
- $joins[$sub] = PlSqlJoin::inner('profile_visibility_enum', '$ME.access_level = {?}', $level);
- }
- foreach ($this->vfields as $field => $sub) {
- $joins[$sub] = PlSqlJoin::inner('profile_visibility_enum', '$ME.access_level = ' . $field);
- }
- return $joins;
- }
-
/** PERMISSIONS
*/
private $at = false;
$sub = $this->addPartnerSharingFilter($partner_id);
$this->visibility_field = $sub . '.sharing_level';
}
+ /** VISIBILITY
+ */
+ private $vlevels = array();
+ private $vfields = array();
+ public function addVisibilityAbsoluteFilter($level)
+ {
+ $sub = 'pvel_' . $level;
+ $this->vlevels[$level] = $sub;
+ return $sub;
+ }
+
+ public function addVisibilityFieldFilter($field)
+ {
+ $sub = 'pvef_' . self::getDBSuffix($field);
+ $this->vfields[$field] = $sub;
+ return $sub;
+ }
+
+ protected function visibilityJoins()
+ {
+ $joins = array();
+ foreach ($this->vlevels as $level => $sub) {
+ $joins[$sub] = PlSqlJoin::inner('profile_visibility_enum', '$ME.access_level = {?}', $level);
+ }
+ foreach ($this->vfields as $field => $sub) {
+ $joins[$sub] = PlSqlJoin::inner('profile_visibility_enum', '$ME.access_level = ' . $field);
+ }
+ return $joins;
+ }
+
}
// }}}
// {{{ class ProfileFilter
{
const PTA = 'pta';
- private $partner;
+ private $partner_id;
- public function __construct($partner)
+ public function __construct($partner_id)
{
- $this->partner = $partner;
+ $this->partner_id = $partner_id;
}
public function buildCondition(PlFilter $uf)
{
- $sub = $uf->addPartnerSharingFilter($this->partner);
+ $sub = $uf->addPartnerSharingFilter($this->partner_id);
return XDB::format("$sub.exposed_uid IS NOT NULL");
}
}
*/
class UFC_PartnerSharingEmail extends UserFilterCondition
{
- private $partner;
+ private $partner_id;
- public function __construct($partner)
+ public function __construct($partner_id)
{
- $this->partner = $partner;
+ $this->partner_id = $partner_id;
}
public function buildCondition(PlFilter $uf)
{
- $sub = $uf->addPartnerSharingFilter($this->partner);
+ $sub = $uf->addPartnerSharingFilter($this->partner_id);
return XDB::format("$sub.allow_email IN ('digest', 'direct')");
}
}
*/
class UFC_PartnerSharingID extends UserFilterCondition
{
- private $partner;
+ private $partner_id;
private $ids;
- public function __construct($partner)
+ public function __construct($partner_id)
{
- $this->partner = $partner;
+ $this->partner_id = $partner_id;
$ids = func_get_args();
array_shift($ids);
$this->ids = pl_flatten($ids);
{
$uf->requireProfiles();
$ids = $this->ids;
- $sub = $uf->addPartnerSharingFilter($this->partner);
+ $sub = $uf->addPartnerSharingFilter($this->partner_id);
return XDB::format("$sub.exposed_uid IN {?}", $ids);
}
}
public $user_site;
public $user_email;
+ public $pub;
+ public $email_pub;
+
/** Fields are:
* pid, id, company_id, description, url, email
*/
public static function fetchData(array $pids, Visibility $visibility)
{
CompanyList::preload($pids);
- $data = XDB::iterator('SELECT id, pid, description, url as user_site, jobid,
- IF(pve.best_display_level + 0 <= email_pub + 0, email, NULL) AS user_email
+ $data = XDB::iterator('SELECT id, pid, description, url as user_site, jobid, pub, IF(pve.best_display_level + 0 <= email_pub + 0, email, NULL) AS user_email, email_pub
FROM profile_job
LEFT JOIN profile_visibility_enum AS pve ON (pve.access_level = {?})
WHERE pid IN {?} AND pve.best_display_level + 0 <= pub + 0
$profiles = array();
if ($matches) {
// TODO : improve fetching by passing an adequate FETCH field
- $iter = $pf->iterProfiles(new PlLimit($this->amount), 0x0000, Visibility::VIEW_PRIVATE);
+ $iter = $pf->iterProfiles(new PlLimit($this->amount), 0x0000, Visibility::get(Visibility::VIEW_PRIVATE));
while ($profile = $iter->next()) {
if ($profile->getPartnerSettings($this->partner->id)->exposed_uid !== 0) {
$profile_data = new WSRequestEntry($this->partner, $profile);
return null;
}
case WSRequestFields::MOBILE_PHONE:
- $phones = $p->getPhones(Phone::TYPE_MOBILE);
+ $phones = $p->getPhones(Profile::PHONE_TYPE_MOBILE | Profile::PHONE_LINK_PROFILE);
if (count($phones)) {
$phone = array_pop($phones);
if ($this->isVisible($phone->pub)) {
WHERE pid = {?}', $p->pid);
XDB::execute('INSERT INTO profile_photo_tokens
SET pid = {?}, token = {?},
- expires = ADDTIME(NOW(), \'0:05:00\'',
+ expires = ADDTIME(NOW(), \'0:05:00\')',
$p->pid, $token);
$size_mappings = array(
WSRequestFields::PIC_SMALL => 'small',
case WSRequestFields::CURRENT_CITY:
$address = $p->getMainAddress();
if ($address != null && $this->isVisible($address->pub)) {
- return $address->localityName;
+ return $address->locality;
} else {
return null;
}
case WSRequestFields::CURRENT_COUNTRY:
$address = $p->getMainAddress();
if ($address != null && $this->isVisible($address->pub)) {
- return $address->countryId;
+ return $address->country;
} else {
return null;
}
$res = array();
foreach ($jobs as $job) {
if ($this->isVisible($job->pub)) {
- $jobs[] = $this->jobToResponse($job);
+ $res[] = $this->jobToResponse($job);
}
}
- return $jobs;
+ return $res;
case WSRequestFields::MINI_RESUME:
if ($this->isVisible(Visibility::EXPORT_PRIVATE)) {
return $p->cv;
case WSRequestFields::FRIENDS:
$friends = array();
if ($this->isVisible(Visibility::EXPORT_PRIVATE)) {
- while ($contact = $p->owner()->iterContacts()) {
- $cps = $contact->getPartnerSettings(UFC_PartnerSharing::PTA);
+ $contacts = $p->owner()->iterContacts();
+ if ($contacts == null) {
+ return $friends;
+ }
+
+ while ($contact = $contacts->next()) {
+ $cps = $contact->getPartnerSettings($this->partner->id);
if ($cps->sharing_visibility->isVisible(Visibility::EXPORT_PRIVATE)) {
$friends[] = $cps->exposed_uid;
}
$data = array();
$data['street'] = $address->postalText;
$data['zipcode'] = $address->postalCode;
- $data['city'] = $address->localityName;
- $data['country'] = $address->countryId;
+ $data['city'] = $address->locality;
+ $data['country'] = $address->country;
$data['latitude'] = $address->latitude;
$data['longitude'] = $address->longitude;
return $data;
const GENDER_MAN = 'man';
const GENDER_WOMAN = 'woman';
+ const DIPLOMA_ING = 'engineer';
+ const DIPLOMA_MASTER = 'master';
+ const DIPLOMA_PHD = 'phd';
+
public static $CHOICES = array(
self::UID,
self::FIRSTNAME,