]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Factoids/DBCommon.pl
add debugging for getFactoid
[infobot.git] / src / Factoids / DBCommon.pl
index 709fd41b24181bc852234bb3696811da09f1fff9..6176d6115545667c6cf5399b7498f6f9e1d096dc 100644 (file)
 #####
 # Usage: &setFactInfo($faqtoid, $key, $val);
 sub setFactInfo {
-    &dbSet("factoids", 
-       { factoid_key => $_[0] },
-       { $_[1] => $_[2] }      # dbquote done in dbset!
-    );
-}   
+    &sqlSet( 'factoids', { factoid_key => $_[0] }, { $_[1] => $_[2] } );
+}
 
 #####
 # Usage: &getFactInfo($faqtoid, [$what]);
 sub getFactInfo {
-    return &dbGet("factoids", $_[1], "factoid_key=".&dbQuote($_[0]) );
+    return &sqlSelect( 'factoids', $_[1], { factoid_key => $_[0] } );
 }
 
 #####
 # Usage: &getFactoid($faqtoid);
 sub getFactoid {
-    return &getFactInfo($_[0], "factoid_value");
+    my $val = getFactInfo( $_[0], 'factoid_value' );
+    DEBUG("getFactoid: $val is_utf8:".is_utf8($val));
+    return encode_utf8($val) if is_utf8($val);
+    return $val;
 }
 
-##### 
+#####
 # Usage: &delFactoid($faqtoid);
 sub delFactoid {
     my ($faqtoid) = @_;
 
-    &dbDel("factoids", "factoid_key",$faqtoid);
+    &sqlDelete( 'factoids', { factoid_key => $faqtoid } );
     &status("DELETED $faqtoid");
+
     return 1;
 }
 
