[Cpan-forum-commit] rev 234 - in trunk: . lib/CPAN lib/CPAN/Forum lib/CPAN/Forum/DB lib/CPAN/Forum/RM schema templates

svn at pti.co.il svn at pti.co.il
Tue Jul 3 23:57:45 IDT 2007


Author: gabor
Date: 2007-07-03 23:57:45 +0300 (Tue, 03 Jul 2007)
New Revision: 234

Added:
   trunk/lib/CPAN/Forum/DB/Tags.pm
   trunk/lib/CPAN/Forum/RM/Tags.pm
Modified:
   trunk/
   trunk/MANIFEST
   trunk/lib/CPAN/Forum.pm
   trunk/lib/CPAN/Forum/INC.pm
   trunk/lib/CPAN/Forum/RM/Dist.pm
   trunk/schema/schema.sql
   trunk/templates/groups.tmpl
Log:
start adding code to deal with tags on CPAN::Forum but 
it is still hidden to allow moving to new server



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

Modified: trunk/MANIFEST
===================================================================
--- trunk/MANIFEST	2007-07-02 06:01:55 UTC (rev 233)
+++ trunk/MANIFEST	2007-07-03 20:57:45 UTC (rev 234)
@@ -24,6 +24,7 @@
 lib/CPAN/Forum/DB/Subscriptions_all.pm
 lib/CPAN/Forum/DB/Subscriptions_pauseid.pm
 lib/CPAN/Forum/DB/Subscriptions.pm
+lib/CPAN/Forum/DB/Tags.pm
 lib/CPAN/Forum/DB/Users.pm
 lib/CPAN/Forum/DB/Usergroups.pm
 lib/CPAN/Forum/DB/UserInGroup.pm
@@ -36,6 +37,7 @@
 lib/CPAN/Forum/RM/Other.pm
 lib/CPAN/Forum/RM/Search.pm
 lib/CPAN/Forum/RM/Subscriptions.pm
+lib/CPAN/Forum/RM/Tags.pm
 lib/CPAN/Forum/RM/UserAccounts.pm
 lib/CPAN/Forum/RM/Users.pm
 

Added: trunk/lib/CPAN/Forum/DB/Tags.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Tags.pm	                        (rev 0)
+++ trunk/lib/CPAN/Forum/DB/Tags.pm	2007-07-03 20:57:45 UTC (rev 234)
@@ -0,0 +1,61 @@
+package CPAN::Forum::DB::Tags;
+use strict;
+use warnings;
+
+use CPAN::Forum::DBI;
+
+use Carp qw();
+
+sub list_tags {
+    my ($self, $group_id) = @_;
+    my $dbh = CPAN::Forum::DBI::db_Main();
+    #my $sth = $dbh->prepare("SELECT tags.name name FROM tags_on_groups, tags 
+    #               WHERE tags_on_groups.tag_id=tags.id AND tags_on_groups.group_id=?");
+
+    #$sth->execute($group_id);
+    #my $ar = $sth->fetchrow_arrayref;
+    #my @names = map { {name => $_->[0]} } @$ar;
+    #my @names = map { $_->[0] } @$ar;
+    #return @names;
+    return qw(qqrq perl);
+}
+
+sub attach_tag {
+    my ($self, $group_id, $text) = @_;
+    Carp::croak("Invalid tag") if not defined $text or $text !~ /^\w+$/;
+
+    $text = lc $text;
+
+    my $tag_id = $self->_get_tag_id($text);
+    if (not $tag_id) {
+        $tag_id = $self->_add_tag($text);
+    }
+    return if not $tag_id;
+
+    my $dbh = CPAN::Forum::DBI::db_Main();
+    return $dbh->do("INSERT INTO tags_on_groups (tag_id, group_id) VALUES (?, ?)",
+            undef, $tag_id, $group_id);
+}
+
+# assume valid text
+sub _add_tag {
+    my ($self, $text) = @_;
+    
+    my $dbh = CPAN::Forum::DBI::db_Main();
+    my $sth->do("INSERT INTO tags (name) VALUES (?)", undef, $text);
+    return $self->_get_tag_id($text);
+}
+
+# assume valid text
+sub _get_tag_id {
+    my ($self, $text) = @_;
+
+    my $dbh = CPAN::Forum::DBI::db_Main();
+    my $sth = $dbh->prepare("SELECT id FROM tags WHERE name=?");
+    $sth->execute($text);
+    my ($id) = $sth->fetchrow_array;
+    $sth->finish;
+    return $id;
+}
+
+1;

Modified: trunk/lib/CPAN/Forum/INC.pm
===================================================================
--- trunk/lib/CPAN/Forum/INC.pm	2007-07-02 06:01:55 UTC (rev 233)
+++ trunk/lib/CPAN/Forum/INC.pm	2007-07-03 20:57:45 UTC (rev 234)
@@ -18,6 +18,8 @@
 use CPAN::Forum::DB::UserInGroup;
 use CPAN::Forum::DB::Users;
 
+#use CPAN::Forum::DB::Tags;
 
+
 1;
 

Modified: trunk/lib/CPAN/Forum/RM/Dist.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Dist.pm	2007-07-02 06:01:55 UTC (rev 233)
+++ trunk/lib/CPAN/Forum/RM/Dist.pm	2007-07-03 20:57:45 UTC (rev 234)
@@ -62,6 +62,10 @@
     if ($gr and  $gr->pauseid and $gr->pauseid->pauseid) {
         $t->param(pauseid_name => $gr->pauseid->pauseid);
     }
+
+    #my (@tags) = CPAN::Forum::DB::Tags->list_tags($gid);
+    #$t->param(tags => join ", ", @tags);
+
     return $t->output;
 }
 

Added: trunk/lib/CPAN/Forum/RM/Tags.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Tags.pm	                        (rev 0)
+++ trunk/lib/CPAN/Forum/RM/Tags.pm	2007-07-03 20:57:45 UTC (rev 234)
@@ -0,0 +1,7 @@
+package CPAN::Forum::RM::Search;
+use strict;
+use warnings;
+
+1;
+
+

Modified: trunk/lib/CPAN/Forum.pm
===================================================================
--- trunk/lib/CPAN/Forum.pm	2007-07-02 06:01:55 UTC (rev 233)
+++ trunk/lib/CPAN/Forum.pm	2007-07-03 20:57:45 UTC (rev 234)
@@ -586,6 +586,8 @@
     selfconfig              => 'CPAN::Forum::RM::UserAccounts',
     change_info             => 'CPAN::Forum::RM::UserAccounts',
     change_password         => 'CPAN::Forum::RM::UserAccounts',
+
+    tags                    => 'CPAN::Forum::RM::Tags',
 );
 
 =head2 setup

Modified: trunk/schema/schema.sql
===================================================================
--- trunk/schema/schema.sql	2007-07-02 06:01:55 UTC (rev 233)
+++ trunk/schema/schema.sql	2007-07-03 20:57:45 UTC (rev 234)
@@ -139,3 +139,20 @@
 CREATE UNIQUE INDEX groups_name ON groups (name);
 CREATE INDEX posts_thread ON posts (thread);
 CREATE INDEX posts_gid ON posts (gid);
+
+---- add tagcloud
+--- TODO unique tag_id, group_id pair
+CREATE TABLE tags (
+			id               INTEGER PRIMARY KEY auto_increment,
+			name             VARCHAR(100) UNIQUE NOT NULL
+);
+CREATE UNIQUE INDEX tags_name ON tags (name);
+CREATE TABLE tags_on_groups (
+			tag_id           INTEGER,
+            group_id         INTEGER
+			,FOREIGN KEY (tag_id) REFERENCES tags(id)
+			,FOREIGN KEY (group_id) REFERENCES groups(id)
+);
+
+
+

Modified: trunk/templates/groups.tmpl
===================================================================
--- trunk/templates/groups.tmpl	2007-07-02 06:01:55 UTC (rev 233)
+++ trunk/templates/groups.tmpl	2007-07-03 20:57:45 UTC (rev 234)
@@ -38,7 +38,19 @@
 </p>
 <TMPL_INCLUDE NAME="listing.tmpl">
 
+<!--
 <p>
+Tags: <TMPL_VAR tags><br />
+
+<form method="post" action="/update/">
+<input type="hidden" name="rm" value="tags" />
+<input type="hidden" name="group" value="<TMPL_VAR group>" />
+<input name="tag" value="<TMPL_VAR tag>" />
+<input type="submit" value="Add tag" />
+</form>
+</p>
+-->
+<p>
 Users currently monitoring this forum:
 <TMPL_LOOP users>
    <a href="/users/<TMPL_VAR username>"><TMPL_VAR username></a>, 



More information about the Cpan-forum-commit mailing list