- $has_new = false;
- foreach ($sn_new as $typeid => $sn) {
- if (isset($sn['pub'])) {
- if (isset($sn_old[$typeid]) && ($sn_old[$typeid]['fullname'] == $sn['fullname'] && $update_new)) {
- 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'));
- 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'));
- unset($sn_old[$typeid]);
- } else {
- $has_new = true;
- }
- } else {
- if ($sn['fullname'] != '') {
- XDB::execute("INSERT INTO profile_name (particle, name, typeid, pid)
- VALUES ('', {?}, {?}, {?})",
- $sn['fullname'], $typeid, S::i('uid'));
- }
- $i = 0;
- while (isset($sn[$i])) {
- XDB::execute("INSERT INTO profile_name (particle, name, typeid, pid)
- VALUES ('', {?}, {?}, {?})",
- $sn[$i], $typeid, S::i('uid'));
- $i++;
- }
+ $public_names['particles'] = new PlFlagSet();
+ static $suffixes = array('main', 'marital', 'ordinary');
+ foreach ($suffixes as $suffix) {
+ if (isset($public_names['particle_' . $suffix]) && ($public_names['particle_' . $suffix] == 1 || $public_names['particle_' . $suffix] == 'on')) {
+ $public_names['particles']->addFlag($suffix, 1);