[otrs-cvs] FAQ/Kernel/System FAQ.pm,1.163,1.164

"CVS commits notifications of OTRS.org" <[email protected]>
Newsgroups gmane.comp.otrs.cvs
Message-ID <[email protected]>
Comments:
Update of /home/cvs/FAQ/Kernel/System
In directory lancelot:/tmp/cvs-serv28942/Kernel/System

Modified Files:
	FAQ.pm 
Log Message:
Fixed bug# 7806 - Missing FAQ-Item valid/invalid column in the database.

Author: ub

Index: FAQ.pm
===================================================================
RCS file: /home/cvs/FAQ/Kernel/System/FAQ.pm,v
retrieving revision 1.163
retrieving revision 1.164
diff -2 -u -d -r1.163 -r1.164
--- FAQ.pm	6 Dec 2012 21:34:28 -0000	1.163
+++ FAQ.pm	2 Jan 2013 11:08:30 -0000	1.164
@@ -1,5 +1,5 @@
 # --
 # Kernel/System/FAQ.pm - all faq functions
-# Copyright (C) 2001-2012 OTRS AG, http://otrs.org/
+# Copyright (C) 2001-2013 OTRS AG, http://otrs.org/
 # --
 # $Id$
@@ -22,4 +22,5 @@
 use Kernel::System::LinkObject;
 use Kernel::System::Ticket;
+use Kernel::System::Valid;
 use Kernel::System::Web::UploadCache;
 
@@ -106,4 +107,5 @@
     $Self->{TicketObject}        = Kernel::System::Ticket->new( %{$Self} );
     $Self->{LinkObject}          = Kernel::System::LinkObject->new( %{$Self} );
+    $Self->{ValidObject}         = Kernel::System::Valid->new( %{$Self} );
     $Self->{UploadCacheObject}   = Kernel::System::Web::UploadCache->new( %{$Self} );
 
@@ -146,4 +148,6 @@
         Title             => 'Article Title',
         Approved          => 1,                              # or 0
+        ValidID           => 1,
+        Valid             => 'valid',
         Keywords          => 'KeyWord1 KeyWord2',
         Votes             => 0,                              # number of votes
@@ -188,4 +192,6 @@
         Field6            => 'Comments',
         Approved          => 1,                              # or 0
+        ValidID           => 1,
+        Valid             => 'valid',
         Keywords          => 'KeyWord1 KeyWord2',
         Votes             => 0,                              # number of votes
@@ -247,5 +253,5 @@
                 SELECT i.f_name, i.f_language_id, i.f_subject, i.created, i.created_by, i.changed,
                     i.changed_by, i.category_id, i.state_id, c.name, s.name, l.name, i.f_keywords,
-                    i.approved,i.f_number, st.id, st.name
+                    i.approved, i.valid_id, i.f_number, st.id, st.name
                 FROM faq_item i, faq_category c, faq_state s, faq_state_type st, faq_language l
                 WHERE i.state_id = s.id
@@ -282,7 +288,8 @@
                 Keywords      => $Row[12],
                 Approved      => $Row[13],
-                Number        => $Row[14],
-                StateTypeID   => $Row[15],
-                StateTypeName => $Row[16],
+                ValidID       => $Row[14],
+                Number        => $Row[15],
+                StateTypeID   => $Row[16],
+                StateTypeName => $Row[17],
             );
         }
@@ -337,4 +344,8 @@
         $Data{CategoryName} = $CategoryTree->{ $Data{CategoryID} };
 
