Skip to content

Commit

Permalink
submissions.emaildomain column, and counting up that data for admins'
Browse files Browse the repository at this point in the history
benefit while looking at submissions
  • Loading branch information
jamiemccarthy committed Nov 20, 2004
1 parent 29161e7 commit 5e9125c
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 5 deletions.
30 changes: 27 additions & 3 deletions Slash/DB/MySQL/MySQL.pm
Expand Up @@ -1788,8 +1788,11 @@ sub createSubmission {
$data->{subj} = delete $submission->{subj};
$data->{ipid} = getCurrentUser('ipid');
$data->{subnetid} = getCurrentUser('subnetid');
$data->{email} ||= delete $submission->{email} || '';
$data->{uid} ||= delete $submission->{uid} || getCurrentStatic('anonymous_coward_uid');
$data->{email} = delete $submission->{email} || '';
my $emailuri = URI->new($data->{email});
my $emailhost = $emailuri ? $emailuri->host() : "";
$data->{emaildomain} = fullhost_to_domain($emailhost);
$data->{uid} = delete $submission->{uid} || getCurrentStatic('anonymous_coward_uid');
$data->{'-time'} = delete $submission->{'time'};
$data->{'-time'} ||= 'NOW()';
$data->{primaryskid} = delete $submission->{primaryskid} || $constants->{mainpage_skid};
Expand All @@ -1803,7 +1806,7 @@ sub createSubmission {
my $subid = $self->getLastInsertId;

# The next line makes sure that we get any section_extras in the DB - Brian
$self->setSubmission($subid, $submission) if keys %$submission;
$self->setSubmission($subid, $submission) if $subid && keys %$submission;

return $subid;
}
Expand Down Expand Up @@ -5641,6 +5644,27 @@ sub getAccessList {
"ORDER BY ts DESC LIMIT $min, $max");
}

