OSDN Git Service

Model::users::Param: fix set() to reveice {funcion => ""} argument
authorhylom <hylom@users.sourceforge.jp>
Thu, 8 Nov 2018 11:53:53 +0000 (20:53 +0900)
committerhylom <hylom@users.sourceforge.jp>
Thu, 8 Nov 2018 11:53:53 +0000 (20:53 +0900)
src/newslash_web/lib/Newslash/Model/Users/Param.pm

index e9330bf..41a53ce 100644 (file)
@@ -27,18 +27,33 @@ sub set {
         return;
     }
 
+    my $ph = "?";
+    if (ref($value) eq "HASH") {
+        for my $subkey (keys %$value) {
+            if (lc($subkey) eq "function") {
+                $ph = $value->{function};
+                $value = undef;
+                last;
+            }
+        }
+    }
+
+    my @params = defined $value
+      ? ($uid, $name, $value, $name, $value)
+      : ($uid, $name, $name);
+
     my $sql = <<"EOSQL";
 INSERT INTO users_param
     (uid, name, value)
   VALUES
-    (?,   ?,    ?)
+    (?,   ?,    $ph)
   ON DUPLICATE KEY UPDATE
-    name = ?, value = ?
+    name = ?, value = $ph
 EOSQL
 
     my $dbh = $self->connect_db;
-    my $rs = $dbh->do($sql, undef, $uid, $name, $value,
-                      $name, $value);
+    my $rs = $dbh->do($sql, undef, @params);
+
     if (!defined $rs) {
         $self->last_error($dbh->errstr);
     }