+        # get valid list
+        my %ValidList = $Self->{ValidObject}->ValidList();
+        $Data{Valid} = $ValidList{ $Data{ValidID} };
+
         # cache result
         $Self->{CacheObject}->Set(
@@ -384,5 +395,5 @@
 
     # check for valid field name
-    if ( $Param{Field} !~ m{\A Field [1-6] \z}msxi ) {
+    if ( $Param{Field} !~ m{ \A Field [1-6] \z }msxi ) {
         $Self->{LogObject}->Log(
             Priority => 'error',
@@ -535,4 +546,5 @@
         Field6     => 'Comment...',     # (optional)
         Approved   => 1,                # (optional)
+        ValidID    => 1,
         UserID     => 1,
     );
@@ -558,4 +570,13 @@
     }
 
+    # set default value for ValidID
+    if ( !defined $Param{ValidID} ) {
+
+        # get the valid ids
+        my @ValidIDs = $Self->{ValidObject}->ValidIDsGet();
+
+        $Param{ValidID} = $ValidIDs[0];
+    }
+
     # check name
     if ( !$Param{Name} ) {
@@ -596,10 +617,10 @@
         SQL => 'INSERT INTO faq_item '
             . '(f_number, f_name, f_language_id, f_subject, '
-            . 'category_id, state_id, f_keywords, approved, '
+            . 'category_id, state_id, f_keywords, approved, valid_id, '
             . 'f_field1, f_field2, f_field3, f_field4, f_field5, f_field6, '
             . 'created, created_by, changed, changed_by)'
             . 'VALUES ('
             . '?, ?, ?, ?, '
-            . '?, ?, ?, ?, '
+            . '?, ?, ?, ?, ?, '
             . '?, ?, ?, ?, ?, ?, '
             . 'current_timestamp, ?, current_timestamp, ?)',
@@ -607,7 +628,8 @@
             \$Param{Number},     \$Param{Name},    \$Param{LanguageID}, \$Param{Title},
             \$Param{CategoryID}, \$Param{StateID}, \$Param{Keywords},   \$Param{Approved},
-            \$Param{Field1},     \$Param{Field2},  \$Param{Field3},
-            \$Param{Field4},     \$Param{Field5},  \$Param{Field6},
-            \$Param{UserID},     \$Param{UserID},
+            \$Param{ValidID},
+            \$Param{Field1}, \$Param{Field2}, \$Param{Field3},
+            \$Param{Field4}, \$Param{Field5}, \$Param{Field6},
+            \$Param{UserID}, \$Param{UserID},
         ],
     );
@@ -621,4 +643,5 @@
         . 'AND state_id = ? '
         . 'AND approved = ? '
+        . 'AND valid_id = ? '
         . 'AND created_by = ? '
         . 'AND changed_by = ? ';
@@ -656,4 +679,5 @@
             \$Param{StateID},
             \$Param{Approved},
+            \$Param{ValidID},
             \$Param{UserID},
             \$Param{UserID},
@@ -719,4 +743,5 @@
         LanguageID  => 1,
         Approved    => 1,
+        ValidID     => 1,
         Title       => 'Some Text',
         Field1      => 'Problem...',
@@ -746,23 +771,26 @@
     }
 
