[Cpan-forum-commit] rev 316 - in trunk: . lib/CPAN lib/CPAN/Forum/DB

svn at pti.co.il svn at pti.co.il
Thu Aug 2 09:25:17 EEST 2007


Author: gabor
Date: 2007-08-02 09:25:17 +0300 (Thu, 02 Aug 2007)
New Revision: 316

Modified:
   trunk/
   trunk/lib/CPAN/Forum.pm
   trunk/lib/CPAN/Forum/DB/Posts.pm
Log:
hopefully fix error while submitting new post
turning submitting into plain SQL call



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4372
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
   + 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4373
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752

Modified: trunk/lib/CPAN/Forum/DB/Posts.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Posts.pm	2007-08-02 06:25:02 UTC (rev 315)
+++ trunk/lib/CPAN/Forum/DB/Posts.pm	2007-08-02 06:25:17 UTC (rev 316)
@@ -167,5 +167,27 @@
     return $self->_fetch_arrayref_of_hashes($sql, $value);
 };
 
+sub add_post {
+    my ($self, $data, $parent_post, $parent) = @_;
+    $self->add('posts', $data);
+    my $dbh = CPAN::Forum::DBI::db_Main();
+    my $post_id = $dbh->func('last_insert_rowid');
+
+    my $sql = "UPDATE posts SET thread=?";
+    my @values = (
+            ($parent_post ? $parent_post->{thread} : $post_id),
+    );
+    if ($parent_post) {
+        $sql .= ", parent=?";
+        push @values, $parent;
+    }
+    $sql .= " WHERE id=?";
+    push @values, $post_id;
+    $dbh->do($sql, undef, @values);
+    return $post_id;
+}
+
+
+
 1;
  

Modified: trunk/lib/CPAN/Forum.pm
===================================================================
--- trunk/lib/CPAN/Forum.pm	2007-08-02 06:25:02 UTC (rev 315)
+++ trunk/lib/CPAN/Forum.pm	2007-08-02 06:25:17 UTC (rev 316)
@@ -1248,25 +1248,21 @@
             );
     }
 
-    my $post_id;
     my $username = $self->session->param("username");
     my $user = CPAN::Forum::DB::Users->info_by( username => $username ); # SQL
     if (not $user) {
         return $self->internal_error("Unknown username: '$username'");
     }
-    eval {
-        my $post = CPAN::Forum::DB::Posts->create({
+
+    
+    my %data = (
             uid     => $user->{id},
-            gid     => $parent_post ? $parent_post->{gid} : $q->param("new_group_id"),
+            gid     => ($parent_post ? $parent_post->{gid} : $q->param("new_group_id")),
             subject => $q->param("new_subject"),
             text    => $new_text,
             date    => time,
-        });
-        $post->thread($parent_post ? $parent_post->{thread} : $post->id);
-        $post->parent($parent) if $parent_post;
-        $post->update;
-        $post_id = $post->id;
-    };
+    );
+    my $post_id = eval { CPAN::Forum::DB::Posts->add_post(\%data, $parent_post, $parent); }; #SQL
     if ($@) {
         #push @errors, "subject_too_long" if $@ =~ /subject_too_long/;
         if (not @errors) {



More information about the Cpan-forum-commit mailing list