Refactoring. Make a new method $u->create_moodtheme; call it in the
appropriate places.
Patch by kareila.
diffs (88 lines):
diff -r 92e2e6b2f18e -r c7431ec0bc18 cgi-bin/DW/Mood.pm
--- a/cgi-bin/DW/Mood.pm Fri Jun 25 19:05:56 2010 +0800
+++ b/cgi-bin/DW/Mood.pm Fri Jun 25 20:41:23 2010 +0800
@@ -264,4 +264,32 @@ sub clear_cache {
}
+# END package DW::Mood;
+
+package LJ::User;
+
+# user method for creating new mood theme
+# args: theme name, description, errorref
+# returns: id of new theme or undef on failure
+sub create_moodtheme {
+ my ( $u, $name, $desc, $err ) = @_;
+ my $errsub = sub { $$err = $_[0] if ref $err; return undef };
+
+ return $errsub->( LJ::Lang::ml(
"/manage/moodthemes.bml.error.cantcreatethemes" ) )
+ unless $u->can_create_moodthemes;
+ return $errsub->( LJ::Lang::ml( "/manage/moodthemes.bml.error.nonamegiven"
) )
+ unless $name;
+ $desc ||= '';
+
+ my $dbh = LJ::get_db_writer() or
+ return $errsub->( LJ::Lang::ml( "error.nodb" ) );
+ my $sth = $dbh->prepare( "INSERT INTO moodthemes " .
+ "(ownerid, name, des, is_public) VALUES (?, ?, ?, 'N')" );
+ $sth->execute( $u->id, $name, $desc ) or
+ return $errsub->( LJ::Lang::ml( "error.dberror" ) . $dbh->errstr );
+
+ return $dbh->{mysql_insertid};
+}
+
+
1;
diff -r 92e2e6b2f18e -r c7431ec0bc18
cgi-bin/LJ/Console/Command/MoodthemeCreate.pm
--- a/cgi-bin/LJ/Console/Command/MoodthemeCreate.pm Fri Jun 25 19:05:56
2010 +0800
+++ b/cgi-bin/LJ/Console/Command/MoodthemeCreate.pm Fri Jun 25 20:41:23
2010 +0800
@@ -37,14 +37,10 @@ sub execute {
unless $name && $desc && scalar(@args) == 0;
my $remote = LJ::get_remote();
- return $self->error("Sorry, your account type doesn't let you create new
mood themes")
- unless $remote->can_create_moodthemes;
+ my $err;
+ my $mtid = $remote->create_moodtheme( $name, $desc, \$err )
+ or return $self->error( $err );
- my $dbh = LJ::get_db_writer();
- my $sth = $dbh->prepare("INSERT INTO moodthemes (ownerid, name, des,
is_public) VALUES (?, ?, ?, 'N')");
- $sth->execute($remote->id, $name, $desc);
-
- my $mtid = $dbh->{'mysql_insertid'};
return $self->print("Success. Your new mood theme ID is $mtid");
}
diff -r 92e2e6b2f18e -r c7431ec0bc18 htdocs/manage/moodthemes.bml
--- a/htdocs/manage/moodthemes.bml Fri Jun 25 19:05:56 2010 +0800
+++ b/htdocs/manage/moodthemes.bml Fri Jun 25 20:41:23 2010 +0800
@@ -310,10 +310,9 @@ body<=
if ($POST{'isnew'} == 1) {
return LJ::bad_input($ML{'.error.nonamegiven'})
unless LJ::trim($POST{'name'});
- my $dbh = LJ::get_db_writer();
- my $i = $dbh->do("INSERT INTO moodthemes (ownerid, name,
is_public) VALUES (?, ?, 'N')", undef, $u->{'userid'}, $POST{'name'});
- return "<?h1 $ML{'Error'} h1?><?p
$ML{'.error.cantcreatetheme'} p?>" unless $i;
- $themeid = $dbh->{'mysql_insertid'};
+ my $err;
+ $themeid = $u->create_moodtheme( $POST{name}, '', \$err )
+ or return "<?h1 $ML{'Error'} h1?><?p $err p?>";
$info->{'name'} = $POST{'name'};
}
diff -r 92e2e6b2f18e -r c7431ec0bc18 t/console-moodthemes.t
--- a/t/console-moodthemes.t Fri Jun 25 19:05:56 2010 +0800
+++ b/t/console-moodthemes.t Fri Jun 25 20:41:23 2010 +0800
@@ -26,8 +26,8 @@ LJ::set_remote($u);
LJ::set_remote($u);
ok($run->("moodtheme_list") =~ "Your themes", "Got logged-in stuff.");
-is($run->("moodtheme_create blahblah \"my stuff\""),
- "error: Sorry, your account type doesn't let you create new mood themes");
+is($run->( "moodtheme_create blahblah \"my stuff\""), "error: " .
+ LJ::Lang::ml( '/manage/moodthemes.bml.error.cantcreatethemes' ) );
local $LJ::T_HAS_ALL_CAPS = 1;
my $resp = $run->("moodtheme_create blahblah \"my stuff\"");
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog