[dw-free] remove support for legacy dversions
[commit: http://hg.dwscoalition.org/dw-free/rev/00706993500e]
http://bugs.dwscoalition.org/show_bug.cgi?id=1740
Anything below dversion 8 can go. (code cleanup)
Patch by
kareila.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=1740
Anything below dversion 8 can go. (code cleanup)
Patch by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Files modified:
- cgi-bin/Apache/LiveJournal.pm
- cgi-bin/LJ/Poll.pm
- cgi-bin/LJ/Poll/Question.pm
- cgi-bin/LJ/User.pm
- cgi-bin/LJ/Userpic.pm
- cgi-bin/ljlib.pl
- cgi-bin/ljmemories.pl
- cgi-bin/ljuserpics.pl
- htdocs/editpics.bml
-------------------------------------------------------------------------------- diff -r c7dfa9c29068 -r 00706993500e cgi-bin/Apache/LiveJournal.pm --- a/cgi-bin/Apache/LiveJournal.pm Sat Sep 05 12:12:35 2009 +0000 +++ b/cgi-bin/Apache/LiveJournal.pm Sat Sep 05 14:35:14 2009 +0000 @@ -49,11 +49,6 @@ my %REDIR; my %REDIR; # Mapping of MIME types to image types understood by the blob functions. -my %MimeTypeMap = ( - 'image/gif' => 'gif', - 'image/jpeg' => 'jpg', - 'image/png' => 'png', -); my %MimeTypeMapd6 = ( 'G' => 'gif', 'J' => 'jpg', @@ -1174,7 +1169,7 @@ sub userpic_content # Now ask the blob lib for the path to send to the reproxy eval { LJ::Blob->can("autouse"); }; - my $fmt = ($u->{'dversion'} > 6) ? $MimeTypeMapd6{ $pic->{fmt} } : $MimeTypeMap{ $pic->{contenttype} }; + my $fmt = $MimeTypeMapd6{ $pic->{fmt} }; my $path = LJ::Blob::get_rel_path( $root, $u, "userpic", $fmt, $picid ); $r->headers_out->{'X-REPROXY-FILE'} = $path; @@ -1209,7 +1204,7 @@ sub userpic_content if ($LJ::USERPIC_BLOBSERVER) { eval { LJ::Blob->can("autouse"); }; - my $fmt = ($u->{'dversion'} > 6) ? $MimeTypeMapd6{ $pic->{fmt} } : $MimeTypeMap{ $pic->{contenttype} }; + my $fmt = $MimeTypeMapd6{ $pic->{fmt} }; $data = LJ::Blob::get($u, "userpic", $fmt, $picid); } diff -r c7dfa9c29068 -r 00706993500e cgi-bin/LJ/Poll.pm --- a/cgi-bin/LJ/Poll.pm Sat Sep 05 12:12:35 2009 +0000 +++ b/cgi-bin/LJ/Poll.pm Sat Sep 05 14:35:14 2009 +0000 @@ -81,27 +81,17 @@ sub create { or die "Invalid journalid $journalid"; my $dbh = LJ::get_db_writer(); - my $sth; - if ($u->polls_clustered) { - # poll stored on user cluster - $u->do("INSERT INTO poll2 (journalid, pollid, posterid, whovote, whoview, name, ditemid) " . - "VALUES (?, ?, ?, ?, ?, ?, ?)", undef, - $journalid, $pollid, $posterid, $whovote, $whoview, $name, $ditemid); - die $u->errstr if $u->err; + $u->do( "INSERT INTO poll2 (journalid, pollid, posterid, whovote, whoview, name, ditemid) " . + "VALUES (?, ?, ?, ?, ?, ?, ?)", undef, + $journalid, $pollid, $posterid, $whovote, $whoview, $name, $ditemid ); + die $u->errstr if $u->err; - # made poll, insert global pollid->journalid mapping into global pollowner map - $dbh->do("INSERT INTO pollowner (journalid, pollid) VALUES (?, ?)", undef, - $journalid, $pollid); + # made poll, insert global pollid->journalid mapping into global pollowner map + $dbh->do( "INSERT INTO pollowner (journalid, pollid) VALUES (?, ?)", undef, + $journalid, $pollid ); - die $dbh->errstr if $dbh->err; - } else { - # poll stored on global - $dbh->do("INSERT INTO poll (pollid, itemid, journalid, posterid, whovote, whoview, name) " . - "VALUES (?, ?, ?, ?, ?, ?, ?)", undef, - $pollid, $ditemid, $journalid, $posterid, $whovote, $whoview, $name); - die $dbh->errstr if $dbh->err; - } + die $dbh->errstr if $dbh->err; ## start inserting poll questions my $qnum = 0; @@ -109,32 +99,19 @@ sub create { foreach my $q (@$questions) { $qnum++; - if ($u->polls_clustered) { - $u->do("INSERT INTO pollquestion2 (journalid, pollid, pollqid, sortorder, type, opts, qtext) " . - "VALUES (?, ?, ?, ?, ?, ?, ?)", undef, - $journalid, $pollid, $qnum, $qnum, $q->{'type'}, $q->{'opts'}, $q->{'qtext'}); - die $u->errstr if $u->err; - } else { - $dbh->do("INSERT INTO pollquestion (pollid, pollqid, sortorder, type, opts, qtext) " . - "VALUES (?, ?, ?, ?, ?, ?)", undef, - $pollid, $qnum, $qnum, $q->{'type'}, $q->{'opts'}, $q->{'qtext'}); - die $dbh->errstr if $dbh->err; - } + $u->do( "INSERT INTO pollquestion2 (journalid, pollid, pollqid, sortorder, type, opts, qtext) " . + "VALUES (?, ?, ?, ?, ?, ?, ?)", undef, + $journalid, $pollid, $qnum, $qnum, $q->{'type'}, $q->{'opts'}, $q->{'qtext'} ); + die $u->errstr if $u->err; ## start inserting poll items my $inum = 0; foreach my $it (@{$q->{'items'}}) { $inum++; - if ($u->polls_clustered) { - $u->do("INSERT INTO pollitem2 (journalid, pollid, pollqid, pollitid, sortorder, item) " . - "VALUES (?, ?, ?, ?, ?, ?)", undef, $journalid, $pollid, $qnum, $inum, $inum, $it->{'item'}); - die $u->errstr if $u->err; - } else { - $dbh->do("INSERT INTO pollitem (pollid, pollqid, pollitid, sortorder, item) " . - "VALUES (?, ?, ?, ?, ?)", undef, $pollid, $qnum, $inum, $inum, $it->{'item'}); - die $dbh->errstr if $dbh->err; - } + $u->do( "INSERT INTO pollitem2 (journalid, pollid, pollqid, pollitid, sortorder, item) " . + "VALUES (?, ?, ?, ?, ?, ?)", undef, $journalid, $pollid, $qnum, $inum, $inum, $it->{'item'} ); + die $u->errstr if $u->err; } ## end inserting poll items @@ -581,20 +558,11 @@ sub _load { or die "Invalid journalid $journalid"; # double-check to make sure we are consulting the right table - if ($u->polls_clustered) { - # clustered poll - $row = $u->selectrow_hashref("SELECT pollid, journalid, ditemid, " . - "posterid, whovote, whoview, name, status " . - "FROM poll2 WHERE pollid=? " . - "AND journalid=?", undef, $self->pollid, $journalid); - die $u->errstr if $u->err; - } else { - # unclustered poll - $row = $dbr->selectrow_hashref("SELECT pollid, itemid, journalid, " . - "posterid, whovote, whoview, name, status " . - "FROM poll WHERE pollid=?", undef, $self->pollid); - die $dbr->errstr if $dbr->err; - } + $row = $u->selectrow_hashref( "SELECT pollid, journalid, ditemid, " . + "posterid, whovote, whoview, name, status " . + "FROM poll2 WHERE pollid=? " . + "AND journalid=?", undef, $self->pollid, $journalid ); + die $u->errstr if $u->err; } return undef unless $row; @@ -632,17 +600,9 @@ sub close_poll { my $dbh = LJ::get_db_writer(); - if ($u->polls_clustered) { - # poll stored on user cluster - $u->do("UPDATE poll2 SET status='X' where pollid=? AND journalid=?", - undef, $self->pollid, $self->journalid); - die $u->errstr if $u->err; - } else { - # poll stored on global - $dbh->do("UPDATE poll SET status='X' where pollid=? ", - undef, $self->pollid); - die $dbh->errstr if $dbh->err; - } + $u->do( "UPDATE poll2 SET status='X' where pollid=? AND journalid=?", + undef, $self->pollid, $self->journalid ); + die $u->errstr if $u->err; # poll status has changed $self->_remove_from_memcache; @@ -663,17 +623,9 @@ sub open_poll { my $dbh = LJ::get_db_writer(); - if ($u->polls_clustered) { - # poll stored on user cluster - $u->do("UPDATE poll2 SET status='' where pollid=? AND journalid=?", - undef, $self->pollid, $self->journalid); - die $u->errstr if $u->err; - } else { - # poll stored on global - $dbh->do("UPDATE poll SET status='' where pollid=? ", - undef, $self->pollid); - die $dbh->errstr if $dbh->err; - } + $u->do( "UPDATE poll2 SET status='' where pollid=? AND journalid=?", + undef, $self->pollid, $self->journalid ); + die $u->errstr if $u->err; # poll status has changed $self->_remove_from_memcache; @@ -737,11 +689,6 @@ sub journal { return LJ::load_userid($self->journalid); } -sub is_clustered { - my $self = shift; - return $self->journal->polls_clustered; -} - # return true if poll is closed sub is_closed { my $self = shift; @@ -794,19 +741,12 @@ sub question { # returns the time that the given user answered the given poll sub get_time_user_submitted { - my ($self, $u) = @_; + my ( $self, $u ) = @_; - my $time; - if ($self->is_clustered) { - $time = $self->journal->selectrow_array('SELECT datesubmit FROM pollsubmission2 '. - 'WHERE pollid=? AND userid=? AND journalid=?', undef, $self->pollid, $u->userid, $self->journalid); - } else { - my $dbr = LJ::get_db_reader(); - $time = $dbr->selectrow_array('SELECT datesubmit FROM pollsubmission '. - 'WHERE pollid=? AND userid=?', undef, $self->pollid, $u->userid); - } + return $self->journal->selectrow_array( 'SELECT datesubmit FROM pollsubmission2 '. + 'WHERE pollid=? AND userid=? AND journalid=?', + undef, $self->pollid, $u->userid, $self->journalid ); - return $time; } # expects a fake poll object (doesn't have to have pollid) and @@ -926,16 +866,11 @@ sub render { my %preval; - if ($do_form) { - if ($self->is_clustered) { - $sth = $self->journal->prepare("SELECT pollqid, value FROM pollresult2 WHERE pollid=? AND userid=? AND journalid=?"); - $sth->execute($pollid, $remote->{'userid'}, $self->journalid); - } else { - $sth = $dbr->prepare("SELECT pollqid, value FROM pollresult WHERE pollid=? AND userid=?"); - $sth->execute($pollid, $remote->{'userid'}); - } + if ( $do_form ) { + $sth = $self->journal->prepare( "SELECT pollqid, value FROM pollresult2 WHERE pollid=? AND userid=? AND journalid=?" ); + $sth->execute( $pollid, $remote->userid, $self->journalid ); - while (my ($qid, $value) = $sth->fetchrow_array) { + while ( my ( $qid, $value ) = $sth->fetchrow_array ) { $preval{$qid} = $value; } @@ -967,15 +902,9 @@ sub render { $ret .= "[ <a href='$LJ::SITEROOT/poll/?id=$pollid&mode=results'>" . BML::ml( 'poll.seeresults' ) . "</a> ] "; } elsif ( $mode eq 'results' ) { #include number of participants - my $sth = ""; - if ($self->is_clustered) { - $sth = $self->journal->prepare("SELECT count(DISTINCT userid) FROM pollresult2 WHERE pollid=? AND journalid=?"); - $sth->execute($pollid, $self->journalid); - } else { - $sth = $dbr->prepare("SELECT count(DISTINCT userid) FROM pollresult WHERE pollid=?"); - $sth->execute($pollid); - } - my ($participants) = $sth->fetchrow_array; + my $sth = $self->journal->prepare( "SELECT count(DISTINCT userid) FROM pollresult2 WHERE pollid=? AND journalid=?" ); + $sth->execute( $pollid, $self->journalid ); + my ( $participants ) = $sth->fetchrow_array; $ret .= LJ::Lang::ml('poll.participants', { 'total' => $participants }); $ret .= "<br />\n"; # change vote link @@ -996,16 +925,11 @@ sub render { my ($valcount, $valmean, $valstddev, $valmedian); if ($q->type eq "scale") { # get stats - if ($self->is_clustered) { - $sth = $self->journal->prepare("SELECT COUNT(*), AVG(value), STDDEV(value) FROM pollresult2 " . - "WHERE pollid=? AND pollqid=? AND journalid=?"); - $sth->execute($pollid, $qid, $self->journalid); - } else { - $sth = $dbr->prepare("SELECT COUNT(*), AVG(value), STDDEV(value) FROM pollresult WHERE pollid=? AND pollqid=?"); - $sth->execute($pollid, $qid); - } + $sth = $self->journal->prepare( "SELECT COUNT(*), AVG(value), STDDEV(value) FROM pollresult2 " . + "WHERE pollid=? AND pollqid=? AND journalid=?" ); + $sth->execute( $pollid, $qid, $self->journalid ); - ($valcount, $valmean, $valstddev) = $sth->fetchrow_array; + ( $valcount, $valmean, $valstddev ) = $sth->fetchrow_array; # find median: $valmedian = 0; @@ -1018,15 +942,10 @@ sub render { $mid = int(($valcount+1)/2); my $skip = $mid-1; - if ($self->is_clustered) { - $sth = $self->journal->prepare("SELECT value FROM pollresult2 WHERE pollid=? AND pollqid=? AND journalid=? " . - "ORDER BY value+0 LIMIT $skip,$fetch"); - $sth->execute($pollid, $qid, $self->journalid); - } else { - $sth = $dbr->prepare("SELECT value FROM pollresult WHERE pollid=? AND pollqid=? " . - "ORDER BY value+0 LIMIT $skip,$fetch"); - $sth->execute($pollid, $qid); - } + $sth = $self->journal->prepare( + "SELECT value FROM pollresult2 WHERE pollid=? AND pollqid=? AND journalid=? " . + "ORDER BY value+0 LIMIT $skip,$fetch" ); + $sth->execute( $pollid, $qid, $self->journalid ); while (my ($v) = $sth->fetchrow_array) { $valmedian += $v; @@ -1050,13 +969,8 @@ sub render { ### but, if this is a non-text item, and we're showing results, need to load the answers: if ($q->type ne "text") { - if ($self->is_clustered) { - $sth = $self->journal->prepare("SELECT value FROM pollresult2 WHERE pollid=? AND pollqid=? AND journalid=?"); - $sth->execute($pollid, $qid, $self->journalid); - } else { - $sth = $dbr->prepare("SELECT value FROM pollresult WHERE pollid=? AND pollqid=?"); - $sth->execute($pollid, $qid); - } + $sth = $self->journal->prepare( "SELECT value FROM pollresult2 WHERE pollid=? AND pollqid=? AND journalid=?" ); + $sth->execute( $pollid, $qid, $self->journalid ); while (my ($val) = $sth->fetchrow_array) { $usersvoted++; if ($q->type eq "check") { @@ -1269,16 +1183,9 @@ sub questions { unless $self->pollid; my @qs = (); - my $sth; - if ($self->is_clustered) { - $sth = $self->journal->prepare('SELECT * FROM pollquestion2 WHERE pollid=? AND journalid=?'); - $sth->execute($self->pollid, $self->journalid); - } else { - my $dbr = LJ::get_db_reader(); - $sth = $dbr->prepare('SELECT * FROM pollquestion WHERE pollid=?'); - $sth->execute($self->pollid); - } + my $sth = $self->journal->prepare( 'SELECT * FROM pollquestion2 WHERE pollid=? AND journalid=?' ); + $sth->execute( $self->pollid, $self->journalid ); die $sth->errstr if $sth->err; @@ -1409,15 +1316,9 @@ sub process_submission { # if this particular user has already voted, let them change their answer my $time = $poll->get_time_user_submitted($remote); unless ($time) { - my $uids; - if ($poll->is_clustered) { - $uids = $poll->journal->selectcol_arrayref("SELECT userid FROM pollsubmission2 " . - "WHERE journalid = ? AND pollid = ?", undef, $poll->journalid, $poll->pollid); - } else { - my $dbr = LJ::get_db_reader(); - $uids = $dbr->selectcol_arrayref("SELECT userid FROM pollsubmission " . - "WHERE pollid = ?", undef, $poll->pollid); - } + my $uids = $poll->journal->selectcol_arrayref( "SELECT userid FROM pollsubmission2 " . + "WHERE journalid = ? AND pollid = ?", + undef, $poll->journalid, $poll->pollid ); if (@$uids) { my $remote_email = $remote->email_raw; @@ -1435,9 +1336,6 @@ sub process_submission { } } } - - # Handler needed only for 7th version of Polls. - my $dbh = $poll->is_clustered ? undef : LJ::get_db_writer(); ### load all the questions my @qs = $poll->questions; @@ -1459,33 +1357,17 @@ sub process_submission { } if ($val ne "") { $ct++; - if ($poll->is_clustered) { - $poll->journal->do("REPLACE INTO pollresult2 (journalid, pollid, pollqid, userid, value) VALUES (?, ?, ?, ?, ?)", - undef, $poll->journalid, $pollid, $qid, $remote->userid, $val); - } else { - - $dbh->do("REPLACE INTO pollresult (pollid, pollqid, userid, value) VALUES (?, ?, ?, ?)", - undef, $pollid, $qid, $remote->userid, $val); - } + $poll->journal->do( "REPLACE INTO pollresult2 (journalid, pollid, pollqid, userid, value) VALUES (?, ?, ?, ?, ?)", + undef, $poll->journalid, $pollid, $qid, $remote->userid, $val ); } else { - if ($poll->is_clustered) { - $poll->journal->do("DELETE FROM pollresult2 WHERE journalid=? AND pollid=? AND pollqid=? AND userid=?", - undef, $poll->journalid, $pollid, $qid, $remote->userid); - } else { - $dbh->do("DELETE FROM pollresult WHERE pollid=? AND pollqid=? AND userid=?", - undef, $pollid, $qid, $remote->userid); - } + $poll->journal->do( "DELETE FROM pollresult2 WHERE journalid=? AND pollid=? AND pollqid=? AND userid=?", + undef, $poll->journalid, $pollid, $qid, $remote->userid ); } } ## finally, register the vote happened - if ($poll->is_clustered) { - $poll->journal->do("REPLACE INTO pollsubmission2 (journalid, pollid, userid, datesubmit) VALUES (?, ?, ?, NOW())", - undef, $poll->journalid, $pollid, $remote->userid); - } else { - $dbh->do("REPLACE INTO pollsubmission (pollid, userid, datesubmit) VALUES (?, ?, NOW())", - undef, $pollid, $remote->userid); - } + $poll->journal->do( "REPLACE INTO pollsubmission2 (journalid, pollid, userid, datesubmit) VALUES (?, ?, ?, NOW())", + undef, $poll->journalid, $pollid, $remote->userid ); # if vote results are not cached, there is no need to modify cache #$poll->_remove_from_memcache; @@ -1498,98 +1380,12 @@ sub process_submission { return 1; } -# take a user on dversion 7 and upgrade them to dversion 8 (clustered polls) -sub make_polls_clustered { - my ($class, $u, $dbh, $dbhslo, $dbcm) = @_; - - return 1 if $u->dversion >= 8; - - return 0 unless ($dbh && $dbhslo && $dbcm); - - # find polls this user owns - my $psth = $dbhslo->prepare("SELECT pollid, itemid, journalid, posterid, whovote, whoview, name, " . - "status FROM poll WHERE journalid=?"); - $psth->execute($u->userid); - die $psth->errstr if $psth->err; - - while (my @prow = $psth->fetchrow_array) { - my $pollid = $prow[0]; - # insert a copy into poll2 - $dbcm->do("REPLACE INTO poll2 (pollid, ditemid, journalid, posterid, whovote, whoview, name, " . - "status) VALUES (?,?,?,?,?,?,?,?)", undef, @prow); - die $dbcm->errstr if $dbcm->err; - - # map pollid -> userid - $dbh->do("REPLACE INTO pollowner (journalid, pollid) VALUES (?, ?)", undef, - $u->userid, $pollid); - die $dbh->errstr if $dbh->err; - - # get questions - my $qsth = $dbhslo->prepare("SELECT pollid, pollqid, sortorder, type, opts, qtext FROM " . - "pollquestion WHERE pollid=?"); - $qsth->execute($pollid); - die $qsth->errstr if $qsth->err; - - # copy questions to clustered table - while (my @qrow = $qsth->fetchrow_array) { - my $pollqid = $qrow[1]; - - # insert question into pollquestion2 - $dbcm->do("REPLACE INTO pollquestion2 (journalid, pollid, pollqid, sortorder, type, opts, qtext) " . - "VALUES (?, ?, ?, ?, ?, ?, ?)", undef, $u->userid, @qrow); - die $dbcm->errstr if $dbcm->err; - - # get items - my $isth = $dbhslo->prepare("SELECT pollid, pollqid, pollitid, sortorder, item FROM pollitem " . - "WHERE pollid=? AND pollqid=?"); - $isth->execute($pollid, $pollqid); - die $isth->errstr if $isth->err; - - # copy items - while (my @irow = $isth->fetchrow_array) { - # copy item to pollitem2 - $dbcm->do("REPLACE INTO pollitem2 (journalid, pollid, pollqid, pollitid, sortorder, item) VALUES " . - "(?, ?, ?, ?, ?, ?)", undef, $u->userid, @irow); - die $dbcm->errstr if $dbcm->err; - } - } - - # copy submissions - my $ssth = $dbhslo->prepare("SELECT userid, datesubmit FROM pollsubmission WHERE pollid=?"); - $ssth->execute($pollid); - die $ssth->errstr if $ssth->err; - - while (my @srow = $ssth->fetchrow_array) { - # copy to pollsubmission2 - $dbcm->do("REPLACE INTO pollsubmission2 (pollid, journalid, userid, datesubmit) " . - "VALUES (?, ?, ?, ?)", undef, $pollid, $u->userid, @srow); - die $dbcm->errstr if $dbcm->err; - } - - # copy results - my $rsth = $dbhslo->prepare("SELECT pollid, pollqid, userid, value FROM pollresult WHERE pollid=?"); - $rsth->execute($pollid); - die $rsth->errstr if $rsth->err; - - while (my @rrow = $rsth->fetchrow_array) { - # copy to pollresult2 - $dbcm->do("REPLACE INTO pollresult2 (journalid, pollid, pollqid, userid, value) " . - "VALUES (?, ?, ?, ?, ?)", undef, $u->userid, @rrow); - die $dbcm->errstr if $dbcm->err; - } - } - - return 1; -} - sub dump_poll { my $self = shift; my $fh = shift || \*STDOUT; - my @tables = ($self->is_clustered) ? - qw(poll2 pollquestion2 pollitem2 pollsubmission2 pollresult2) : - qw(poll pollquestion pollitem pollsubmission pollresult ); - my $db = ($self->is_clustered) ? $self->journal : LJ::get_db_reader(); + my @tables = qw(poll2 pollquestion2 pollitem2 pollsubmission2 pollresult2); + my $db = $self->journal; my $id = $self->pollid; print $fh "<poll id='$id'>\n"; diff -r c7dfa9c29068 -r 00706993500e cgi-bin/LJ/Poll/Question.pm --- a/cgi-bin/LJ/Poll/Question.pm Sat Sep 05 12:12:35 2009 +0000 +++ b/cgi-bin/LJ/Poll/Question.pm Sat Sep 05 14:35:14 2009 +0000 @@ -46,18 +46,10 @@ sub _load { croak "_load called on a LJ::Poll::Question object with no pollqid" unless $self->pollqid; - my $sth; + my $sth = $self->poll->journal->prepare( 'SELECT * FROM pollquestion2 WHERE pollid=? AND pollqid=? and journalid=?' ); + $sth->execute( $self->pollid, $self->pollqid, $self->poll->journalid ); - if ($self->is_clustered) { - $sth = $self->poll->journal->prepare('SELECT * FROM pollquestion2 WHERE pollid=? AND pollqid=? and journalid=?'); - $sth->execute($self->pollid, $self->pollqid, $self->poll->journalid); - } else { - my $dbr = LJ::get_db_reader(); - my $sth = $dbr->prepare('SELECT * FROM pollquestion WHERE pollid=? AND pollqid=?'); - $sth->execute($self->pollid, $self->pollqid); - } - - $self->absorb_row($sth->fetchrow_hashref); + $self->absorb_row( $sth->fetchrow_hashref ); } # returns the question rendered for previewing @@ -132,18 +124,9 @@ sub items { return @{$self->{items}} if $self->{items}; - my $sth; - - if ($self->is_clustered) { - $sth = $self->poll->journal->prepare('SELECT pollid, pollqid, pollitid, sortorder, item ' . - 'FROM pollitem2 WHERE pollid=? AND pollqid=? AND journalid=?'); - $sth->execute($self->pollid, $self->pollqid, $self->poll->journalid); - } else { - my $dbr = LJ::get_db_reader(); - $sth = $dbr->prepare('SELECT pollid, pollqid, pollitid, sortorder, item ' . - 'FROM pollitem WHERE pollid=? AND pollqid=?'); - $sth->execute($self->pollid, $self->pollqid); - } + my $sth = $self->poll->journal->prepare( 'SELECT pollid, pollqid, pollitid, sortorder, item ' . + 'FROM pollitem2 WHERE pollid=? AND pollqid=? AND journalid=?' ); + $sth->execute( $self->pollid, $self->pollqid, $self->poll->journalid ); die $sth->errstr if $sth->err; @@ -166,10 +149,6 @@ sub poll { sub poll { my $self = shift; return $self->{poll}; -} -sub is_clustered { - my $self = shift; - return $self->poll->is_clustered; } sub pollid { my $self = shift; @@ -210,32 +189,15 @@ sub answers_pages { my $pages = 0; - my $sth; - - if ($self->is_clustered) { - # Get results count - $sth = $self->poll->journal->prepare( - "SELECT COUNT(*) as count". - " FROM pollresult2". - " WHERE pollid=? AND pollqid=? AND journalid=?"); - $sth->execute($self->pollid, $self->pollqid, $jid); - die $sth->errstr if $sth->err; - $_ = $sth->fetchrow_hashref; - my $count = $_->{count}; - $pages = 1+int(($count-1)/$pagesize); - } else { - my $dbr = LJ::get_db_reader(); - # Get count - $sth = $self->poll->journal->prepare( - "SELECT COUNT(*) as count". - " FROM pollresult". - " WHERE pollid=? AND pollqid=?"); - $sth->execute($self->pollid, $self->pollqid); - die $sth->errstr if $sth->err; - $_ = $sth->fetchrow_hashref; - my $count = $_->{count}; - $pages = 1+int(($count-1)/$pagesize); - } + # Get results count + my $sth = $self->poll->journal->prepare( + "SELECT COUNT(*) as count FROM pollresult2". + " WHERE pollid=? AND pollqid=? AND journalid=?" ); + $sth->execute( $self->pollid, $self->pollqid, $jid ); + die $sth->errstr if $sth->err; + $_ = $sth->fetchrow_hashref; + my $count = $_->{count}; + $pages = 1 + int( ($count - 1) / $pagesize ); die $sth->errstr if $sth->err; return $pages; @@ -251,36 +213,21 @@ sub answers_as_html { my $pages = shift || $self->answers_pages($jid, $pagesize); my $ret = '';; - my $sth; - if ($self->is_clustered) { - my $LIMIT = $pagesize * ($page - 1) . "," . $pagesize; + my $LIMIT = $pagesize * ($page - 1) . "," . $pagesize; - # Get data - $sth = $self->poll->journal->prepare( + # Get data + my $sth = $self->poll->journal->prepare( "SELECT pr.value, ps.datesubmit, pr.userid " . "FROM pollresult2 pr, pollsubmission2 ps " . "WHERE pr.pollid=? AND pollqid=? " . "AND ps.pollid=pr.pollid AND ps.userid=pr.userid " . "AND ps.journalid=? ". - "LIMIT $LIMIT"); - $sth->execute($self->pollid, $self->pollqid, $jid); - } else { - my $dbr = LJ::get_db_reader(); - my $LIMIT = $pagesize * ($page - 1) . "," . $pagesize; - - # Get data - $sth = $dbr->prepare( - "SELECT pr.value, ps.datesubmit, pr.userid ". - "FROM pollresult pr, pollsubmission ps " . - "WHERE pr.pollid=? AND pollqid=? " . - "AND ps.pollid=pr.pollid AND ps.userid=pr.userid ". - "LIMIT $LIMIT"); - $sth->execute($self->pollid, $self->pollqid); - } + "LIMIT $LIMIT" ); + $sth->execute( $self->pollid, $self->pollqid, $jid ); die $sth->errstr if $sth->err; - my ($pollid, $pollqid) = ($self->pollid, $self->pollqid); + my ( $pollid, $pollqid ) = ( $self->pollid, $self->pollqid ); my @res; push @res, $_ while $_ = $sth->fetchrow_hashref; @@ -335,17 +282,9 @@ sub answers { my $self = shift; my $ret = ''; - my $sth; - - if ($self->is_clustered) { - $sth = $self->poll->journal->prepare("SELECT userid, pollqid, value FROM pollresult2 " . - "WHERE pollid=? AND pollqid=?"); - } else { - my $dbr = LJ::get_db_reader(); - $sth = $dbr->prepare("SELECT userid, pollqid, value FROM pollresult " . - "WHERE pollid=? AND pollqid=?"); - } - $sth->execute($self->pollid, $self->pollqid); + my $sth = $self->poll->journal->prepare( "SELECT userid, pollqid, value FROM pollresult2 " . + "WHERE pollid=? AND pollqid=?" ); + $sth->execute( $self->pollid, $self->pollqid ); die $sth->errstr if $sth->err; my @res; diff -r c7dfa9c29068 -r 00706993500e cgi-bin/LJ/User.pm --- a/cgi-bin/LJ/User.pm Sat Sep 05 12:12:35 2009 +0000 +++ b/cgi-bin/LJ/User.pm Sat Sep 05 14:35:14 2009 +0000 @@ -4648,14 +4648,8 @@ sub activate_userpics { my $dbcr = LJ::get_cluster_def_reader($u); # select all userpics and build active / inactive lists - my $sth; - if ( $u->dversion > 6 ) { - return undef unless $dbcr; - $sth = $dbcr->prepare("SELECT picid, state FROM userpic2 WHERE userid=?"); - } else { - return undef unless $dbh; - $sth = $dbh->prepare("SELECT picid, state FROM userpic WHERE userid=?"); - } + return undef unless $dbcr; + my $sth = $dbcr->prepare( "SELECT picid, state FROM userpic2 WHERE userid=?" ); $sth->execute($userid); while (my ($picid, $state) = $sth->fetchrow_array) { next if $state eq 'X'; # expunged, means userpic has been removed from site by admins @@ -4693,16 +4687,9 @@ sub activate_userpics { # map pickws to picids for freq hash below my %count_picid = (); if ($keywords_in) { - my $sth; - if ( $u->dversion > 6 ) { - $sth = $dbcr->prepare("SELECT k.keyword, m.picid FROM userkeywords k, userpicmap2 m ". + my $sth = $dbcr->prepare( "SELECT k.keyword, m.picid FROM userkeywords k, userpicmap2 m ". "WHERE k.keyword IN ($keywords_in) AND k.kwid=m.kwid AND k.userid=m.userid " . - "AND k.userid=?"); - } else { - $sth = $dbh->prepare("SELECT k.keyword, m.picid FROM keywords k, userpicmap m " . - "WHERE k.keyword IN ($keywords_in) AND k.kwid=m.kwid " . - "AND m.userid=?"); - } + "AND k.userid=?" ); $sth->execute($userid); while (my ($keyword, $picid) = $sth->fetchrow_array) { # keyword => picid @@ -4716,13 +4703,8 @@ sub activate_userpics { @ban = splice(@ban, 0, $to_ban) if @ban > $to_ban; my $ban_in = join(",", map { $dbh->quote($_) } @ban); - if ( $u->dversion > 6 ) { - $u->do("UPDATE userpic2 SET state='I' WHERE userid=? AND picid IN ($ban_in)", - undef, $userid) if $ban_in; - } else { - $dbh->do("UPDATE userpic SET state='I' WHERE userid=? AND picid IN ($ban_in)", - undef, $userid) if $ban_in; - } + $u->do( "UPDATE userpic2 SET state='I' WHERE userid=? AND picid IN ($ban_in)", + undef, $userid ) if $ban_in; } # activate previously inactivated userpics @@ -4736,14 +4718,9 @@ sub activate_userpics { my @activate_picids = splice(@inactive, -$to_activate); my $activate_in = join(",", map { $dbh->quote($_) } @activate_picids); - if ($activate_in) { - if ( $u->dversion > 6 ) { - $u->do("UPDATE userpic2 SET state='N' WHERE userid=? AND picid IN ($activate_in)", - undef, $userid); - } else { - $dbh->do("UPDATE userpic SET state='N' WHERE userid=? AND picid IN ($activate_in)", - undef, $userid); - } + if ( $activate_in ) { + $u->do( "UPDATE userpic2 SET state='N' WHERE userid=? AND picid IN ($activate_in)", + undef, $userid ); } } @@ -4840,31 +4817,6 @@ sub remove_friend { confess 'LJ::User->remove_friend has been deprecated.'; } - -# take a user on dversion 7 and upgrade them to dversion 8 (clustered polls) -# DW doesn't support anything earlier than dversion 8, so this can -# probably go away at some point. - -# returns if this user's polls are clustered -# DW doesn't support anything earlier than dversion 8, so this can -# probably go away at some point. -sub polls_clustered { - my $u = shift; - return $u->dversion >= 8; -} - - -sub upgrade_to_dversion_8 { - my ( $u, $dbh, $dbhslo, $dbcm ) = @_; - - # If user has been purged, go ahead and update version - # Otherwise move their polls - my $ok = $u->is_expunged ? 1 : LJ::Poll->make_polls_clustered($u, $dbh, $dbhslo, $dbcm); - - LJ::update_user($u, { 'dversion' => 8 }) if $ok; - - return $ok; -} # FIXME: Needs updating for WTF sub opt_showmutualfriends { @@ -8153,15 +8105,10 @@ sub userpic_count { sub userpic_count { my $u = shift or return undef; - if ( $u->dversion > 6 ) { - my $dbcr = LJ::get_cluster_def_reader($u) or return undef; - return $dbcr->selectrow_array("SELECT COUNT(*) FROM userpic2 " . - "WHERE userid=? AND state <> 'X'", undef, $u->userid); - } - - my $dbh = LJ::get_db_writer() or return undef; - return $dbh->selectrow_array("SELECT COUNT(*) FROM userpic " . - "WHERE userid=? AND state <> 'X'", undef, $u->userid); + my $dbcr = LJ::get_cluster_def_reader( $u ) or return undef; + return $dbcr->selectrow_array( "SELECT COUNT(*) FROM userpic2 " . + "WHERE userid=? AND state <> 'X'", + undef, $u->userid ); } diff -r c7dfa9c29068 -r 00706993500e cgi-bin/LJ/Userpic.pm --- a/cgi-bin/LJ/Userpic.pm Sat Sep 05 12:12:35 2009 +0000 +++ b/cgi-bin/LJ/Userpic.pm Sat Sep 05 14:35:14 2009 +0000 @@ -97,15 +97,8 @@ sub new_from_md5 { my ($class, $u, $md5sum) = @_; die unless $u && length($md5sum) == 22; - my $sth; - if (LJ::Userpic->userpics_partitioned($u)) { - $sth = $u->prepare("SELECT * FROM userpic2 WHERE userid=? " . - "AND md5base64=?"); - } else { - my $dbr = LJ::get_db_reader(); - $sth = $dbr->prepare("SELECT * FROM userpic WHERE userid=? " . - "AND md5base64=?"); - } + my $sth = $u->prepare( "SELECT * FROM userpic2 WHERE userid=? " . + "AND md5base64=?" ); $sth->execute($u->{'userid'}, $md5sum); my $row = $sth->fetchrow_hashref or return undef; @@ -467,11 +460,6 @@ sub imagedata { return $$data; } - my %MimeTypeMap = ( - 'image/gif' => 'gif', - 'image/jpeg' => 'jpg', - 'image/png' => 'png', - ); my %MimeTypeMapd6 = ( 'G' => 'gif', 'J' => 'jpg', @@ -480,7 +468,7 @@ sub imagedata { my $data; if ($LJ::USERPIC_BLOBSERVER) { - my $fmt = ($u->{'dversion'} > 6) ? $MimeTypeMapd6{ $pic->{fmt} } : $MimeTypeMap{ $pic->{contenttype} }; + my $fmt = $MimeTypeMapd6{ $pic->{fmt} }; $data = LJ::Blob::get($u, "userpic", $fmt, $self->{picid}); return $data if $data; } @@ -493,23 +481,6 @@ sub imagedata { $self->{picid}); return $data ? $data : undef; } - -# does the user's dataversion support userpic comments? -sub supports_comments { - my $self = shift; - - my $u = $self->owner; - return $u->{dversion} > 6; -} - -# class method -# does this user's dataversion support userpic comments? -sub userpics_partitioned { - my ($class, $u) = @_; - Carp::croak("Not a valid \$u object") unless LJ::isu($u); - return $u->{dversion} > 6; -} -*user_supports_comments = \&userpics_partitioned; # TODO: add in lazy peer loading here sub load_row { @@ -530,18 +501,10 @@ sub load_row { # If you get past this conditional something is wrong # load_user_userpics always returns a value - my $row; - if (LJ::Userpic->userpics_partitioned($u)) { - $row = $u->selectrow_hashref("SELECT userid, picid, width, height, state, fmt, comment, description, location, url, " . + my $row = $u->selectrow_hashref( "SELECT userid, picid, width, height, state, fmt, comment, description, location, url, " . "UNIX_TIMESTAMP(picdate) AS 'pictime', flags, md5base64 " . "FROM userpic2 WHERE userid=? AND picid=?", undef, - $u->{userid}, $self->{picid}); - } else { - my $dbr = LJ::get_db_reader(); - $row = $dbr->selectrow_hashref("SELECT userid, picid, width, height, state, contenttype " . - "FROM userpic WHERE userid=? AND picid=?", undef, - $u->{userid}, $self->{picid}); - } + $u->userid, $self->{picid} ); $self->absorb_row($row) if $row; } @@ -559,9 +522,6 @@ sub get_cache { if ($u->{_userpicids}) { return [ map { LJ::Userpic->instance($u, $_) } @{$u->{_userpicids}} ]; } - - # no memcaching of userpic2 rows unless partitioned - return undef unless LJ::Userpic->userpics_partitioned($u); my $memkey = $class->memkey($u); my $memval = LJ::MemCache::get($memkey); @@ -593,12 +553,9 @@ sub set_cache { my $u = shift; my $rows = shift; - # no memcaching of userpic2 rows unless partitioned - if (LJ::Userpic->userpics_partitioned($u)) { - my $memkey = $class->memkey($u); - my @vals = map { LJ::MemCache::hash_to_array('userpic2', $_) } @$rows; - LJ::MemCache::set($memkey, \@vals, 60*30); - } + my $memkey = $class->memkey( $u ); + my @vals = map { LJ::MemCache::hash_to_array( 'userpic2', $_ ) } @$rows; + LJ::MemCache::set( $memkey, \@vals, 60*30 ); # set cache of picids on $u $u->{_userpicids} = [ map { $_->{picid} } @$rows ]; @@ -615,17 +572,10 @@ sub load_user_userpics { return @$cache if $cache; # select all of their userpics and iterate through them - my $sth; - if (LJ::Userpic->userpics_partitioned($u)) { - $sth = $u->prepare("SELECT userid, picid, width, height, state, fmt, comment, description, location, " . + my $sth = $u->prepare( "SELECT userid, picid, width, height, state, fmt, comment, description, location, " . "UNIX_TIMESTAMP(picdate) AS 'pictime', flags, md5base64 " . - "FROM userpic2 WHERE userid=?"); - } else { - my $dbh = LJ::get_db_writer(); - $sth = $dbh->prepare("SELECT userid, picid, width, height, state, contenttype " . - "FROM userpic WHERE userid=?"); - } - $sth->execute($u->{'userid'}); + "FROM userpic2 WHERE userid=?" ); + $sth->execute( $u->userid ); die "Error loading userpics: clusterid=$u->{clusterid}, errstr=" . $sth->errstr if $sth->err; while (my $rec = $sth->fetchrow_hashref) { @@ -690,9 +640,9 @@ sub create { my $base64 = Digest::MD5::md5_base64($$dataref); my $target; - if ($u->{dversion} > 6 && $LJ::USERPIC_MOGILEFS) { + if ( $LJ::USERPIC_MOGILEFS ) { $target = 'mogile'; - } elsif ($LJ::USERPIC_BLOBSERVER) { + } elsif ( $LJ::USERPIC_BLOBSERVER ) { $target = 'blob'; } @@ -706,49 +656,26 @@ sub create { # start making a new onew my $picid = LJ::alloc_global_counter('P'); - my $contenttype; - if (LJ::Userpic->userpics_partitioned($u)) { - $contenttype = { + my $contenttype = { 'GIF' => 'G', 'PNG' => 'P', 'JPG' => 'J', }->{$filetype}; - } else { - $contenttype = { - 'GIF' => 'image/gif', - 'PNG' => 'image/png', - 'JPG' => 'image/jpeg', - }->{$filetype}; - } @errors = (); # TEMP: FIXME: remove... using exceptions my $dberr = 0; - if ($u->{'dversion'} > 6) { - $u->do("INSERT INTO userpic2 (picid, userid, fmt, width, height, " . - "picdate, md5base64, location) VALUES (?, ?, ?, ?, ?, NOW(), ?, ?)", - undef, $picid, $u->{'userid'}, $contenttype, $w, $h, $base64, $target); - if ($u->err) { - push @errors, $err->($u->errstr); - $dberr = 1; - } - } else { - $dbh->do("INSERT INTO userpic (picid, userid, contenttype, width, height, " . - "picdate, md5base64) VALUES (?, ?, ?, ?, ?, NOW(), ?)", - undef, $picid, $u->{'userid'}, $contenttype, $w, $h, $base64); - if ($dbh->err) { - push @errors, $err->($dbh->errstr); - $dberr = 1; - } + $u->do( "INSERT INTO userpic2 (picid, userid, fmt, width, height, " . + "picdate, md5base64, location) VALUES (?, ?, ?, ?, ?, NOW(), ?, ?)", + undef, $picid, $u->userid, $contenttype, $w, $h, $base64, $target ); + if ( $u->err ) { + push @errors, $err->( $u->errstr ); + $dberr = 1; } my $clean_err = sub { - if ($u->{'dversion'} > 6) { - $u->do("DELETE FROM userpic2 WHERE userid=? AND picid=?", - undef, $u->{'userid'}, $picid) if $picid; - } else { - $dbh->do("DELETE FROM userpic WHERE picid=?", undef, $picid) if $picid; - } + $u->do( "DELETE FROM userpic2 WHERE userid=? AND picid=?", + undef, $u->userid, $picid ) if $picid; return $err->(@_); }; @@ -860,21 +787,12 @@ sub delete { $fail->() if $@; # userpic keywords - if (LJ::Userpic->userpics_partitioned($u)) { - eval { - $u->do("DELETE FROM userpicmap2 WHERE userid=? " . - "AND picid=?", undef, $u->{userid}, $picid) or die; - $u->do("DELETE FROM userpic2 WHERE picid=? AND userid=?", - undef, $picid, $u->{'userid'}) or die; - }; - } else { - eval { - my $dbh = LJ::get_db_writer(); - $dbh->do("DELETE FROM userpicmap WHERE userid=? " . - "AND picid=?", undef, $u->{userid}, $picid) or die; - $dbh->do("DELETE FROM userpic WHERE picid=?", undef, $picid) or die; + eval { + $u->do( "DELETE FROM userpicmap2 WHERE userid=? " . + "AND picid=?", undef, $u->userid, $picid ) or die; + $u->do( "DELETE FROM userpic2 WHERE picid=? AND userid=?", + undef, $picid, $u->userid ) or die; }; - } $fail->() if $@; $u->log_event('delete_userpic', { picid => $picid }); @@ -903,7 +821,6 @@ sub set_comment { local $LJ::THROW_ERRORS = 1; my $u = $self->owner; - return 0 unless LJ::Userpic->user_supports_comments($u); $comment = LJ::text_trim($comment, LJ::BMAX_UPIC_COMMENT(), LJ::CMAX_UPIC_COMMENT()); $u->do("UPDATE userpic2 SET comment=? WHERE userid=? AND picid=?", undef, $comment, $u->{'userid'}, $self->id) @@ -946,13 +863,8 @@ sub set_keywords { my $sth; my $dbh; - if (LJ::Userpic->userpics_partitioned($u)) { - $sth = $u->prepare("SELECT kwid FROM userpicmap2 WHERE userid=? AND picid=?"); - } else { - $dbh = LJ::get_db_writer(); - $sth = $dbh->prepare("SELECT kwid FROM userpicmap WHERE userid=? AND picid=?"); - } - $sth->execute($u->{'userid'}, $self->id); + $sth = $u->prepare( "SELECT kwid FROM userpicmap2 WHERE userid=? AND picid=?" ); + $sth->execute( $u->userid, $self->id ); my %exist_kwids; while (my ($kwid) = $sth->fetchrow_array) { @@ -964,7 +876,7 @@ sub set_keywords { my $picid = $self->{picid}; foreach my $kw (@keywords) { - my $kwid = (LJ::Userpic->userpics_partitioned($u)) ? LJ::get_keyword_id($u, $kw) : LJ::get_keyword_id($kw); + my $kwid = LJ::get_keyword_id( $u, $kw ); next unless $kwid; # TODO: fire some warning that keyword was bogus if (++$c > $LJ::MAX_USERPIC_KEYWORDS) { @@ -988,13 +900,8 @@ sub set_keywords { if (scalar @data) { my $bind = join(',', @bind); - if (LJ::Userpic->userpics_partitioned($u)) { - $u->do("REPLACE INTO userpicmap2 (userid, kwid, picid) VALUES $bind", - undef, @data); - } else { - $dbh->do("INSERT INTO userpicmap (userid, kwid, picid) VALUES $bind", - undef, @data); - } + $u->do( "REPLACE INTO userpicmap2 (userid, kwid, picid) VALUES $bind", + undef, @data ); } # Let the user know about any we didn't save @@ -1012,7 +919,6 @@ sub set_fullurl { sub set_fullurl { my ($self, $url) = @_; my $u = $self->owner; - return 0 unless LJ::Userpic->userpics_partitioned($u); $u->do("UPDATE userpic2 SET url=? WHERE userid=? AND picid=?", undef, $url, $u->{'userid'}, $self->id); $self->{url} = $url; diff -r c7dfa9c29068 -r 00706993500e cgi-bin/ljlib.pl --- a/cgi-bin/ljlib.pl Sat Sep 05 12:12:35 2009 +0000 +++ b/cgi-bin/ljlib.pl Sat Sep 05 14:35:14 2009 +0000 @@ -1542,8 +1542,7 @@ sub get_keyword_id # get the keyword and insert it if necessary my $kwid; - if ($u && $u->{dversion} > 5) { - # new style userkeywords -- but only if the user has the right dversion + if ( $u ) { $kwid = $u->selectrow_array('SELECT kwid FROM userkeywords WHERE userid = ? AND keyword = ?', undef, $u->{userid}, $kw) + 0; if ($autovivify && ! $kwid) { @@ -1564,18 +1563,6 @@ sub get_keyword_id # nuke cache LJ::MemCache::delete([ $u->{userid}, "kws:$u->{userid}" ]); - } - } else { - # old style global - my $dbh = LJ::get_db_writer(); - my $qkw = $dbh->quote($kw); - - # Making this a $dbr could cause problems due to the insertion of - # data based on the results of this query. Leave as a $dbh. - $kwid = $dbh->selectrow_array("SELECT kwid FROM keywords WHERE keyword=$qkw"); - if ($autovivify && ! $kwid) { - $dbh->do("INSERT INTO keywords (kwid, keyword) VALUES (NULL, $qkw)"); - $kwid = $dbh->{'mysql_insertid'}; } } return $kwid; diff -r c7dfa9c29068 -r 00706993500e cgi-bin/ljmemories.pl --- a/cgi-bin/ljmemories.pl Sat Sep 05 12:12:35 2009 +0000 +++ b/cgi-bin/ljmemories.pl Sat Sep 05 14:35:14 2009 +0000 @@ -21,17 +21,11 @@ sub count { return $count if $count; # now count - if ($u->{dversion} > 5) { - my $dbcr = LJ::get_cluster_def_reader($u); - $count = $dbcr->selectrow_array('SELECT COUNT(*) FROM memorable2 WHERE userid = ?', - undef, $u->{userid}); - return undef if $dbcr->err; - } else { - my $dbh = LJ::get_db_writer(); - $count = $dbh->selectrow_array('SELECT COUNT(*) FROM memorable WHERE userid = ?', - undef, $u->{userid}); - return undef if $dbh->err; - } + my $dbcr = LJ::get_cluster_def_reader( $u ); + $count = $dbcr->selectrow_array( 'SELECT COUNT(*) FROM memorable2 WHERE userid = ?', + undef, $u->{userid} ); + return undef if $dbcr->err; + $count += 0; # now put in memcache and return it @@ -56,8 +50,8 @@ sub create { return undef unless $u && %{$opts || {}}; # make sure we got enough options - my ($userid, $journalid, $ditemid, $des, $security) = - ($u->{userid}, map { $opts->{$_} } qw(journalid ditemid des security)); + my ( $userid, $journalid, $ditemid, $des, $security ) = + ( $u->userid, map { $opts->{$_} } qw(journalid ditemid des security) ); $userid += 0; $journalid += 0; $ditemid += 0; @@ -68,44 +62,29 @@ sub create { return undef unless $security =~ /^(?:public|friends|private)$/; # we have valid data, now let's insert it - if ($u->{dversion} > 5) { - return undef unless $u->writer; + return undef unless $u->writer; - # allocate memory id to use - my $memid = LJ::alloc_user_counter($u, 'R'); - return undef unless $memid; + # allocate memory id to use + my $memid = LJ::alloc_user_counter( $u, 'R' ); + return undef unless $memid; - # insert main memory - $u->do("INSERT INTO memorable2 (userid, memid, journalid, ditemid, des, security) " . - "VALUES (?, ?, ?, ?, ?, ?)", undef, $userid, $memid, $journalid, $ditemid, $des, $security); + # insert main memory + $u->do( "INSERT INTO memorable2 (userid, memid, journalid, ditemid, des, security) " . + "VALUES (?, ?, ?, ?, ?, ?)", undef, $userid, $memid, $journalid, $ditemid, $des, $security ); return undef if $u->err; - # insert keywords - my $val = join ',', map { "($u->{userid}, $memid, $_)" } @$kwids; - $u->do("REPLACE INTO memkeyword2 (userid, memid, kwid) VALUES $val"); + # insert keywords + my $val = join ',', map { "($userid, $memid, $_)" } @$kwids; + $u->do( "REPLACE INTO memkeyword2 (userid, memid, kwid) VALUES $val" ); - } else { - my $dbh = LJ::get_db_writer(); - return undef unless $dbh; - - # insert main memory - $dbh->do("INSERT INTO memorable (userid, journalid, jitemid, des, security) " . - "VALUES (?, ?, ?, ?, ?)", undef, $userid, $journalid, $ditemid, $des, $security); - return undef if $dbh->err; - - # insert keywords - my $memid = $dbh->{mysql_insertid}+0; - my $val = join ',', map { "($memid, $_)" } @$kwids; - $dbh->do("REPLACE INTO memkeyword (memid, kwid) VALUES $val"); - } # Delete the appropriate memcache entries - LJ::MemCache::delete([$u->{userid}, "memct:$u->{userid}"]); - my $filter = $journalid == $u->{userid} ? 'own' : 'other'; + LJ::MemCache::delete( [$userid, "memct:$userid"] ); + my $filter = $journalid == $userid ? 'own' : 'other'; my $filter_char = _map_filter_to_char($filter); my $security_char = _map_security_to_char($security); - my $memcache_key = "memkwcnt:$u->{userid}:$filter_char:$security_char"; - LJ::MemCache::delete([$u->{userid}, $memcache_key]); + my $memcache_key = "memkwcnt:$userid:$filter_char:$security_char"; + LJ::MemCache::delete( [$userid, $memcache_key] ); return 1; } @@ -120,32 +99,22 @@ sub create { # returns: 1 on success; undef on error. # </LJFUNC> sub delete_by_id { - my ($u, $memids) = @_; - $u = LJ::want_user($u); + my ( $u, $memids ) = @_; + $u = LJ::want_user( $u ); $memids = [ $memids ] if $memids && !ref $memids; # so they can just pass a single thing... return undef unless $u && @{$memids || []}; # setup - my ($db, $table) = $u->{dversion} > 5 ? - ($u, '2') : - (LJ::get_db_writer(), ''); + my ( $db, $table ) = ( $u, '2' ); - # if dversion 5, verify the ids - my $in = join ',', map { $_+0 } @$memids; - if ($u->{dversion} == 5) { - $memids = $db->selectcol_arrayref("SELECT memid FROM memorable WHERE userid = ? AND memid IN ($in)", - undef, $u->{userid}); - return undef if $db->err; - return 1 unless @{$memids || []}; # if we got nothing, pretend success - $in = join ',', map { $_+0 } @$memids; - } + my $in = join ',', map { $_ + 0 } @$memids; # delete actual memory $db->do("DELETE FROM memorable$table WHERE userid = ? AND memid IN ($in)", undef, $u->{userid}); return undef if $db->err; # delete keyword associations - my $euser = $u->{dversion} > 5 ? "userid = $u->{userid} AND" : ''; + my $euser = "userid = $u->{userid} AND"; $db->do("DELETE FROM memkeyword$table WHERE $euser memid IN ($in)"); # delete cache of count and keyword counts @@ -198,17 +167,10 @@ sub get_keyword_counts { if (@all_memids) { my $in = join ',', @all_memids; - if ($u->{dversion} > 5) { - my $dbcr = LJ::get_cluster_reader($u); - my $sql = "SELECT kwid, memid FROM memkeyword2 WHERE userid = $userid AND memid IN ($in)"; - $mem_kw_rows = $dbcr->selectall_arrayref($sql); - return undef if $dbcr->err; - } else { - my $dbr = LJ::get_db_reader(); - my $sql = "SELECT kwid, memid FROM memkeyword WHERE kwid IN ($in)"; - $mem_kw_rows = $dbr->selectall_arrayref($sql); - return undef if $dbr->err; - } + my $dbcr = LJ::get_cluster_reader( $u ); + my $sql = "SELECT kwid, memid FROM memkeyword2 WHERE userid = $userid AND memid IN ($in)"; + $mem_kw_rows = $dbcr->selectall_arrayref( $sql ); + return undef if $dbcr->err; } # Filter and Sum @@ -356,25 +318,18 @@ sub add_hash { # returns: Arrayref of keywordids; undef on error. # </LJFUNC> sub get_keywordids { - my ($u, $memid) = @_; - $u = LJ::want_user($u); + my ( $u, $memid ) = @_; + $u = LJ::want_user( $u ); $memid += 0; return undef unless $u && $memid; # definitive reader/master because this function is usually called when # someone is on an edit page. - my $kwids; - if ($u->{dversion} > 5) { - my $dbcr = LJ::get_cluster_def_reader($u); - $kwids = $dbcr->selectcol_arrayref('SELECT kwid FROM memkeyword2 WHERE userid = ? AND memid = ?', - undef, $u->{userid}, $memid); - return undef if $dbcr->err; + my $dbcr = LJ::get_cluster_def_reader( $u ); + my $kwids = $dbcr->selectcol_arrayref( 'SELECT kwid FROM memkeyword2 WHERE userid = ? AND memid = ?', + undef, $u->userid, $memid ); + return undef if $dbcr->err; - } else { - my $dbh = LJ::get_db_writer(); - $kwids = $dbh->selectcol_arrayref('SELECT kwid FROM memkeyword WHERE memid = ?', undef, $memid); - return undef if $dbh->err; - } # all good, return return $kwids; @@ -398,9 +353,7 @@ sub get_keywordids { # return unless $u && $memid && %{$upd || {}}; # # # get database handle -# my ($db, $table) = $u->{dversion} > 5 ? -# ($u, '2') : -# (LJ::get_db_writer(), ''); +# my ($db, $table) = ($u, '2'); # return undef unless $db; # # # construct update lines... only valid things we can update are des and security @@ -478,31 +431,23 @@ sub _memory_getter { $selwhere = "AND memid IN ($in)"; } elsif ($opts->{byditemid} && $opts->{journalid}) { # or, they want to see if a memory exists for a particular item - my $selitemid = $u->{dversion} > 5 ? "ditemid" : "jitemid"; + my $selitemid = "ditemid"; $opts->{byditemid} += 0; $opts->{journalid} += 0; $selwhere = "AND journalid = $opts->{journalid} AND $selitemid = $opts->{byditemid}"; } elsif ($opts->{byditemid}) { # get memory, OLD STYLE so journalid is 0 - my $selitemid = $u->{dversion} > 5 ? "ditemid" : "jitemid"; + my $selitemid = "ditemid"; $opts->{byditemid} += 0; $selwhere = "AND journalid = 0 AND $selitemid = $opts->{byditemid}"; } # load up memories into hashref - my (%memories, $sth); - if ($u->{dversion} > 5) { - # new clustered memories - my $dbcr = LJ::get_cluster_reader($u); - my $sql = "SELECT memid, userid, journalid, ditemid, $des security " - . "FROM memorable2 WHERE userid = ? $selwhere $secwhere $extrawhere"; - $sth = $dbcr->prepare($sql); - } else { - # old global memories - my $dbr = LJ::get_db_reader(); - $sth = $dbr->prepare("SELECT memid, userid, journalid, jitemid, $des security " . - "FROM memorable WHERE userid = ? $selwhere $secwhere $extrawhere"); - } + my ( %memories, $sth ); + my $dbcr = LJ::get_cluster_reader( $u ); + my $sql = "SELECT memid, userid, journalid, ditemid, $des security " + . "FROM memorable2 WHERE userid = ? $selwhere $secwhere $extrawhere"; + $sth = $dbcr->prepare( $sql ); # general execution and fetching for return $sth->execute($u->{userid}); @@ -599,41 +544,21 @@ sub get_by_keyword { my $kw = defined $kwoid && !$kwid ? $kwoid : undef; return undef unless $u && ($kwid || defined $kw); - # two entirely separate codepaths, depending on the user's dversion. my $memids; - if ($u->{dversion} > 5) { - # the smart way - my $dbcr = LJ::get_cluster_reader($u); - return undef unless $dbcr; + my $dbcr = LJ::get_cluster_reader( $u ); + return undef unless $dbcr; - # get keyword id if we don't have it - if (defined $kw) { - $kwid = $dbcr->selectrow_array('SELECT kwid FROM userkeywords WHERE userid = ? AND keyword = ?', - undef, $u->{userid}, $kw)+0; - } - return undef unless $kwid; + # get keyword id if we don't have it + if ( defined $kw ) { + $kwid = $dbcr->selectrow_array( 'SELECT kwid FROM userkeywords WHERE userid = ? AND keyword = ?', + undef, $u->userid, $kw ) + 0; + } + return undef unless $kwid; - # now get the actual memory ids - $memids = $dbcr->selectcol_arrayref('SELECT memid FROM memkeyword2 WHERE userid = ? AND kwid = ?', - undef, $u->{userid}, $kwid); - return undef if $dbcr->err; - } else { - # the dumb way - my $dbr = LJ::get_db_reader(); - return undef unless $dbr; - - # get keyword id if we don't have it - if (defined $kw) { - $kwid = $dbr->selectrow_array('SELECT kwid FROM keywords WHERE keyword = ?', undef, $kw)+0; - } - return undef unless $kwid; - - # now get memory ids. this has to join. :( - $memids = $dbr->selectcol_arrayref('SELECT m.memid FROM memorable m, memkeyword mk ' . - 'WHERE m.userid = ? AND mk.memid = m.memid AND mk.kwid = ?', - undef, $u->{userid}, $kwid); - return undef if $dbr->err; - } + # now get the actual memory ids + $memids = $dbcr->selectcol_arrayref( 'SELECT memid FROM memkeyword2 WHERE userid = ? AND kwid = ?', + undef, $u->{userid}, $kwid ); + return undef if $dbcr->err; # return $memids = [] unless defined($memids); @@ -660,47 +585,19 @@ sub get_keywords { return $ret if defined $ret; $ret = {}; - if ($u->{dversion} > 5) { - # new style clustered code - my $dbcm = LJ::get_cluster_def_reader($u); - unless ($dbcm) { - $use_reader = 1; - $dbcm = LJ::get_cluster_reader($u); - } - my $ids = $dbcm->selectcol_arrayref('SELECT DISTINCT kwid FROM memkeyword2 WHERE userid = ?', - undef, $u->{userid}); - if (@{$ids || []}) { - my $in = join ",", @$ids; - my $rows = $dbcm->selectall_arrayref('SELECT kwid, keyword FROM userkeywords ' . - "WHERE userid = ? AND kwid IN ($in)", undef, $u->{userid}); - $ret->{$_->[0]} = $_->[1] foreach @{$rows || []}; - } - - } else { - # old style code using global - my $dbh = LJ::get_db_writer(); - unless ($dbh) { - $use_reader = 1; - $dbh = LJ::get_db_reader(); - } - my $sth = $dbh->prepare("SELECT DISTINCT mk.kwid ". - "FROM ". - " memorable m FORCE INDEX (uniq),". - " memkeyword mk ". - "WHERE mk.memid=m.memid AND m.userid=?"); - $sth->execute($u->{userid}); - my @ids; - push @ids, $_ while $_ = $sth->fetchrow_array; - - if (@ids) { - my $in = join(",", @ids); - $sth = $dbh->prepare("SELECT kwid, keyword FROM keywords WHERE kwid IN ($in)"); - $sth->execute; - - while (my ($id,$kw) = $sth->fetchrow_array) { - $ret->{$id} = $kw; - } - } + my $dbcm = LJ::get_cluster_def_reader( $u ); + unless ( $dbcm ) { + $use_reader = 1; + $dbcm = LJ::get_cluster_reader( $u ); + } + my $ids = $dbcm->selectcol_arrayref( 'SELECT DISTINCT kwid FROM memkeyword2 WHERE userid = ?', + undef, $u->userid ); + if ( @{$ids || []} ) { + my $in = join ",", @$ids; + my $rows = $dbcm->selectall_arrayref( 'SELECT kwid, keyword FROM userkeywords ' . + "WHERE userid = ? AND kwid IN ($in)", + undef, $u->userid ); + $ret->{$_->[0]} = $_->[1] foreach @{$rows || []}; } my $expiration = $LJ::MEMCACHE_EXPIRATION{'memkwid'} || 86400; diff -r c7dfa9c29068 -r 00706993500e cgi-bin/ljuserpics.pl --- a/cgi-bin/ljuserpics.pl Sat Sep 05 12:12:35 2009 +0000 +++ b/cgi-bin/ljuserpics.pl Sat Sep 05 14:35:14 2009 +0000 @@ -70,16 +70,11 @@ sub load_userpics } my %db_load; - my @load_list_d6; foreach my $row (@load_list) { # ignore users on clusterid 0 next unless $row->[0]->{clusterid}; - if ($row->[0]->{'dversion'} > 6) { - push @{$db_load{$row->[0]->{'clusterid'}}}, $row; - } else { - push @load_list_d6, $row; - } + push @{$db_load{$row->[0]->{clusterid}}}, $row; } foreach my $cid (keys %db_load) { @@ -115,36 +110,6 @@ sub load_userpics LJ::MemCache::set([$id,"userpic.$id"], LJ::MemCache::hash_to_array("userpic", $ur)); } } - - # following path is only for old style d6 userpics... don't load any if we don't - # have any to load - return unless @load_list_d6; - - my $dbr = LJ::get_db_writer(); - my $picid_in = join(',', map { $_->[1] } @load_list_d6); - my $sth = $dbr->prepare("SELECT userid, picid, width, height, contenttype, state, ". - " UNIX_TIMESTAMP(picdate) AS 'picdate' ". - "FROM userpic WHERE picid IN ($picid_in)"); - $sth->execute; - while (my $ur = $sth->fetchrow_hashref) { - my $id = delete $ur->{'picid'}; - $upics->{$id} = $ur; - - # force into numeric context so they'll be smaller in memcache: - foreach my $k (qw(userid width height picdate)) { - $ur->{$k} += 0; - } - $ur->{location} = "?"; - $ur->{flags} = undef; - $ur->{fmt} = { - 'image/gif' => 'G', - 'image/jpeg' => 'J', - 'image/png' => 'P', - }->{delete $ur->{contenttype}}; - - $LJ::CACHE_USERPIC{$id} = $ur; - LJ::MemCache::set([$id,"userpic.$id"], LJ::MemCache::hash_to_array("userpic", $ur)); - } } # <LJFUNC> @@ -167,42 +132,25 @@ sub expunge_userpic { # get the pic information my $state; - if ($u->{'dversion'} > 6) { - my $dbcm = LJ::get_cluster_master($u); - return undef unless $dbcm && $u->writer; + my $dbcm = LJ::get_cluster_master( $u ); + return undef unless $dbcm && $u->writer; - $state = $dbcm->selectrow_array('SELECT state FROM userpic2 WHERE userid = ? AND picid = ?', - undef, $u->{'userid'}, $picid); - return undef unless $state; # invalid pic - return $u->{'userid'} if $state eq 'X'; # already expunged + $state = $dbcm->selectrow_array( 'SELECT state FROM userpic2 WHERE userid = ? AND picid = ?', + undef, $u->userid, $picid ); + return undef unless $state; # invalid pic + return $u->userid if $state eq 'X'; # already expunged - # else now mark it - $u->do("UPDATE userpic2 SET state='X' WHERE userid = ? AND picid = ?", undef, $u->{'userid'}, $picid); - return LJ::error($dbcm) if $dbcm->err; - $u->do("DELETE FROM userpicmap2 WHERE userid = ? AND picid = ?", undef, $u->{'userid'}, $picid); - } else { - my $dbr = LJ::get_db_reader(); - return undef unless $dbr; - - $state = $dbr->selectrow_array('SELECT state FROM userpic WHERE picid = ?', - undef, $picid); - return undef unless $state; # invalid pic - return $u->{'userid'} if $state eq 'X'; # already expunged - - # else now mark it - my $dbh = LJ::get_db_writer(); - return undef unless $dbh; - $dbh->do("UPDATE userpic SET state='X' WHERE picid = ?", undef, $picid); - return LJ::error($dbh) if $dbh->err; - $dbh->do("DELETE FROM userpicmap WHERE userid = ? AND picid = ?", undef, $u->{'userid'}, $picid); - } + # else now mark it + $u->do( "UPDATE userpic2 SET state='X' WHERE userid = ? AND picid = ?", undef, $u->userid, $picid ); + return LJ::error( $dbcm ) if $dbcm->err; + $u->do( "DELETE FROM userpicmap2 WHERE userid = ? AND picid = ?", undef, $u->userid, $picid ); # now clear the user's memcache picture info - LJ::Userpic->delete_cache($u); + LJ::Userpic->delete_cache( $u ); # call the hook and get out of here - my @rval = LJ::run_hooks('expunge_userpic', $picid, $u->{'userid'}); - return ($u->{'userid'}, map {$_->[0]} grep {$_ && @$_ && $_->[0]} @rval); + my @rval = LJ::run_hooks( 'expunge_userpic', $picid, $u->userid ); + return ( $u->userid, map {$_->[0]} grep {$_ && @$_ && $_->[0]} @rval ); } # <LJFUNC> @@ -255,11 +203,10 @@ sub get_userpic_info # and we need them if (my $cachedata = $LJ::CACHE_USERPIC_INFO{$userid}) { my $good = 1; - if ($u->{'dversion'} > 6) { - $good = 0 if $opts->{'load_comments'} && ! $cachedata->{'_has_comments'}; - $good = 0 if $opts->{'load_urls'} && ! $cachedata->{'_has_urls'}; - $good = 0 if $opts->{'load_descriptions'} && ! $cachedata->{'_has_descriptions'}; - } + $good = 0 if $opts->{load_comments} && ! $cachedata->{_has_comments}; + $good = 0 if $opts->{load_urls} && ! $cachedata->{_has_urls}; + $good = 0 if $opts->{load_descriptions} && ! $cachedata->{_has_descriptions}; + return $cachedata if $good; } @@ -300,71 +247,68 @@ sub get_userpic_info } } - if ($u->{'dversion'} > 6) { + # Load picture comments + if ( $opts->{load_comments} ) { + my $commemkey = [$u->userid, "upiccom:" . $u->userid]; + my $comminfo = LJ::MemCache::get( $commemkey ); - # Load picture comments - if ( $opts->{'load_comments'} ) { - my $commemkey = [$u->{'userid'}, "upiccom:$u->{'userid'}"]; - my $comminfo = LJ::MemCache::get($commemkey); + if ( defined( $comminfo ) ) { + my ( $pos, $nulpos ); + $pos = $nulpos = 0; + while ( ($nulpos = index( $comminfo, "\0", $pos )) > 0 ) { + my $comment = substr( $comminfo, $pos, $nulpos-$pos ); + my $id = unpack( "N", substr( $comminfo, $nulpos+1, 4 ) ); + $pos = $nulpos + 5; # skip NUL + 4 bytes. + $info->{pic}->{$id}->{comment} = $comment; + $info->{comment}->{$id} = $comment; + } + $info->{_has_comments} = 1; + } else { # Requested to load comments, but they aren't in memcache + # so force a db load + undef $info; + } + } - if ( defined( $comminfo ) ) { - my ($pos, $nulpos); - $pos = $nulpos = 0; - while (($nulpos = index($comminfo, "\0", $pos)) > 0) { - my $comment = substr($comminfo, $pos, $nulpos-$pos); - my $id = unpack("N", substr($comminfo, $nulpos+1, 4)); - $pos = $nulpos + 5; # skip NUL + 4 bytes. - $info->{'pic'}->{$id}->{'comment'} = $comment; - $info->{'comment'}->{$id} = $comment; - } - $info->{'_has_comments'} = 1; - } else { # Requested to load comments, but they aren't in memcache - # so force a db load - undef $info; + # Load picture urls + if ( $opts->{load_urls} && $info ) { + my $urlmemkey = [$u->userid, "upicurl:" . $u->userid]; + my $urlinfo = LJ::MemCache::get( $urlmemkey ); + + if ( defined( $urlinfo ) ) { + my ( $pos, $nulpos ); + $pos = $nulpos = 0; + while ( ($nulpos = index( $urlinfo, "\0", $pos )) > 0 ) { + my $url = substr( $urlinfo, $pos, $nulpos-$pos ); + my $id = unpack( "N", substr( $urlinfo, $nulpos+1, 4 ) ); + $pos = $nulpos + 5; # skip NUL + 4 bytes. + $info->{pic}->{$id}->{url} = $url; } + $info->{_has_urls} = 1; + } else { # Requested to load urls, but they aren't in memcache + # so force a db load + undef $info; } + } - # Load picture urls - if ( $opts->{'load_urls'} && $info ) { - my $urlmemkey = [$u->{'userid'}, "upicurl:$u->{'userid'}"]; - my $urlinfo = LJ::MemCache::get($urlmemkey); + # Load picture descriptions + if ( $opts->{load_descriptions} && $info ) { + my $descmemkey = [$u->userid, "upicdes:" . $u->userid]; + my $descinfo = LJ::MemCache::get( $descmemkey ); - if ( defined( $urlinfo ) ) { - my ($pos, $nulpos); - $pos = $nulpos = 0; - while (($nulpos = index($urlinfo, "\0", $pos)) > 0) { - my $url = substr($urlinfo, $pos, $nulpos-$pos); - my $id = unpack("N", substr($urlinfo, $nulpos+1, 4)); - $pos = $nulpos + 5; # skip NUL + 4 bytes. - $info->{'pic'}->{$id}->{'url'} = $url; - } - $info->{'_has_urls'} = 1; - } else { # Requested to load urls, but they aren't in memcache - # so force a db load - undef $info; + if ( defined ( $descinfo ) ) { + my ( $pos, $nulpos ); + $pos = $nulpos = 0; + while ( ($nulpos = index( $descinfo, "\0", $pos )) > 0 ) { + my $description = substr( $descinfo, $pos, $nulpos-$pos ); + my $id = unpack( "N", substr( $descinfo, $nulpos+1, 4 ) ); + $pos = $nulpos + 5; # skip NUL + 4 bytes. + $info->{pic}->{$id}->{description} = $description; + $info->{description}->{$id} = $description; } - } - - # Load picture descriptions - if ( $opts->{'load_descriptions'} && $info ) { - my $descmemkey = [$u->{'userid'}, "upicdes:$u->{'userid'}"]; - my $descinfo = LJ::MemCache::get($descmemkey); - - if ( defined ( $descinfo ) ) { - my ($pos, $nulpos); - $pos = $nulpos = 0; - while (($nulpos = index($descinfo, "\0", $pos)) > 0) { - my $description = substr($descinfo, $pos, $nulpos-$pos); - my $id = unpack("N", substr($descinfo, $nulpos+1, 4)); - $pos = $nulpos + 5; # skip NUL + 4 bytes. - $info->{pic}->{$id}->{description} = $description; - $info->{description}->{$id} = $description; - } - $info->{'_has_descriptions'} = 1; - } else { # Requested to load descriptions, but they aren't in memcache - # so force a db load - undef $info; - } + $info->{_has_descriptions} = 1; + } else { # Requested to load descriptions, but they aren't in memcache + # so force a db load + undef $info; } } } @@ -383,38 +327,28 @@ sub get_userpic_info my $db = @LJ::MEMCACHE_SERVERS ? LJ::get_db_writer() : LJ::get_db_reader(); return undef unless $dbcr && $db; - if ($u->{'dversion'} > 6) { - $sth = $dbcr->prepare("SELECT picid, width, height, state, userid, comment, url, description ". - "FROM userpic2 WHERE userid=?"); - } else { - $sth = $db->prepare("SELECT picid, width, height, state, userid ". - "FROM userpic WHERE userid=?"); - } - $sth->execute($u->{'userid'}); + $sth = $dbcr->prepare( "SELECT picid, width, height, state, userid, comment, url, description ". + "FROM userpic2 WHERE userid=?" ); + $sth->execute( $u->userid ); my @pics; while (my $pic = $sth->fetchrow_hashref) { next if $pic->{state} eq 'X'; # no expunged pics in list push @pics, $pic; $info->{'pic'}->{$pic->{'picid'}} = $pic; - $minfocom{int($pic->{picid})} = $pic->{comment} if $u->{'dversion'} > 6 - && $opts->{'load_comments'} && $pic->{'comment'}; - $minfourl{int($pic->{'picid'})} = $pic->{'url'} if $u->{'dversion'} > 6 - && $opts->{'load_urls'} && $pic->{'url'}; - $minfodesc{int($pic->{picid})} = $pic->{description} if $u->{dversion} > 6 - && $opts->{load_descriptions} && $pic->{description}; + $minfocom{int($pic->{picid})} = $pic->{comment} + if $opts->{load_comments} && $pic->{comment}; + $minfourl{int($pic->{picid})} = $pic->{url} + if $opts->{load_urls} && $pic->{url}; + $minfodesc{int($pic->{picid})} = $pic->{description} + if $opts->{load_descriptions} && $pic->{description}; } $picstr = join('', map { pack("NCCA", $_->{picid}, $_->{width}, $_->{height}, $_->{state}) } @pics); - if ($u->{'dversion'} > 6) { - $sth = $dbcr->prepare("SELECT k.keyword, m.picid FROM userpicmap2 m, userkeywords k ". - "WHERE k.userid=? AND m.kwid=k.kwid AND m.userid=k.userid"); - } else { - $sth = $db->prepare("SELECT k.keyword, m.picid FROM userpicmap m, keywords k ". - "WHERE m.userid=? AND m.kwid=k.kwid"); - } + $sth = $dbcr->prepare( "SELECT k.keyword, m.picid FROM userpicmap2 m, userkeywords k ". + "WHERE k.userid=? AND m.kwid=k.kwid AND m.userid=k.userid" ); $sth->execute($u->{'userid'}); my %minfokw; while (my ($kw, $id) = $sth->fetchrow_array) { @@ -429,40 +363,37 @@ sub get_userpic_info $minfo = [ $VERSION_PICINFO, $picstr, $kwstr ]; LJ::MemCache::set($memkey, $minfo); - if ($u->{'dversion'} > 6) { + if ( $opts->{load_comments} ) { + $info->{comment} = \%minfocom; + my $commentstr = join( '', map { pack( "Z*N", $minfocom{$_}, $_ ) } keys %minfocom ); - if ($opts->{'load_comments'}) { - $info->{'comment'} = \%minfocom; - my $commentstr = join('', map { pack("Z*N", $minfocom{$_}, $_) } keys %minfocom); + my $memkey = [$u->userid, "upiccom:" . $u->userid]; + LJ::MemCache::set( $memkey, $commentstr ); - my $memkey = [$u->{'userid'}, "upiccom:$u->{'userid'}"]; - LJ::MemCache::set($memkey, $commentstr); + $info->{_has_comments} = 1; + } - $info->{'_has_comments'} = 1; - } + if ($opts->{load_urls}) { + my $urlstr = join( '', map { pack( "Z*N", $minfourl{$_}, $_ ) } keys %minfourl ); - if ($opts->{'load_urls'}) { - my $urlstr = join('', map { pack("Z*N", $minfourl{$_}, $_) } keys %minfourl); + my $memkey = [$u->userid, "upicurl:" . $u->userid]; + LJ::MemCache::set( $memkey, $urlstr ); - my $memkey = [$u->{'userid'}, "upicurl:$u->{'userid'}"]; - LJ::MemCache::set($memkey, $urlstr); + $info->{_has_urls} = 1; + } - $info->{'_has_urls'} = 1; - } - - if ($opts->{load_descriptions}) { - $info->{description} = \%minfodesc; - my $descstring = join('', map { pack("Z*N", $minfodesc{$_}, $_) } keys %minfodesc); + if ($opts->{load_descriptions}) { + $info->{description} = \%minfodesc; + my $descstring = join( '', map { pack( "Z*N", $minfodesc{$_}, $_ ) } keys %minfodesc ); - my $memkey = [$u->{'userid'}, "upicdes:$u->{'userid'}"]; - LJ::MemCache::set($memkey, $descstring); + my $memkey = [$u->userid, "upicdes:" $u->userid]; + LJ::MemCache::set( $memkey, $descstring ); - $info->{'_has_descriptions'} = 1; - } + $info->{_has_descriptions} = 1; } } - $LJ::CACHE_USERPIC_INFO{$u->{'userid'}} = $info; + $LJ::CACHE_USERPIC_INFO{$u->userid} = $info; return $info; } diff -r c7dfa9c29068 -r 00706993500e htdocs/editpics.bml --- a/htdocs/editpics.bml Sat Sep 05 12:12:35 2009 +0000 +++ b/htdocs/editpics.bml Sat Sep 05 14:35:14 2009 +0000 @@ -365,17 +365,15 @@ use strict; $body .= "</p>\n"; $body .= "<p class='detail'>$ML{'.label.keywords.desc'}</p>\n"; - if (LJ::Userpic->user_supports_comments($u)) { - $body .= "<p class='pkg'>\n"; - $body .= "<label class='left' for='comments_0'>$ML{'.label.comment'}</label>\n"; - my $comments = $POST{'comments'}; - $body .= "<span class='input-wrapper'>"; - $body .= LJ::html_text({ 'name' => 'comments_0', 'class' => 'text', id => 'comments_0', 'maxlength' => LJ::CMAX_UPIC_COMMENT, 'value', $comments }) . "\n"; - $body .= LJ::help_icon_html('upic_comments') . "\n"; - $body .= "</span>"; - $body .= "</p>\n"; - $body .= "<p class='detail'>$ML{'.label.comment.desc'}</p>\n"; - } + $body .= "<p class='pkg'>\n"; + $body .= "<label class='left' for='comments_0'>$ML{'.label.comment'}</label>\n"; + my $comments = $POST{'comments'}; + $body .= "<span class='input-wrapper'>"; + $body .= LJ::html_text({ 'name' => 'comments_0', 'class' => 'text', id => 'comments_0', 'maxlength' => LJ::CMAX_UPIC_COMMENT, 'value', $comments }) . "\n"; + $body .= LJ::help_icon_html('upic_comments') . "\n"; + $body .= "</span>"; + $body .= "</p>\n"; + $body .= "<p class='detail'>$ML{'.label.comment.desc'}</p>\n"; $body .= "<p class='pkg'>\n"; $body .= "<label class='left' for='descriptions_0'>$ML{'.label.description'}</label>\n"; @@ -409,9 +407,7 @@ use strict; $body .= "<input type='button' value='$ML{'.btn.addfile'}' onclick='javascript:addNewUpload(\"file\");' /> <input type='button' value='$ML{'.btn.addurl'}' onclick='javascript:addNewUpload(\"url\");'/>\n"; $body .= "<script type='text/javascript'>\n"; $body .= "maxcounter = $remaining_uploads;\n"; - if (LJ::Userpic->user_supports_comments($u)) { - $body .= "allowComments = true;\n"; - } + $body .= "allowComments = true;\n"; $body .= "allowDescriptions = true;\n"; $body .= "ep_labels.comment = '$ML{'.label.comment'}';\n"; @@ -498,18 +494,16 @@ use strict; 'value' => $keywords }) . "\n"; $body .= "</div>\n"; - if ($pic->supports_comments) { - $body .= "<div class='userpic_comments pkg'>\n"; - $body .= "<label class='left' for='com_$pid'>$ML{'.label.comment'}</label>\n "; - $body .= LJ::html_text({ 'name' => "com_$pid", 'class' => "text", 'id' => "com_$pid", - 'value' => $comment, - 'maxlength' => LJ::CMAX_UPIC_COMMENT, - 'disabled' => $pic->inactive }) . "\n"; - $body .= LJ::html_hidden({ 'name' => "com_orig_$pid", - 'value' => $comment }) . "\n"; + $body .= "<div class='userpic_comments pkg'>\n"; + $body .= "<label class='left' for='com_$pid'>$ML{'.label.comment'}</label>\n "; + $body .= LJ::html_text({ 'name' => "com_$pid", 'class' => "text", 'id' => "com_$pid", + 'value' => $comment, + 'maxlength' => LJ::CMAX_UPIC_COMMENT, + 'disabled' => $pic->inactive }) . "\n"; + $body .= LJ::html_hidden({ 'name' => "com_orig_$pid", + 'value' => $comment }) . "\n"; - $body .= "</div>\n"; - } + $body .= "</div>\n"; $body .= "<div class='userpic_descriptions pkg'>\n"; $body .= "<label class='left' for='desc_$pid'>$ML{'.label.description'}</label>\n "; --------------------------------------------------------------------------------