OSDN Git Service

Model::Stories: add update()
authorhylom <hylom@users.sourceforge.jp>
Thu, 27 Apr 2017 10:42:51 +0000 (19:42 +0900)
committerhylom <hylom@users.sourceforge.jp>
Thu, 27 Apr 2017 10:42:51 +0000 (19:42 +0900)
src/newslash_web/lib/Newslash/Model/Stories.pm
src/newslash_web/t/models/stories.t

index 3c6c181..0d43051 100644 (file)
@@ -293,6 +293,25 @@ EOSQL
     return $rs;
 }
 
+=head2 update
+
+this implementation uses old slash's updateStory($sid, $data),
+$sid is takable sid or stoid.
+
+=cut
+
+sub update {
+    my ($self, $params, $user, $extra_params, $opts) = @_;
+    $opts ||= {};
+    $opts->{update} = 1;
+    if (!$params->{stoid}) {
+        $self->set_error("stoid not given");
+        return;
+    }
+    return $self->create($params, $user, $extra_params, $opts);
+}
+
+
 =head2 create(\%params, $uid)
 
 create a story.
@@ -327,6 +346,7 @@ stoid
 sub create {
     my ($self, $params, $user, $extra_params, $opts) = @_;
     return if $self->check_readonly;
+    $opts ||= {};
 
     # check parameters
     my $msg = "";
@@ -368,7 +388,18 @@ sub create {
     my $topics_chosen = $params->{topics_chosen};
 
     my $slash_db = Newslash::Model::SlashDB->new($self->{options});
-    my ($sid, $stoid) = $slash_db->createStory($params);
+    my ($sid, $stoid);
+    if ($opts->{update}) {
+        my $rs = $slash_db->updateStory($params->{stoid}, $params);
+        if (!$rs) {
+            return;
+        }
+        $sid = $params->{sid};
+        $stoid = $params->{stoid};
+    }
+    else {
+        ($sid, $stoid) = $slash_db->createStory($params);
+    }
 
     my $globjs = $self->new_instance_of("Newslash::Model::Globjs");
     my $globj_id = $globjs->getGlobjidFromTargetIfExists("stories", $params->{stoid});
@@ -382,7 +413,7 @@ sub create {
                                      globj_id => $globj_id,
                                      private => 0,
                                     );
-            warn "set_tag fault..." if !$ret
+            #warn "set_tag fault..." if !$ret
         }
     }
     #return $sid;
@@ -612,6 +643,7 @@ sub _generalize {
     }
 
     $story->{time_string} = format_datetime($story->{time});
+    $story->{createtime} = $story->{time};
     $story->{discussion_id} = $story->{discussion};
 }
 
index 12381d4..ced1e43 100644 (file)
@@ -40,9 +40,18 @@ subtest 'create/select/update stories' => sub {
                  };
     my $stoid = $stories->create($params, $admin);
     ok($stoid, "create story");
+    #diag(Dumper($params));
+
+    my $new_text = "<p>foo bar hoge hoge</p>";
+    $params->{introtext} = $new_text;
+    $params->{topics_chosen} = {49 => 10, 2271 => 20};
+    my $rs = $stories->update($params, $admin);
+    ok($rs, "update story");
+    diag $stories->last_error if !$rs;
 
     my $story = $stories->select(stoid => $stoid);
     ok($story, "select story by stoid");
+    is($story->{introtext}, $new_text, "update story correctly");
 
     ok($stories->hard_delete(stoid => $stoid), "delete story");