OSDN Git Service

Model::Users: add _prefs_to_config method and update convert_old_prefs method
authorhylom <hylom@users.sourceforge.jp>
Fri, 3 Feb 2017 12:20:09 +0000 (21:20 +0900)
committerhylom <hylom@users.sourceforge.jp>
Fri, 3 Feb 2017 12:20:09 +0000 (21:20 +0900)
src/newslash_web/lib/Newslash/Model/Users.pm

index 837a90e..9c646a8 100644 (file)
@@ -187,7 +187,6 @@ sub select {
         elsif (exists $params{author}) {
             $user = $self->_select("users", author => $params{author});
         }
-
         if ($user) {
             return $self->_create_user_object($user);
         }
@@ -234,7 +233,10 @@ sub select {
         if (exists $params{uid}) {
             $ret = $self->_select("ns_users_config", uid => $params{uid});
             return if !$ret;
-            return if !@$ret;
+            if (!@$ret) {
+                return $self->_prefs_to_config($params{uid});
+                #return;
+            }
             my $configs = $ret->[0]->{configs};
             return from_json($configs) || {};
         }
@@ -243,16 +245,20 @@ sub select {
     return $ret->[0];
 }
 
-sub convert_old_prefs {
+sub _prefs_to_config {
     my ($self, $uid) = @_;
     my $new_cfg = {};
 
     # for users table
-    my $users = $self->select(uid => $uid);
-    $new_cfg->{homepage} = defined $users->{homepage} ? $users->{homepage} : "";
-    $new_cfg->{signature} = defined $users->{sig} ? $users->{sig} : "";
+    my $rs = $self->_select('users', uid => $uid);
+    if (!$rs || !@$rs) {
+        return {};
+    }
+    my $user = $rs->[0];
+    $new_cfg->{homepage} = defined $user->{homepage} ? $user->{homepage} : "";
+    $new_cfg->{signature} = defined $user->{sig} ? $user->{sig} : "";
 
-    # for users_comments table
+    # for user_comments table
     my $mapping = {
                    nosigs => 'hide_signature',
                    noscores => 'hide_score',
@@ -267,12 +273,12 @@ sub convert_old_prefs {
         }
     }
 
-    # for users_info table
+    # for user_info table
     my $info = $self->select(target => 'info', uid => $uid);
     $new_cfg->{realname} = defined $info->{realname} ? $info->{realname} : "";
     $new_cfg->{biography} = defined $info->{bio} ? $info->{bio} : "";
 
-    # users_param
+    # user_param
     my $old = $self->select(target => 'param', uid => $uid);
 
     $new_cfg->{fold_threshold} = defined $old->{d2_highlightthresh} ? 0 + $old->{d2_highlightthresh} : 1;
@@ -292,8 +298,20 @@ sub convert_old_prefs {
         $new_cfg->{enable_hotkey} = 1;
     }
 
+    return $new_cfg;
+}
+
+sub convert_old_prefs {
+    my ($self, $uid) = @_;
+    my $new_cfg = $self->_prefs_to_config($uid);
+
     # apply configs
-    my $cfg = $self->select(target => 'config', uid => $uid);
+    my $cfg = {};
+    my $ret = $self->_select("ns_users_config", uid => $uid);
+    if ($ret && @$ret) {
+        $cfg = from_json($ret->[0]->{configs});
+    }
+    #my $cfg = $self->select(target => 'config', uid => $uid);
     $cfg ||= {};
     my $updated = 0;
     for my $k (keys %$new_cfg) {