[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