[Cpan-forum-commit] rev 248 - in trunk: . lib/CPAN/Forum lib/CPAN/Forum/DB lib/CPAN/Forum/RM
svn at pti.co.il
svn at pti.co.il
Fri Jul 6 11:01:15 EEST 2007
Author: gabor
Date: 2007-07-06 11:01:15 +0300 (Fri, 06 Jul 2007)
New Revision: 248
Modified:
trunk/
trunk/lib/CPAN/Forum/DB/Configure.pm
trunk/lib/CPAN/Forum/DBI.pm
trunk/lib/CPAN/Forum/RM/Admin.pm
Log:
eliminate all the Class::DBI usage from DB::Configure
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4131
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
+ 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4132
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
Modified: trunk/lib/CPAN/Forum/DB/Configure.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Configure.pm 2007-07-06 08:00:57 UTC (rev 247)
+++ trunk/lib/CPAN/Forum/DB/Configure.pm 2007-07-06 08:01:15 UTC (rev 248)
@@ -3,8 +3,8 @@
use warnings;
use Carp;
use base 'CPAN::Forum::DBI';
-__PACKAGE__->table('configure');
-__PACKAGE__->columns(All => qw/field value/);
+#__PACKAGE__->table('configure');
+#__PACKAGE__->columns(All => qw/field value/);
my %default = (
flood_control_time_limit => 10,
@@ -12,14 +12,51 @@
sub param {
- my ($self, $field, $value) = @_;
+ my ($self, $field) = @_;
- my ($handle) = CPAN::Forum::DB::Configure->search({field => $field});
- return $handle->value if $handle;
+ my $value = $self->get_value($field);
+ return $value if defined $value;
return $default{$field} if defined $default{$field};
return;
}
+sub set_field_value {
+ my ($self, $field, $value) = @_;
+ return if not defined $field;
+ $value = '' if not defined $value;
+
+ my $dbh = CPAN::Forum::DBI::db_Main();
+ my $hr = $self->_fetch_single_hashref("SELECT field, value FROM configure WHERE field=?", $field);
+ if ($hr) {
+ $dbh->do("UPDATE configure SET value=? WHERE field=?", undef, $value, $field);
+ } else {
+ $dbh->do("INSERT INTO configure (field, value) VALUES(?, ?)", undef, $field, $value);
+ }
+ return;
+}
+
+sub get_value {
+ my ($self, $field) = @_;
+ return if not $field;
+
+ my $sql = "SELECT value FROM configure WHERE field=?";
+ return $self->_fetch_single_value($sql, $field);
+}
+
+sub get_all_pairs {
+ my ($self) = @_;
+
+ my $dbh = CPAN::Forum::DBI::db_Main();
+ my $sth = $dbh->prepare("SELECT field, value FROM configure");
+ $sth->execute;
+ my %data;
+ while (my ($field, $value) = $sth->fetchrow_array) {
+ $data{ $field } = $value;
+ }
+ return \%data;
+}
+
+
1;
Modified: trunk/lib/CPAN/Forum/DBI.pm
===================================================================
--- trunk/lib/CPAN/Forum/DBI.pm 2007-07-06 08:00:57 UTC (rev 247)
+++ trunk/lib/CPAN/Forum/DBI.pm 2007-07-06 08:01:15 UTC (rev 248)
@@ -71,13 +71,22 @@
my $dbh = CPAN::Forum::DBI::db_Main();
my $sth = $dbh->prepare($sql);
$sth->execute(@args);
- my @values;
my $hr = $sth->fetchrow_hashref;
$sth->finish;
return $hr;
-
}
+sub _fetch_single_value {
+ my ($self, $sql, @args) = @_;
+ my $dbh = CPAN::Forum::DBI::db_Main();
+ my $sth = $dbh->prepare($sql);
+ $sth->execute(@args);
+ my ($value) = $sth->fetchrow_array;
+ $sth->finish;
+ return $value;
+}
+
+
1;
Modified: trunk/lib/CPAN/Forum/RM/Admin.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Admin.pm 2007-07-06 08:00:57 UTC (rev 247)
+++ trunk/lib/CPAN/Forum/RM/Admin.pm 2007-07-06 08:01:15 UTC (rev 248)
@@ -61,10 +61,7 @@
# fields that can have only one value
foreach my $field (qw(rss_size per_page from flood_control_time_limit
disable_email_notification)) {
- if (my ($conf) = CPAN::Forum::DB::Configure->find_or_create({field => $field})) {
- $conf->value($q->param($field));
- $conf->update;
- }
+ CPAN::Forum::DB::Configure->set_field_value($field, $q->param($field));
}
$self->status($q->param('status'));
@@ -81,13 +78,13 @@
if (not $self->session->param("admin")) {
return $self->internal_error("", "restricted_area");
}
- my %data;
- foreach my $c (CPAN::Forum::DB::Configure->retrieve_all()) {
- $data{$c->field} = $c->value;
- }
+
+ my $data = CPAN::Forum::DB::Configure->get_all_pairs;
+ $self->log->debug(Data::Dumper->Dump([$data], ['config']));
+
my $t = $self->load_tmpl("admin.tmpl");
$t->param("status_" . $self->status() => 1);
- $t->param(%data);
+ $t->param(%$data);
$t->output;
}
More information about the Cpan-forum-commit
mailing list