Fixes nationalities deletion.
[platal.git] / modules / profile / general.inc.php
index d6a2b21..470d7ec 100644 (file)
@@ -19,6 +19,8 @@
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
+require_once 'name.func.inc.php';
+
 class ProfileSettingSearchNames implements ProfileSetting
 {
     private $private_name_end;
@@ -38,8 +40,7 @@ class ProfileSettingSearchNames implements ProfileSetting
 
     private function prepareField($value)
     {
-        $value = mb_strtoupper($value);
-        return preg_replace('/[^A-Z]/', ' ', $value);
+        return name_to_basename($value);
     }
 
     private function prepare(ProfilePage &$page, $field, $value, $init, &$success)
@@ -153,11 +154,18 @@ class ProfileSettingSearchNames implements ProfileSetting
                 }
                 if ($sn['pub']) {
                     if (isset($sn['particle']) && ($sn['particle'] != '')) {
+                        // particle is before first blank
                         list($particle, $name) = explode(' ', $sn['name'], 2);
                         $particle = trim($particle) . ' ';
                         if (!$name) {
+                            // particle is before first quote
                             list($particle, $name) = explode('\'', $sn['name'], 2);
                             $particle = trim($particle);
+                            if (!$name) {
+                                // actually there is no particle
+                                $particle = '';
+                                $name = $sn['name'];
+                            }
                         }
                     } else {
                         $particle = '';
@@ -200,13 +208,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 +224,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());
         }
     }
 }
@@ -554,7 +563,8 @@ class ProfileSettingGeneral extends ProfilePage
         if ($this->changed['yourself']) {
             XDB::execute('UPDATE  accounts
                              SET  display_name = {?}
-                           WHERE  pid = {?}', $this->pid());
+                           WHERE  uid = {?}',
+                         $this->values['yourself'], $this->owner->id());
         }
         if ($this->changed['promo_display']) {
             if ($this->values['promo_display']{0} == $this->profile->mainEducation()
@@ -591,6 +601,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);
     }
 }