2 # DBStubs.pl: DB independent (I hope, heh) factoid support
4 # Version: v0.6d (20000223)
11 # Usage: &setFactInfo($faqtoid, $key, $val);
13 &sqlSet( 'factoids', { factoid_key => $_[0] }, { $_[1] => $_[2] } );
17 # Usage: &getFactInfo($faqtoid, [$what]);
19 return &sqlSelect( 'factoids', $_[1], { factoid_key => $_[0] } );
23 # Usage: &getFactoid($faqtoid);
25 my $val = getFactInfo( $_[0], 'factoid_value' );
26 DEBUG("getFactoid: $val is_utf8:".is_utf8($val));
27 return encode_utf8($val) if is_utf8($val);
32 # Usage: &delFactoid($faqtoid);
36 &sqlDelete( 'factoids', { factoid_key => $faqtoid } );
37 &status("DELETED $faqtoid");
43 # Usage: &IsLocked($faqtoid);
46 my $thisnuh = &getFactInfo( $faqtoid, 'locked_by' );
48 if ( defined $thisnuh and $thisnuh ne '' ) {
49 if ( !&IsHostMatch($thisnuh) and &IsFlag('o') ne 'o' ) {
50 &performReply("cannot alter locked factoids");
59 # Usage: &AddModified($faqtoid,$nuh);
61 my ( $faqtoid, $nuh ) = @_;
62 my $modified_by = &getFactInfo( $faqtoid, 'modified_by' );
63 my ( @modifiedlist, @modified, %modified );
65 if ( defined $modified_by ) {
66 push( @modifiedlist, split( /\,/, $modified_by ) );
68 push( @modifiedlist, $nuh );
70 foreach ( reverse @modifiedlist ) {
71 /^(\S+)!(\S+)@(\S+)$/;
73 next if ( exists $modified{$nick} );
75 $modified{$nick} = $_;
76 push( @modified, $nick );
81 foreach ( reverse @modified ) {
82 push( @modifiedlist, $modified{$_} );
84 shift(@modifiedlist) while ( scalar @modifiedlist > 3 );
86 &setFactInfo( $faqtoid, 'modified_by', join( ",", @modifiedlist ) );
87 &setFactInfo( $faqtoid, 'modified_time', time() );
93 ### Commands which use the fundamental functions... Helpers?
97 # Usage: &CmdLock($function,$faqtoid);
101 my $thisnuh = &getFactInfo( $faqtoid, 'locked_by' );
103 if ( defined $thisnuh and $thisnuh ne '' ) {
104 my $locked_by = ( split( /\!/, $thisnuh ) )[0];
106 "factoid \002$faqtoid\002 has already been locked by $locked_by." );
110 $thisnuh ||= &getFactInfo( $faqtoid, 'created_by' );
112 # fixes bug found on 19991103.
113 # code needs to be reorganised though.
114 if ( $thisnuh ne '' ) {
115 if ( !&IsHostMatch($thisnuh) && IsFlag('o') ne 'o' ) {
116 &msg( $who, "sorry, you are not allowed to lock '$faqtoid'." );
121 &performReply("locking factoid \002$faqtoid\002");
122 &setFactInfo( $faqtoid, 'locked_by', $nuh );
123 &setFactInfo( $faqtoid, 'locked_time', time() );
129 # Usage: &CmdUnLock($faqtoid);
133 my $thisnuh = &getFactInfo( $faqtoid, 'locked_by' );
135 if ( !defined $thisnuh ) {
136 &msg( $who, "factoid \002$faqtoid\002 is not locked." );
140 if ( $thisnuh ne '' and !&IsHostMatch($thisnuh) and &IsFlag('o') ne 'o' ) {
142 "sorry, you are not allowed to unlock factoid '$faqtoid'." );
146 &performReply("unlocking factoid \002$faqtoid\002");
147 &setFactInfo( $faqtoid, 'locked_by', '' );
148 &setFactInfo( $faqtoid, 'locked_time', '0' )
149 ; # pgsql complains if NOT NULL set. So set 0 which is the default
156 # vim:ts=4:sw=4:expandtab:tw=80