@@ -43,13 +43,13 @@ sub delFactoid {
 # Usage: &IsLocked($faqtoid);
 sub IsLocked {
     my ($faqtoid) = @_;
-    my $thisnuh   = &getFactInfo($faqtoid, "locked_by");
+    my $thisnuh = &getFactInfo( $faqtoid, 'locked_by' );
 
-    if (defined $thisnuh and $thisnuh ne "") {
-       if (!&IsHostMatch($thisnuh) and &IsFlag("o") ne "o") {
-           &performReply("cannot alter locked factoids");
-           return 1;
-       }
+    if ( defined $thisnuh and $thisnuh ne '' ) {
+        if ( !&IsHostMatch($thisnuh) and &IsFlag('o') ne 'o' ) {
+            &performReply("cannot alter locked factoids");
+            return 1;
+        }
     }
 
     return 0;
@@ -58,33 +58,33 @@ sub IsLocked {
 #####
 # Usage: &AddModified($faqtoid,$nuh);
 sub AddModified {
-    my ($faqtoid,$nuh) = @_;
-    my $modified_by = &getFactInfo($faqtoid, "modified_by");
-    my (@modifiedlist, @modified, %modified);
+    my ( $faqtoid, $nuh ) = @_;
+    my $modified_by = &getFactInfo( $faqtoid, 'modified_by' );
+    my ( @modifiedlist, @modified, %modified );
 
-    if (defined $modified_by) {
-       push(@modifiedlist, split(/\,/, $modified_by)); 
+    if ( defined $modified_by ) {
+        push( @modifiedlist, split( /\,/, $modified_by ) );
     }
-    push(@modifiedlist,$nuh);
+    push( @modifiedlist, $nuh );
 
-    foreach (reverse @modifiedlist) {
-       /^(\S+)!(\S+)@(\S+)$/;
-       my $nick = lc $1;
-       next if (exists $modified{$nick});
+    foreach ( reverse @modifiedlist ) {
+        /^(\S+)!(\S+)@(\S+)$/;
+        my $nick = lc $1;
+        next if ( exists $modified{$nick} );
 
-       $modified{$nick} = $_;
-       push(@modified,$nick);
+        $modified{$nick} = $_;
+        push( @modified, $nick );
     }
 
     undef @modifiedlist;
 
-    foreach (reverse @modified) {
-       push(@modifiedlist, $modified{$_});
+    foreach ( reverse @modified ) {
+        push( @modifiedlist, $modified{$_} );
     }
-    shift(@modifiedlist) while (scalar @modifiedlist > 3);
+    shift(@modifiedlist) while ( scalar @modifiedlist > 3 );
 
-    &setFactInfo($faqtoid,"modified_by",   join(",",@modifiedlist));
-    &setFactInfo($faqtoid,"modified_time", time());
+    &setFactInfo( $faqtoid, 'modified_by', join( ",", @modifiedlist ) );
+    &setFactInfo( $faqtoid, 'modified_time', time() );
 
     return 1;
 }
@@ -98,28 +98,29 @@ sub AddModified {
 sub CmdLock {
     my ($faqtoid) = @_;
 
-    my $thisnuh = &getFactInfo($faqtoid,"locked_by");
+    my $thisnuh = &getFactInfo( $faqtoid, 'locked_by' );
 
-    if (defined $thisnuh and $thisnuh ne "") {
-       my $locked_by = (split(/\!/,$thisnuh))[0];
-       &msg($who,"factoid \002$faqtoid\002 has already been locked by $locked_by.");
-       return 0;
+    if ( defined $thisnuh and $thisnuh ne '' ) {
+        my $locked_by = ( split( /\!/, $thisnuh ) )[0];
+        &msg( $who,
+            "factoid \002$faqtoid\002 has already been locked by $locked_by." );
+        return 0;
     }
 
-    $thisnuh ||= &getFactInfo($faqtoid,"created_by");
+    $thisnuh ||= &getFactInfo( $faqtoid, 'created_by' );
 
     # fixes bug found on 19991103.
     # code needs to be reorganised though.
-    if ($thisnuh ne "") {
-       if (!&IsHostMatch($thisnuh) && IsFlag("o") ne "o") {
-           &msg($who, "sorry, you are not allowed to lock '$faqtoid'.");
-           return 0;
-       }
+    if ( $thisnuh ne '' ) {
+        if ( !&IsHostMatch($thisnuh) && IsFlag('o') ne 'o' ) {
+            &msg( $who, "sorry, you are not allowed to lock '$faqtoid'." );
+            return 0;
+        }
     }
 
     &performReply("locking factoid \002$faqtoid\002");
-    &setFactInfo($faqtoid,"locked_by",$nuh);
-    &setFactInfo($faqtoid,"locked_time", time());
+    &setFactInfo( $faqtoid, 'locked_by',   $nuh );
+    &setFactInfo( $faqtoid, 'locked_time', time() );
 
     return 1;
 }
@@ -129,23 +130,27 @@ sub CmdLock {
 sub CmdUnLock {
     my ($faqtoid) = @_;
 
-    my $thisnuh = &getFactInfo($faqtoid,"locked_by");
+    my $thisnuh = &getFactInfo( $faqtoid, 'locked_by' );
 
-    if (!defined $thisnuh) {
-       &msg($who, "factoid \002$faqtoid\002 is not locked.");
-       return 0;
+    if ( !defined $thisnuh ) {
+        &msg( $who, "factoid \002$faqtoid\002 is not locked." );
+        return 0;
     }
 
-    if ($thisnuh ne "" and !&IsHostMatch($thisnuh) and &IsFlag("o") ne "o") {
-       &msg($who, "sorry, you are not allowed to unlock factoid '$faqtoid'.");
-       return 0;
+    if ( $thisnuh ne '' and !&IsHostMatch($thisnuh) and &IsFlag('o') ne 'o' ) {
+        &msg( $who,
+            "sorry, you are not allowed to unlock factoid '$faqtoid'." );
+        return 0;
     }
 
     &performReply("unlocking factoid \002$faqtoid\002");
-    &setFactInfo($faqtoid,"locked_by",   "");
-    &setFactInfo($faqtoid,"locked_time", "");
+    &setFactInfo( $faqtoid, 'locked_by',   '' );
+    &setFactInfo( $faqtoid, 'locked_time', '0' )
+      ;    # pgsql complains if NOT NULL set. So set 0 which is the default
 
     return 1;
 }
 
 1;
+
+# vim:ts=4:sw=4:expandtab:tw=80