-    # check name
-    if ( !$Param{Name} ) {
-
-        # get faq data
-        my %FAQData = $Self->FAQGet(
-            ItemID     => $Param{ItemID},
-            ItemFields => 0,
-            UserID     => $Param{UserID},
-        );
+    # get faq data
+    my %FAQData = $Self->FAQGet(
+        ItemID     => $Param{ItemID},
+        ItemFields => 0,
+        UserID     => $Param{UserID},
+    );
 
-        # get the faq name
+    # if no name was given use old name from FAQ
+    if ( !$Param{Name} ) {
         $Param{Name} = $FAQData{Name};
     }
 
+    # set default value for ValidID
+    if ( !defined $Param{ValidID} ) {
+        $Param{ValidID} = $FAQData{ValidID};
+    }
+
     return if !$Self->{DBObject}->Do(
         SQL => 'UPDATE faq_item SET '
             . 'f_name = ?, f_language_id = ?, '
             . 'f_subject = ?, category_id = ?, '
-            . 'state_id = ?, f_keywords = ?, '
+            . 'state_id = ?, f_keywords = ?, valid_id = ?, '
             . 'f_field1 = ?, f_field2 = ?, '
             . 'f_field3 = ?, f_field4 = ?, '
@@ -774,5 +802,5 @@
             \$Param{Name},    \$Param{LanguageID},
             \$Param{Title},   \$Param{CategoryID},
-            \$Param{StateID}, \$Param{Keywords},
+            \$Param{StateID}, \$Param{Keywords}, \$Param{ValidID},
             \$Param{Field1},  \$Param{Field2},
             \$Param{Field3},  \$Param{Field4},
@@ -1169,5 +1197,5 @@
 =item FAQCount()
 
-count the number of articles for a defined category
+Count the number of articles for a defined category. Only valid FAQ articles will be counted.
 
     my $ArticleCount = $FAQObject->FAQCount(
@@ -1200,7 +1228,11 @@
     my $CategoryIDString = join ', ', @{ $Param{CategoryIDs} };
 
+    # build valid id string
+    my $ValidIDsString = join ', ', $Self->{ValidObject}->ValidIDsGet();
+
     my $SQL = 'SELECT COUNT(*) '
         . 'FROM faq_item i, faq_state s '
         . "WHERE i.category_id IN ($CategoryIDString) "
+        . "AND i.valid_id IN ($ValidIDsString) "
         . 'AND i.state_id = s.id';
 
@@ -1801,7 +1833,9 @@
 
     # build sql
-    my $SQL = 'SELECT id, parent_id, name FROM faq_category ';
+    my $SQL = 'SELECT id, parent_id, name FROM faq_category';
     if ($Valid) {
-        $SQL .= 'WHERE valid_id = 1';
+
+        # get the valid ids
+        $SQL .= ' WHERE valid_id IN (' . join ', ', $Self->{ValidObject}->ValidIDsGet() . ')';
     }
 
@@ -1856,5 +1890,9 @@
 
     # sql
-    my $SQL = "SELECT id FROM faq_category WHERE valid_id = 1 ";
+    my $SQL = 'SELECT id'
+        . ' FROM faq_category'
+        . ' WHERE valid_id IN ('
+        . join ', ', $Self->{ValidObject}->ValidIDsGet()
+        . ')';
     my $Ext = '';
 
@@ -2388,5 +2426,9 @@
 
     # build SQL
-    my $SQL = 'SELECT COUNT(*) FROM faq_category WHERE valid_id = 1';
+    my $SQL = 'SELECT COUNT(*)'
+        . ' FROM faq_category'
+        . ' WHERE valid_id IN ('
+        . join ', ', $Self->{ValidObject}->ValidIDsGet()
+        . ')';
 
     # parent ids are given
@@ -2468,5 +2510,5 @@
     # add where clause for valid categories
     if ($Valid) {
-        $SQL .= ' WHERE valid_id = 1';
+        $SQL .= ' WHERE valid_id IN (' . join ', ', $Self->{ValidObject}->ValidIDsGet() . ')';
     }
 
@@ -3413,8 +3455,9 @@
         LanguageIDs => [ 4, 5, 6 ],                                   # (optional)
         CategoryIDs => [ 7, 8, 9 ],                                   # (optional)
+        ValidIDs    => [ 1, 2, 3 ],                                   # (optional) (default 1)
 
         OrderBy => [ 'FAQID', 'Title' ],                              # (optional)
         # default: [ 'FAQID' ],
-        # (FAQID, Number, Title, Language, Category, Created,
+        # (FAQID, Number, Title, Language, Category, Valid, Created,
         # Changed, State, Votes, Result)
 
@@ -3492,4 +3535,5 @@
         Language => 'i.f_language_id',
         Category => 'i.category_id',
+        Valid    => 'i.valid_id',
         Created  => 'i.created',
         Changed  => 'i.changed',
@@ -3700,4 +3744,30 @@
     }
 
+    # set default value for ValidIDs (only search for valid FAQs)
+    if ( !defined $Param{ValidIDs} ) {
+
+        # get the valid ids
+        my @ValidIDs = $Self->{ValidObject}->ValidIDsGet();
+
+        $Param{ValidIDs} = \@ValidIDs;
+    }
+
+    # search for ValidIDs
+    if ( $Param{ValidIDs} && ref $Param{ValidIDs} eq 'ARRAY' && @{ $Param{ValidIDs} } ) {
+
+        # integer quote the ValidIDs
+        for my $ValidID ( @{ $Param{ValidIDs} } ) {
+            $ValidID = $Self->{DBObject}->Quote( $ValidID, 'Integer' );
+        }
+
+        # create string
+        my $InString = join ', ', @{ $Param{ValidIDs} };
+
+        if ($Ext) {
+            $Ext .= ' AND';
+        }
+        $Ext .= ' i.valid_id IN (' . $InString . ')';
+    }
+
     # search for states
     if ( $Param{States} && ref $Param{States} eq 'HASH' && %{ $Param{States} } ) {
@@ -4506,4 +4576,7 @@
     else {
 
+        # build valid id string
+        my $ValidIDsString = join ', ', $Self->{ValidObject}->ValidIDsGet();
+
         my $SQL = 'SELECT faq_item.id, faq_item.category_id '
             . 'FROM faq_item, faq_state_type, faq_state '
@@ -4511,5 +4584,6 @@
             . 'AND faq_state.type_id = faq_state_type.id '
             . "AND faq_state_type.name != 'internal' "
-            . 'AND approved = 1';
+            . "AND faq_item.valid_id IN ($ValidIDsString) "
+            . 'AND faq_item.approved = 1';
 
         return if !$Self->{DBObject}->Prepare(
@@ -4597,4 +4671,7 @@
     my @AllowedCategoryIDs;
 
+    # build valid id string
+    my $ValidIDsString = join ', ', $Self->{ValidObject}->ValidIDsGet();
+
     for my $CategoryID (@CategoryIDs) {
 
@@ -4616,8 +4693,9 @@
             . 'FROM faq_item, faq_state_type, faq_state '
             . 'WHERE faq_item.category_id = ? '
+            . "AND faq_item.valid_id IN ($ValidIDsString) "
             . 'AND faq_state.id = faq_item.state_id '
             . 'AND faq_state.type_id = faq_state_type.id '
             . "AND faq_state_type.name = 'public' "
-            . 'AND approved = 1';
+            . 'AND faq_item.approved = 1';
 
         ID:
@@ -4724,5 +4802,5 @@
 =item FAQTop10Get()
 
-returns an array with the top 10 faq article ids
+Returns an array with the top 10 faq article ids.
 
     my $Top10IDsRef = $FAQObject->FAQTop10Get(
@@ -4804,4 +4882,7 @@
     }
 
+    # build valid id string
+    my $ValidIDsString = join ', ', $Self->{ValidObject}->ValidIDsGet();
+
     # prepare SQL
     my @Bind;
@@ -4810,4 +4891,5 @@
         . 'WHERE faq_log.item_id = faq_item.id '
         . 'AND faq_item.state_id = faq_state.id '
+        . "AND faq_item.valid_id IN ($ValidIDsString) "
         . 'AND faq_state.type_id = faq_state_type.id ';
 
@@ -4829,5 +4911,5 @@
 
         # only show approved articles
-        $SQL .= 'AND approved = 1 ';
+        $SQL .= 'AND faq_item.approved = 1 ';
 
         # only show the public articles
@@ -5007,5 +5089,5 @@
 
                 # add category
-                $SubCategories{$CategoryID} = $Param{Categories}->{$ParentID}{$CategoryID};
+                $SubCategories{$CategoryID} = $Param{Categories}->{$ParentID}->{$CategoryID};
 
                 # add empty hash if category has no subcategories
---------------------------------------------------------------------
OTRS mailing list: cvs-log - Webpage: http://otrs.org/
Archive: http://lists.otrs.org/pipermail/cvs-log
To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/cvs-log
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.