##################################################################
sub countSubmissionsFromUID {
my($self, $uid, $options) = @_;
my $constants = getCurrentStatic();
my $days_back = $options->{days_back} || $constants->{submission_count_days};
my $uid_q = $self->sqlQuote($uid);
return $self->sqlCount("submissions",
"uid=$uid_q
AND time >= DATE_SUB(NOW(), INTERVAL $days_back DAY)");
}

sub countSubmissionsWithEmaildomain {
my($self, $emaildomain, $options) = @_;
my $constants = getCurrentStatic();
my $days_back = $options->{days_back} || $constants->{submission_count_days};
my $emaildomain_q = $self->sqlQuote($emaildomain);
return $self->sqlCount("submissions",
"emaildomain=$emaildomain_q
AND time >= DATE_SUB(NOW(), INTERVAL $days_back DAY)");
}

##################################################################
sub getTopAbusers {
my($self, $min) = @_;
Expand Down
9 changes: 9 additions & 0 deletions plugins/Submit/submit.pl
Expand Up @@ -207,6 +207,13 @@ sub previewForm {
last_sid => '',
}) if $user->{is_admin};

my $num_from_uid = 0;
my $num_with_emaildomain = 0;
if ($user->{is_admin}) {
$num_from_uid = $slashdb->countSubmissionsFromUID($sub->{uid});
$num_with_emaildomain = $slashdb->countSubmissionsWithEmaildomain($sub->{emaildomain});
}

my $num_sim = $constants->{similarstorynumshow} || 5;
my $reader = getObject('Slash::DB', { db_type => 'reader' });
my $storyref = {
Expand Down Expand Up @@ -245,6 +252,8 @@ sub previewForm {
extras => $extracolumns,
lockTest => lockTest($sub->{subj}),
similar_stories => $similar_stories,
num_from_uid => $num_from_uid,
num_with_emaildomain => $num_with_emaildomain,
});
}

Expand Down
27 changes: 27 additions & 0 deletions plugins/Submit/templates/previewForm;submit;default
Expand Up @@ -25,6 +25,7 @@ __template__
<FONT SIZE="-1" COLOR="[% user.colors.fg_2 %]">[% submission.comment | strip_literal %]</FONT>
</TD></TR></TABLE>
[% END %]

[% IF submission.sid %]
<P><A HREF="[% constants.real_rootdir %]/article.pl?sid=[% submission.sid %]">Link to Story</A>
[% END %]
Expand All @@ -40,6 +41,32 @@ TITLE="[% topic.textname %]"></A>
[% del = submission.del; submission_state.$del %] submission by <B>[% submission.name %] <A HREF="[% submission.email %]">[% submission.email %]</A></B>
at [% submission.time %] [% IF admin_flag %]<A HREF="[% gSkin.rootdir %]/users.pl?op=userinfo&amp;userfield=[% ipid %]&amp;fieldname=ipid">[% ipid_vis %]</A>[% END %]

[% IF admin_flag && (submission.uid != constants.anonymous_coward_uid || submission.emaildomain) %]
<p>In the last [% constants.submission_count_days %] days, there
[% IF submission.uid != constants.anonymous_coward_uid && num_from_uid != 1
|| submission.uid == constants.anonymous_coward_uid && num_with_emaildomain != 1 %]
have been
[% ELSE %]
has been
[% END %]
[% IF submission.uid != constants.anonymous_coward_uid %]
[% IF num_from_uid >= 20 %]<B>[% END %]
[% num_from_uid %] submission[% IF num_from_uid != 1 %]s[% END %]
from this user
[%- IF num_from_uid >= 20 %]</B>[% END -%]
[%- IF submission.emaildomain %]
and
[% END -%]
[%- END -%]
[%- IF submission.emaildomain %]
[% IF num_with_emaildomain >= 15 %]<B>[% END %]
[% num_with_emaildomain %] submission[% IF num_with_emaildomain != 1 %]s[% END %]
with this link domain
[%- IF num_with_emaildomain >= 15 %]</B>[% END -%]
[%- END -%]
.
[% END %]

<P>[% subtext %]</P>

[% IF admin_flag %]
Expand Down
1 change: 1 addition & 0 deletions sql/mysql/defaults.sql
Expand Up @@ -951,6 +951,7 @@ INSERT INTO vars (name, value, description) VALUES ('story_never_topic_allow','0
INSERT INTO vars (name, value, description) VALUES ('submiss_ts','1','print timestamp in submissions view');
INSERT INTO vars (name, value, description) VALUES ('submiss_view','1','allow users to view submissions queue');
INSERT INTO vars (name, value, description) VALUES ('submission_bonus','3','Bonus given to user if submission is used');
INSERT INTO vars (name, value, description) VALUES ('submission_count_days','60','Number of days back to count submissions made by the same UID or domain');
INSERT INTO vars (name, value, description) VALUES ('submission_default_skid', '0', 'Skid you would like selected by default for submissions, 0 or empty string for none');
INSERT INTO vars (name, value, description) VALUES ('submission_force_default', '0', 'Force selection of default skid for all submissions, takes away menu of options');
INSERT INTO vars (name, value, description) VALUES ('submissions_speed_limit','300','How fast they can submit');
Expand Down
6 changes: 4 additions & 2 deletions sql/mysql/slashschema_create.sql
Expand Up @@ -953,6 +953,7 @@ DROP TABLE IF EXISTS submissions;
CREATE TABLE submissions (
subid mediumint UNSIGNED NOT NULL auto_increment,
email varchar(255) DEFAULT '' NOT NULL,
emaildomain varchar(255) DEFAULT '' NOT NULL,
name varchar(50) NOT NULL,
time datetime NOT NULL,
subj varchar(50) NOT NULL,
Expand All @@ -969,8 +970,9 @@ CREATE TABLE submissions (
signature varchar(32) NOT NULL,
PRIMARY KEY (subid),
UNIQUE signature (signature),
INDEX del (del),
INDEX uid (uid),
KEY emaildomain (emaildomain),
KEY del (del),
KEY uid (uid),
KEY ipid (ipid),
KEY subnetid (subnetid),
KEY primaryskid_tid (primaryskid, tid),
Expand Down
7 changes: 7 additions & 0 deletions sql/mysql/upgrades
Expand Up @@ -2754,3 +2754,10 @@ INSERT INTO vars (name, value, description) VALUES ('mod_token_assignment_delay'
# SLASHDOT LAST UPDATED HERE

# End of T_2_5_0_37, Start of T_2_5_0_38 - 2004/11/16

ALTER TABLE submissions ADD COLUMN emaildomain varchar(255) DEFAULT '' NOT NULL AFTER email;
#perl -MSlash::Test=virtusername -le '$e = $slashdb->sqlSelectAllKeyValue("subid, email", "submissions"); for my $subid (sort { $a <=> $b } keys %$e) { $u = URI->new($e->{$subid}) or next; next unless $u->can("host"); $slashdb->sqlUpdate("submissions", { emaildomain => fullhost_to_domain($u->host()) }, "subid=$subid") }'
ALTER TABLE submissions ADD INDEX emaildomain (emaildomain);

INSERT INTO vars (name, value, description) VALUES ('submission_count_days','60','Number of days back to count submissions made by the same UID or domain');

0 comments on commit 5e9125c

Please sign in to comment.