[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