* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-function build_javascript_names($data)
+function build_javascript_names($data, $isFemale)
{
$data_array = explode(';;', $data);
$n = count($data_array);
$sn_types_public = build_types('public');
$sn_types_private = build_types('private');
- $full_name = build_full_name($search_names, $sn_types_public);
+ $full_name = build_full_name($search_names, $sn_types_public, $isFemale);
return build_public_name($search_names, $sn_types_public, $full_name) . ';' .
build_private_name($search_names, $sn_types_private);
}
-function build_display_names(&$display_names, $search_names, $private_name_end = null, &$alias = null)
+function build_display_names(&$display_names, $search_names, $isFemale, $private_name_end = null, &$alias = null)
{
$sn_types_public = build_types('public');
- $full_name = build_full_name($search_names, $sn_types_public);
+ $full_name = build_full_name($search_names, $sn_types_public, $isFemale);
$display_names['public_name'] = build_public_name($search_names, $sn_types_public, $full_name);
$display_names['private_name'] = $display_names['public_name'] . $private_name_end;
$display_names['directory_name'] = build_directory_name($search_names, $sn_types_public, $full_name);
return $types;
}
-function build_full_name(&$search_names, &$sn_types)
+function build_full_name(&$search_names, &$sn_types, $isFemale)
{
$name = "";
if (isset($search_names[$sn_types['lastname_ordinary']])) {
|| isset($search_names[$sn_types['pseudonym']])) {
$name .= " (";
if (isset($search_names[$sn_types['lastname_marital']])) {
- $user = S::user();
- if ($user->isFemale()) {
+ if ($isFemale) {
$name .= "Mme ";
} else {
$name .= "M ";
return $name;
}
-function set_profile_display(&$display_names)
+function set_profile_display(&$display_names, $pid)
{
XDB::execute("UPDATE profile_display
SET public_name = {?}, private_name = {?},
WHERE pid = {?}",
$display_names['public_name'], $display_names['private_name'],
$display_names['directory_name'], $display_names['short_name'],
- $display_names['sort_name'], S::v('uid'));
+ $display_names['sort_name'], $pid);
}
-function build_sn_pub()
+function build_sn_pub($pid)
{
$res = XDB::iterator("SELECT CONCAT(sn.particle, sn.name) AS fullname, sn.typeid,
sn.particle, sn.name, sn.id
WHERE sn.pid = {?} AND NOT FIND_IN_SET('not_displayed', e.flags)
AND FIND_IN_SET('public', e.flags)
ORDER BY NOT FIND_IN_SET('always_displayed', e.flags), e.id, sn.name",
- S::i('uid'));
+ $pid);
$sn_old = array();
while ($old = $res->next()) {
$sn_old[$old['typeid']] = array('fullname' => $old['fullname'],
return $sn_old;
}
-function set_alias_names(&$sn_new, $sn_old, $update_new = false, $new_alias = null)
+function set_alias_names(&$sn_new, $sn_old, $pid, $uid, $update_new = false, $new_alias = null)
{
$has_new = false;
foreach ($sn_new as $typeid => $sn) {
XDB::execute("UPDATE profile_name
SET particle = {?}, name = {?}, typeid = {?}
WHERE id = {?} AND pid = {?}",
- $sn['particle'], $sn['name'], $typeid, $sn_old[$typeid]['id'], S::i('uid'));
+ $sn['particle'], $sn['name'], $typeid, $sn_old[$typeid]['id'], $pid);
unset($sn_old[$typeid]);
} elseif ($update_new
|| (isset($sn_old[$typeid]) && $sn_old[$typeid]['fullname'] == $sn['fullname'])) {
XDB::execute("INSERT INTO profile_name (particle, name, typeid, pid)
VALUES ({?}, {?}, {?}, {?})",
- $sn['particle'], $sn['name'], $typeid, S::i('uid'));
+ $sn['particle'], $sn['name'], $typeid, $pid);
unset($sn_old[$typeid]);
} else {
$has_new = true;
if ($sn['fullname'] != '') {
XDB::execute("INSERT INTO profile_name (particle, name, typeid, pid)
VALUES ('', {?}, {?}, {?})",
- $sn['fullname'], $typeid, S::i('uid'));
+ $sn['fullname'], $typeid, $pid);
}
$i = 0;
while (isset($sn[$i])) {
XDB::execute("INSERT INTO profile_name (particle, name, typeid, pid)
VALUES ('', {?}, {?}, {?})",
- $sn[$i], $typeid, S::i('uid'));
+ $sn[$i], $typeid, $pid);
$i++;
}
}
foreach ($sn_old as $typeid => $sn) {
XDB::execute("INSERT INTO profile_name (particle, name, typeid, pid)
VALUES ({?}, {?}, {?}, {?})",
- $sn['particle'], $sn['name'], $typeid, S::i('uid'));
+ $sn['particle'], $sn['name'], $typeid, $pid);
}
} else {
foreach ($sn_old as $typeid => $sn) {
XDB::execute("DELETE FROM profile_name
WHERE pid = {?} AND id = {?}",
- S::i('uid'), $sn['id']);
+ $pid, $sn['id']);
}
}
}
if ($update_new) {
XDB::execute("DELETE FROM aliases
WHERE FIND_IN_SET('usage', flags) AND uid = {?}",
- S::i('uid'));
+ $uid);
}
if ($new_alias) {
XDB::execute("INSERT INTO aliases (alias, type, flags, uid)
VALUES ({?}, 'alias', 'usage', {?})",
- $new_alias, S::i('uid'));
+ $new_alias, $uid);
}
- Profile::rebuildSearchTokens(S::i('uid'));
+ Profile::rebuildSearchTokens($pid);
return $has_new;
}
require_once 'name.func.inc.php';
$this->sn_types = build_types();
- $this->sn_old = build_sn_pub();
+ $this->sn_old = build_sn_pub($this->user->profile()->id());
$this->sn_new = $_search_names;
$this->new_alias = true;
$this->display_names = array();
- build_display_names($this->display_names, $_search_names, $_private_name_end, $this->new_alias);
+ build_display_names($this->display_names, $_search_names,
+ $this->user->profile()->isFemale(), $_private_name_end, $this->new_alias);
foreach ($this->sn_new AS $key => &$sn) {
if (!isset($sn['pub'])) {
unset($this->sn_new[$key]);
{
require_once 'name.func.inc.php';
- set_profile_display($this->display_names);
- set_alias_names($this->sn_new, $this->sn_old, true, $this->new_alias);
+ set_profile_display($this->display_names, $this->user->profile()->id());
+ set_alias_names($this->sn_new, $this->sn_old, $this->user->profile()->id(),
+ $this->user->id(), true, $this->new_alias);
// Update the local User object, to pick up the new bestalias.
$this->user = User::getSilent($this->user->id());
public function save(ProfilePage &$page, $field, $value)
{
require_once 'name.func.inc.php';
- $sn_old = build_sn_pub();
+ $sn_old = build_sn_pub($page->pid());
XDB::execute("DELETE FROM s
USING profile_name AS s
INNER JOIN profile_name_enum AS e ON (s.typeid = e.id)
WHERE s.pid = {?} AND NOT FIND_IN_SET('not_displayed', e.flags)",
$page->pid());
- $has_new = set_alias_names($this->search_names, $sn_old);
+ $has_new = set_alias_names($this->search_names, $sn_old, $page->pid(), $page->owner->id());
// Only requires validation if modification in public names
if ($has_new) {
' Tu recevras un email dès que ces changements auront été effectués.');
} else {
$display_names = array();
- build_display_names($display_names, $this->search_names, $this->private_name_end);
- set_profile_display($display_names);
+ build_display_names($display_names, $this->search_names,
+ $page->profile->isFemale(), $this->private_name_end);
+ set_profile_display($display_names, $page->pid());
}
}
}
$res = $res->fetchOneRow();
$page->assign('public_name', $res[0]);
$page->assign('private_name', $res[1]);
+ $page->assign('isFemale', $this->profile->isFemale() ? 1 : 0);
}
}