OSDN Git Service

Model::Usres: add 'clearRookie' method and update 'update' method
authorhylom <hylom@users.sourceforge.jp>
Fri, 21 Oct 2016 18:10:17 +0000 (03:10 +0900)
committerhylom <hylom@users.sourceforge.jp>
Fri, 21 Oct 2016 18:10:17 +0000 (03:10 +0900)
src/newslash_web/lib/Newslash/Model/Users.pm

index d47f0c8..aa53b68 100644 (file)
@@ -506,6 +506,43 @@ EOSQL
     return { error => 0, uid => $uid, password => $passwd };
 }
 
+=head2 clearRookie($uid, $time)
+
+clear Rookie flag.
+
+=over 4
+
+=item Return value
+
+1/0
+
+=back
+
+=cut
+
+sub clearRookie {
+    my ($self, $uid, $time) = @_;
+    return if !$uid || $uid == 1; # uid 1 is anonymous
+
+    my $dbh = $self->connect_db;
+
+    if ($time) {
+        my $sql = <<"EOSQL";
+UPDATE users_class SET rookie = 0, rookie_cleared = NOW() WHERE uid = ?
+EOSQL
+        my $rs = $dbh->do($sql, undef, $uid);
+        return if !$rs;
+    }
+    else {
+        my $sql = <<"EOSQL";
+UPDATE users_class SET rookie = 0, rookie_cleared = ? WHERE uid = ?
+EOSQL
+        my $rs = $dbh->do($sql, undef,$time,  $uid);
+        return if !$rs;
+    }
+    return 1;
+}
+
 #========================================================================
 
 =head2 update
@@ -536,9 +573,40 @@ sub update {
             return $self->_update_users_info_add($uid, $params{field}, $params{add});
         }
     }
+    elsif ($params{target} eq 'class') {
+        if (exists $params{field} && exists $params{value}) {
+            return $self->_update_users_class($uid, $params{field}, $params{value});
+        }
+        elsif (exists $params{field} && $params{now}) {
+            return $self->_update_users_class_now($uid, $params{field});
+        }
+    }
     return;
 }
 
+sub _update_users_class_now {
+    my ($self, $uid, $column) = @_;
+    my $sql = "UPDATE users_class SET ? = NOW() WHERE uid = ?";
+    my $dbh = $self->connect_db();
+    my $rs = $dbh->do($sql, undef, $column, $uid);
+    if (!$rs) {
+        return;
+    }
+    $dbh->disconnect;
+    return 1;
+}
+
+sub _update_users_class {
+    my ($self, $uid, $column, $value) = @_;
+    my $sql = "UPDATE users_class SET ? = ? WHERE uid = ?";
+    my $dbh = $self->connect_db();
+    my $rs = $dbh->do($sql, undef, $column, $value, $uid);
+    if (!$rs) {
+        return;
+    }
+    $dbh->disconnect;
+    return 1;
+}
 
 sub _update_users_info_add {
     my ($self, $uid, $field, $value) = @_;