From 024062b4644fdb129b67f042127c68ac5ddbbaf3 Mon Sep 17 00:00:00 2001 From: hylom Date: Thu, 20 Oct 2016 02:52:45 +0900 Subject: [PATCH] Model: add Firehose --- src/newslash_web/lib/Newslash/Model/Firehose.pm | 84 +++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/newslash_web/lib/Newslash/Model/Firehose.pm diff --git a/src/newslash_web/lib/Newslash/Model/Firehose.pm b/src/newslash_web/lib/Newslash/Model/Firehose.pm new file mode 100644 index 00000000..261ce050 --- /dev/null +++ b/src/newslash_web/lib/Newslash/Model/Firehose.pm @@ -0,0 +1,84 @@ +package Newslash::Model::Firehose; +use Newslash::Model::Base -base; + +## WORNING: +## This is legacy from slash. deprecated, and you can use only backword-compatible. + +# getEntryPopularityForColorLevel - import from FireHose.pm +sub getEntryPopularityForColorLevel { + my ($self, $level) = @_; + + # my $midpop = $self->getEntryPopularityForColorLevel(5); + # argument is 5, then value is "102, 93". entry is 102, min is 93 + # '290,240 220,200 185,175 155,138 102,93 30,25 0,-20 -60,-999999' + my $slicepoints = '290,240 220,200 185,175 155,138 102,93 30,25 0,-20 -60,-999999'; + my @levels = split / /, $slicepoints; + my $entry_min = $levels[$level-1]; + my ($entry, $min) = split /,/, $entry_min; + return $entry; +} + +sub createFireHose { + my ($self, $data) = @_; + $data->{dept} ||= ""; + $data->{discussion} = 0 if !defined $data->{discussion} || !$data->{discussion}; + $data->{-createtime} = "NOW()" if !$data->{createtime} && !$data->{-createtime}; + $data->{discussion} ||= 0 if defined $data->{discussion}; + $data->{popularity} ||= 0; + $data->{editorpop} ||= 0; + $data->{body_length} ||= $data->{bodytext} ? length($data->{bodytext}) : 0; + $data->{word_count} = countWords($data->{introtext}) + countWords($data->{bodytext}); + $data->{mediatype} ||= "none"; + $data->{email} ||= ''; + + my $text_data = {}; + $text_data->{title} = delete $data->{title}; + $text_data->{introtext} = delete $data->{introtext}; + $text_data->{bodytext} = delete $data->{bodytext}; + $text_data->{media} = delete $data->{media}; + + my $db = $self->new_instance_of('Newslash::Model::LegacyDB'); + #$self->sqlDo('SET AUTOCOMMIT=0'); + $db->sqlDo('SET AUTOCOMMIT=0'); + + #my $ok = $self->sqlInsert("firehose", $data); + my $ok = $db->sqlInsert("firehose", $data); + if (!$ok) { + warn "could not create firehose row, '$ok'"; + } + if ($ok) { + #$text_data->{id} = $self->getLastInsertId({table => 'firehose', prime => 'id'}); + $text_data->{id} = $db->getLastInsertId({table => 'firehose', prime => 'id'}); + + #$ok = $self->sqlInsert("firehose_text", $text_data); + $ok = $db->sqlInsert("firehose_text", $text_data); + if (!$ok) { + warn "could not create firehose_text row for id '$text_data->{id}'"; + } + } + + if ($ok) { + #$self->sqlDo('COMMIT'); + $db->sqlDo('COMMIT'); + } else { + #$self->sqlDo('ROLLBACK'); + $db->sqlDo('ROLLBACK'); + } + #$self->sqlDo('SET AUTOCOMMIT=1'); + $db->sqlDo('SET AUTOCOMMIT=1'); + + # set topics rendered appropriately + # if ($ok) { + # if ($data->{type} eq "story") { + # #my $tids = $self->sqlSelectColArrayref("tid", "story_topics_rendered", "stoid='$data->{srcid}'"); + # my $tids = $db->sqlSelectColArrayref("tid", "story_topics_rendered", "stoid='$data->{srcid}'"); + # $self->setTopicsRenderedForStory($data->{srcid}, $tids); + # } else { + # $self->setTopicsRenderedBySkidForItem($text_data->{id}, $data->{primaryskid}); + # } + # } + + return $text_data->{id}; +} + +1; -- 2.11.0