+ $value = array();
+ $sn = $sn_all->next();
+ while ($sn_type = $sn_types->next()) {
+ if ($sn_type['id'] == $sn['typeid']) {
+ $value[] = $sn;
+ if ($sn) {
+ $sn = $sn_all->next();
+ }
+ } else {
+ $value[] = array('name' => '',
+ 'particle' => '',
+ 'typeid' => $sn_type['id'],
+ 'type' => $sn_type['type'],
+ 'type_name' => $sn_type['name'],
+ 'has_particle' => $sn_type['has_particle'],
+ 'always_displayed' => 1,
+ 'pub' => 1);
+ }
+ }
+ if ($sn) {
+ do {
+ $value[] = $sn;
+ } while ($sn = $sn_all->next());
+ }
+ } else {
+ require_once 'name.func.inc.php';
+
+ $res = XDB::query("SELECT s.particle, s.name
+ FROM profile_name AS s
+ INNER JOIN profile_name_enum AS e ON (e.id = s.typeid)
+ WHERE s.pid = {?} AND e.type LIKE '%ini'
+ ORDER BY e.type = 'firstname_ini'",
+ $page->pid());
+ $res = $res->fetchAllAssoc();
+ $initial = array();
+ $initial['lastname'] = $res[0]['particle'] . $res[0]['name'];
+ $initial['firstname'] = $res[1]['name'];
+ $sn_types = build_types();
+ $this->search_names = array();
+ foreach ($value as &$sn) {
+ $sn['name'] = trim($sn['name']);
+ if ($sn['type'] == 'firstname' || $sn['type'] == 'lastname') {
+ $sn['name'] = $this->prepare($page, $sn['type'], $sn['name'],
+ $initial[$sn['type']], $success_tmp);
+ $success = $success && $success_tmp;
+ }
+ if ($sn['pub']) {
+ if (isset($sn['particle']) && ($sn['particle'] != '')) {
+ list($particle, $name) = explode(' ', $sn['name'], 2);
+ $particle = trim($particle) . ' ';
+ if (!$name) {
+ list($particle, $name) = explode('\'', $sn['name'], 2);
+ $particle = trim($particle);
+ }
+ } else {
+ $particle = '';
+ $name = $sn['name'];
+ }
+ }
+ if ($sn['name'] != '') {
+ if ($sn['pub']) {
+ $this->search_names[$sn['typeid']] = array('fullname' => $sn['name'],
+ 'name' => $name,
+ 'particle' => $particle,
+ 'pub' => $sn['pub']);
+ } else {
+ if (isset($this->search_names[$sn['typeid']])) {
+ $this->search_names[$sn['typeid']][] = $sn['name'];
+ } else {
+ $this->search_names[$sn['typeid']] = array('fullname' => $sn['name']);
+ }
+ $sn['type_name'] = $sn_types[$sn['typeid']];
+ }
+ }
+ }
+ $res = XDB::query("SELECT public_name, private_name
+ FROM profile_display
+ WHERE pid = {?}",
+ S::v('uid'));
+ list($public_name, $private_name) = $res->fetchOneRow();
+ if ($success) {
+ $sn_types_private = build_types('private');
+ $this->private_name_end = build_private_name($this->search_names, $sn_types_private);
+ $private_name = $public_name . $this->private_name_end;
+ }
+ Platal::page()->assign('public_name', $public_name);
+ Platal::page()->assign('private_name', $private_name);
+ }