From 35008c1f92b36d327ba9077674416531eb98cf5a Mon Sep 17 00:00:00 2001 From: hylom Date: Thu, 27 Oct 2016 22:11:29 +0900 Subject: [PATCH] Model::Stories: fix 'create' method --- src/newslash_web/lib/Newslash/Model/Stories.pm | 56 +++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/src/newslash_web/lib/Newslash/Model/Stories.pm b/src/newslash_web/lib/Newslash/Model/Stories.pm index 987f47a0..d68c4606 100644 --- a/src/newslash_web/lib/Newslash/Model/Stories.pm +++ b/src/newslash_web/lib/Newslash/Model/Stories.pm @@ -203,6 +203,9 @@ create a story. parameters +$params->{fhid} +$params->{subid} + =item $uid author's uid @@ -218,14 +221,55 @@ stoid =cut sub create { - my ($self, $params, $uid) = @_; - #createStory + my ($self, $params, $user, $extra_params, $opts) = @_; + + # check parameters + my $msg = ""; + $msg = "no title" if !$params->{title}; + $msg = "no title" if !$params->{title}; + $msg = "no uid" if !$params->{uid}; + $msg = "no topics" if !defined $params->{topics_chosen}; + + if (length($params->{title}) > $self->{options}->{Story}->{title_max_byte}) { + $msg = "title too long. max: $self->{options}->{Story}->{title_max_byte} bytes"; + } - #my $slash_db = $self->new_instance_of('Newslash::Model::SlashDB'); + $params->{commentstatus} ||= "enabled"; + if (!grep /\A$params->{commentstatus}\z/, qw(disabled enabled friends_only friends_fof_only no_foe no_foe_eof logged_in)) { + $msg = "invalid commentstatus"; + } + + # check timestamp. use ISO8601 style timestamp like: 2006-08-14T02:34:56-0600 + my $rex_timestamp = qr/ + ^(\d+)-(\d+)-(\d+)\D+(\d+):(\d+):(\d+(?:\.\d+)?) # datetime + (?:Z|([+-])(\d+):(\d+))?$ # tz + /xi; + if ($params->{createtime} =~ $rex_timestamp) { + $params->{createtime} = "$1-$2-$3 $4:$5:$6"; + } + + # check parameters finish + if (length($msg) > 0) { + $self->set_error($msg, -1); + return; + } + + $params->{neverdisplay} ||= 0; my $slash_db = Newslash::Model::SlashDB->new($self->{options}); - #my $slash_db = $self->new_instance_of('SlashDB'); - my $story = $slash_db->createStory($params); - return $story; + my $sid = $slash_db->createStory($params); + #my $globj_id = $slash_db-> + + # TODO: set tags + # my $tags = $self->new_instance_of("Newslash::Model::Tags"); + for my $tid (keys $params->{topics_chosen}) { + $tags->createTag({ + uid => $user->{uid}, + name => "", + globijd => $globj_id, + private => 0, + }); + } + return $sid; } sub createSid { -- 2.11.0