From: Stéphane Jacob Date: Tue, 25 May 2010 12:48:56 +0000 (+0200) Subject: Replaces calls to session datas by cals to the object in name edition. X-Git-Tag: xorg/1.0.0~242 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=e8a7cf31258ca08662a91f7db64f17d056d8a6a4;p=platal.git Replaces calls to session datas by cals to the object in name edition. Signed-off-by: Stéphane Jacob --- diff --git a/htdocs/javascript/profile.js b/htdocs/javascript/profile.js index 56255ef..2c5291c 100644 --- a/htdocs/javascript/profile.js +++ b/htdocs/javascript/profile.js @@ -79,10 +79,10 @@ function addSearchName() }); } -function removeSearchName(i) +function removeSearchName(i, isFemale) { $('#search_name_' + i).remove(); - updateNameDisplay(); + updateNameDisplay(isFemale); } function changeNameFlag(i) @@ -104,7 +104,7 @@ function changeNameFlag(i) } } -function updateNameDisplay() +function updateNameDisplay(isFemale) { var searchnames = ''; for (var i = 0; i < 10; i++) { @@ -113,7 +113,7 @@ function updateNameDisplay() searchnames += $('#search_name_' + i).find(':text').val() + ';;'; } } - Ajax.update_html(null, 'profile/ajax/buildnames/' + searchnames, function(data){ + Ajax.update_html(null, 'profile/ajax/buildnames/' + searchnames + '/' + isFemale, function(data){ var name = data.split(';'); $('#public_name').html(name[0]); $('#private_name').html(name[0] + name[1]); diff --git a/include/name.func.inc.php b/include/name.func.inc.php index 547f535..7b761da 100644 --- a/include/name.func.inc.php +++ b/include/name.func.inc.php @@ -19,7 +19,7 @@ * 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); @@ -35,15 +35,15 @@ function build_javascript_names($data) $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); @@ -75,7 +75,7 @@ function build_types($pub = null) 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']])) { @@ -88,8 +88,7 @@ function build_full_name(&$search_names, &$sn_types) || 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 "; @@ -190,7 +189,7 @@ function build_sort_name(&$search_names, &$sn_types) 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 = {?}, @@ -198,10 +197,10 @@ function set_profile_display(&$display_names) 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 @@ -210,7 +209,7 @@ function build_sn_pub() 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'], @@ -221,7 +220,7 @@ function build_sn_pub() 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) { @@ -230,13 +229,13 @@ function set_alias_names(&$sn_new, $sn_old, $update_new = false, $new_alias = nu 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; @@ -245,13 +244,13 @@ function set_alias_names(&$sn_new, $sn_old, $update_new = false, $new_alias = nu 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++; } } @@ -262,27 +261,27 @@ function set_alias_names(&$sn_new, $sn_old, $update_new = false, $new_alias = nu 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; } diff --git a/include/validations/names.inc.php b/include/validations/names.inc.php index 41ee0f1..3bdd3f3 100644 --- a/include/validations/names.inc.php +++ b/include/validations/names.inc.php @@ -45,12 +45,13 @@ class NamesReq extends Validate 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]); @@ -124,8 +125,9 @@ class NamesReq extends Validate { 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()); diff --git a/modules/profile.php b/modules/profile.php index 7957fde..855e7db 100644 --- a/modules/profile.php +++ b/modules/profile.php @@ -483,12 +483,12 @@ class ProfileModule extends PLModule $page->assign('i', $id); } - function handler_ajax_buildnames(&$page, $data) + function handler_ajax_buildnames(&$page, $data, $isFemale) { header('Content-Type: text/html; charset=utf-8'); $page->changeTpl('profile/general.buildnames.tpl', NO_SKIN); require_once 'name.func.inc.php'; - $page->assign('names', build_javascript_names($data)); + $page->assign('names', build_javascript_names($data, $isFemale)); } function handler_referent(&$page, $pf) diff --git a/modules/profile/general.inc.php b/modules/profile/general.inc.php index d6a2b21..4359cac 100644 --- a/modules/profile/general.inc.php +++ b/modules/profile/general.inc.php @@ -200,13 +200,13 @@ class ProfileSettingSearchNames implements ProfileSetting 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) { @@ -216,8 +216,9 @@ class ProfileSettingSearchNames implements ProfileSetting ' 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()); } } } @@ -591,6 +592,7 @@ class ProfileSettingGeneral extends ProfilePage $res = $res->fetchOneRow(); $page->assign('public_name', $res[0]); $page->assign('private_name', $res[1]); + $page->assign('isFemale', $this->profile->isFemale() ? 1 : 0); } } diff --git a/templates/profile/general.searchname.tpl b/templates/profile/general.searchname.tpl index 8d76c6a..ef613e1 100644 --- a/templates/profile/general.searchname.tpl +++ b/templates/profile/general.searchname.tpl @@ -30,7 +30,8 @@ {else}{icon name="flag_red" title="site privé"}{/if}   {if $sn_type_list} - {foreach from=$sn_type_list item=sn_type} {/foreach} @@ -49,14 +50,14 @@ + {if $sn.error} class="error"{/if} size="25" onkeyup="updateNameDisplay({$isFemale});"/> {if $sn.has_particle} {/if} - {if !$sn.always_displayed} + {if !$sn.always_displayed} {icon name=cross title="Supprimer ce nom"} {/if}