Finished some TODOs and related articles

merge-requests/2/head
Mike Koch 9 years ago
parent 4aa23af770
commit 96a0269983

@ -263,9 +263,10 @@ function do_login()
// Notify customer of closed ticket? // Notify customer of closed ticket?
if ($hesk_settings['notify_closed']) if ($hesk_settings['notify_closed'])
{ {
//TODO Change status ID to the ID which customer's replies update the status to. $closedStatusRs = hesk_dbQuery('SELECT `ID` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsDefaultStaffReplyStatus` = 1');
$closedStatus = hesk_dbFetchAssoc($closedStatusRs);
// Get list of tickets // Get list of tickets
$result = hesk_dbQuery("SELECT * FROM `".$hesk_settings['db_pfix']."tickets` WHERE `status` = '2' AND `lastchange` <= '".hesk_dbEscape($dt)."' "); $result = hesk_dbQuery("SELECT * FROM `".$hesk_settings['db_pfix']."tickets` WHERE `status` = ".$closedStatus['ID']." AND `lastchange` <= '".hesk_dbEscape($dt)."' ");
if (hesk_dbNumRows($result) > 0) if (hesk_dbNumRows($result) > 0)
{ {
global $ticket; global $ticket;

@ -113,6 +113,7 @@ function hesk_kb_header($kb_link, $catid=1)
global $hesk_settings, $hesklang, $can_man_kb; global $hesk_settings, $hesklang, $can_man_kb;
/* Print admin navigation */ /* Print admin navigation */
require_once(HESK_PATH . 'inc/headerAdmin.inc.php');
require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
?> ?>
@ -152,8 +153,6 @@ function hesk_kb_search($query)
define('HESK_NO_ROBOTS',1); define('HESK_NO_ROBOTS',1);
/* Print header */
require_once(HESK_PATH . 'inc/headerAdmin.inc.php');
hesk_kb_header($hesk_settings['kb_link']); hesk_kb_header($hesk_settings['kb_link']);
$res = hesk_dbQuery('SELECT t1.`id`, t1.`subject`, LEFT(`t1`.`content`, '.max(200, $hesk_settings['kb_substrart'] * 2).') AS `content`, t1.`rating` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'kb_articles` AS t1 LEFT JOIN `'.hesk_dbEscape($hesk_settings['db_pfix']).'kb_categories` AS t2 ON t1.`catid` = t2.`id` '." WHERE t1.`type` IN ('0','1') AND MATCH(`subject`,`content`,`keywords`) AGAINST ('".hesk_dbEscape($query)."') LIMIT ".intval($hesk_settings['kb_search_limit'])); $res = hesk_dbQuery('SELECT t1.`id`, t1.`subject`, LEFT(`t1`.`content`, '.max(200, $hesk_settings['kb_substrart'] * 2).') AS `content`, t1.`rating` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'kb_articles` AS t1 LEFT JOIN `'.hesk_dbEscape($hesk_settings['db_pfix']).'kb_categories` AS t2 ON t1.`catid` = t2.`id` '." WHERE t1.`type` IN ('0','1') AND MATCH(`subject`,`content`,`keywords`) AGAINST ('".hesk_dbEscape($query)."') LIMIT ".intval($hesk_settings['kb_search_limit']));
@ -232,7 +231,6 @@ function hesk_show_kb_article($artid)
// Print header // Print header
$hesk_settings['tmp_title'] = $article['subject']; $hesk_settings['tmp_title'] = $article['subject'];
require_once(HESK_PATH . 'inc/headerAdmin.inc.php');
hesk_kb_header($hesk_settings['kb_link'], $article['catid']); hesk_kb_header($hesk_settings['kb_link'], $article['catid']);
// Update views by 1 // Update views by 1
@ -258,50 +256,6 @@ function hesk_show_kb_article($artid)
echo '</p>'; echo '</p>';
} }
// TODO Check how this looks
// Related articles
if ($hesk_settings['kb_related'])
{
require(HESK_PATH . 'inc/mail/email_parser.php');
$query = hesk_dbEscape( $article['subject'] . ' ' . convert_html_to_text($article['content']) );
// Get relevant articles from the database
$res = hesk_dbQuery("SELECT `id`, `subject`, MATCH(`subject`,`content`,`keywords`) AGAINST ('{$query}') AS `score` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` WHERE `type` IN ('0','1') AND MATCH(`subject`,`content`,`keywords`) AGAINST ('{$query}') LIMIT ".intval($hesk_settings['kb_related']+1));
// Array with related articles
$related_articles = array();
while ($related = hesk_dbFetchAssoc($res))
{
// Get base match score from the first (this) article
if ( ! isset($base_score) )
{
$base_score = $related['score'];
continue;
}
// Stop when articles reach less than 10% of base score
if ($related['score'] / $base_score < 0.10)
{
break;
}
// This is a valid related article
$related_articles[$related['id']] = $related['subject'];
}
// Print related articles if we have any valid matches
if ( count($related_articles) )
{
echo '<fieldset><legend>'.$hesklang['relart'].'</legend>';
foreach ($related_articles as $id => $subject)
{
echo '<img src="'.HESK_PATH.'img/article_text.png" width="16" height="16" border="0" alt="" style="vertical-align:middle;padding:2px;" /> <a href="knowledgebase_private.php?article='.$id.'">'.$subject.'</a><br />';
}
echo '</fieldset>';
}
}
if ($article['catid']==1) if ($article['catid']==1)
@ -314,26 +268,81 @@ function hesk_show_kb_article($artid)
} }
?> ?>
<br><br> <br><br>
<h4><?php echo $hesklang['ad']; ?></h4> <div class="row">
<div class="footerWithBorder blankSpace"></div> <?php
<table border="0"> $showRelated = false;
<tr> $column = 'col-md-12';
<td><?php echo $hesklang['aid']; ?>: </td> require(HESK_PATH . 'inc/mail/email_parser.php');
<td><?php echo $article['id']; ?></td>
</tr> $query = hesk_dbEscape( $article['subject'] . ' ' . convert_html_to_text($article['content']) );
<tr>
<td><?php echo $hesklang['category']; ?>: </td> // Get relevant articles from the database
<td><a href="<?php echo $link; ?>"><?php echo $article['cat_name']; ?></a></td> $res = hesk_dbQuery("SELECT `id`, `subject`, MATCH(`subject`,`content`,`keywords`) AGAINST ('{$query}') AS `score` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` WHERE `type` IN ('0','1') AND MATCH(`subject`,`content`,`keywords`) AGAINST ('{$query}') LIMIT ".intval($hesk_settings['kb_related']+1));
</tr>
<tr> // Array with related articles
<td><?php echo $hesklang['dta']; ?>: </td> $related_articles = array();
<td><?php echo hesk_date($article['dt'], true); ?></td>
</tr> while ($related = hesk_dbFetchAssoc($res))
<tr> {
<td><?php echo $hesklang['views']; ?>: </td> // Get base match score from the first (this) article
<td><?php echo (isset($_GET['rated']) ? $article['views'] : $article['views']+1); ?></td> if ( ! isset($base_score) )
</tr> {
</table> $base_score = $related['score'];
continue;
}
// Stop when articles reach less than 10% of base score
if ($related['score'] / $base_score < 0.10)
{
break;
}
// This is a valid related article
$related_articles[$related['id']] = $related['subject'];
}
// Print related articles if we have any valid matches
if ( count($related_articles) ) {
$column = 'col-md-6';
$showRelated = true;
}
?>
<div class="<?php echo $column; ?> col-sm-12">
<h4><?php echo $hesklang['ad']; ?></h4>
<div class="footerWithBorder blankSpace"></div>
<table border="0">
<tr>
<td><?php echo $hesklang['aid']; ?>: </td>
<td><?php echo $article['id']; ?></td>
</tr>
<tr>
<td><?php echo $hesklang['category']; ?>: </td>
<td><a href="<?php echo $link; ?>"><?php echo $article['cat_name']; ?></a></td>
</tr>
<tr>
<td><?php echo $hesklang['dta']; ?>: </td>
<td><?php echo hesk_date($article['dt'], true); ?></td>
</tr>
<tr>
<td><?php echo $hesklang['views']; ?>: </td>
<td><?php echo (isset($_GET['rated']) ? $article['views'] : $article['views']+1); ?></td>
</tr>
</table>
</div>
<?php if ($showRelated) { ?>
<div class="col-md-6 col-sm-12">
<h4><?php echo $hesklang['relart']; ?></h4>
<div class="footerWithBorder blankSpace"></div>
<?php
// Related articles
foreach ($related_articles as $id => $subject)
{
echo '<span class="glyphicon glyphicon-file" style="font-size: 16px;"></span> <a href="knowledgebase_private.php?article='.$id.'">'.$subject.'</a><br />';
}
?>
</div>
<?php } ?>
</div>
<?php <?php
if (!isset($_GET['back'])) if (!isset($_GET['back']))
@ -358,7 +367,6 @@ function hesk_show_kb_category($catid, $is_search = 0) {
if ($is_search == 0) if ($is_search == 0)
{ {
/* Print header */ /* Print header */
require_once(HESK_PATH . 'inc/headerAdmin.inc.php');
hesk_kb_header($hesk_settings['kb_link'], $catid); hesk_kb_header($hesk_settings['kb_link'], $catid);
if ($catid == 1) if ($catid == 1)
@ -567,4 +575,4 @@ function show_subnav($hide='', $catid=1)
<?php <?php
} // End show_subnav() } // End show_subnav()
?> ?>

@ -82,9 +82,17 @@ else
} }
$ticket = hesk_dbFetchAssoc($result); $ticket = hesk_dbFetchAssoc($result);
//TODO Update this to look at any "closed" status; not just ID 3 $closedStatusRS = hesk_dbQuery('SELECT `ID` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsClosed` = 1');
$ticketIsOpen = true;
while ($row = hesk_dbFetchAssoc($closedStatusRS))
{
if ($ticket['status'] == $row['ID'])
{
$ticketIsOpen = false;
}
}
// Notify customer, but only if ticket is not already closed // Notify customer, but only if ticket is not already closed
if ($ticket['status'] != 3) if ($ticketIsOpen)
{ {
require(HESK_PATH . 'inc/email_functions.inc.php'); require(HESK_PATH . 'inc/email_functions.inc.php');

@ -309,6 +309,8 @@ function hesk_show_kb_article($artid)
// Related articles // Related articles
if ($hesk_settings['kb_related']) if ($hesk_settings['kb_related'])
{ {
$showRelated = false;
$column = 'col-md-12';
require(HESK_PATH . 'inc/mail/email_parser.php'); require(HESK_PATH . 'inc/mail/email_parser.php');
$query = hesk_dbEscape( $article['subject'] . ' ' . convert_html_to_text($article['content']) ); $query = hesk_dbEscape( $article['subject'] . ' ' . convert_html_to_text($article['content']) );
@ -346,12 +348,8 @@ function hesk_show_kb_article($artid)
// Print related articles if we have any valid matches // Print related articles if we have any valid matches
if ( count($related_articles) ) if ( count($related_articles) )
{ {
echo '<fieldset><legend>'.$hesklang['relart'].'</legend>'; $column = 'col-md-6';
foreach ($related_articles as $id => $subject) $showRelated = true;
{
echo '<img src="img/article_text.png" width="16" height="16" border="0" alt="" style="vertical-align:middle;padding:2px;" /> <a href="knowledgebase.php?article='.$id.'">'.$subject.'</a><br />';
}
echo '</fieldset>';
} }
} }
@ -365,37 +363,54 @@ function hesk_show_kb_article($artid)
} }
?> ?>
<div class="row">
<h4 class="text-left"><?php echo $hesklang['ad']; ?></h4> <div class="<?php echo $column; ?> col-sm-12">
<div class="text-left"> <h4 class="text-left"><?php echo $hesklang['ad']; ?></h4>
<p><?php echo $hesklang['aid']; ?>: <?php echo $article['id']; ?></p> <div class="text-left">
<p><?php echo $hesklang['category']; ?>: <a href="<?php echo $link; ?>"><?php echo $article['cat_name']; ?></a></p> <p><?php echo $hesklang['aid']; ?>: <?php echo $article['id']; ?></p>
<p><?php echo $hesklang['category']; ?>: <a href="<?php echo $link; ?>"><?php echo $article['cat_name']; ?></a></p>
<?php
if ($hesk_settings['kb_date']) <?php
{ if ($hesk_settings['kb_date'])
?> {
<p><?php echo $hesklang['dta']; ?>: <?php echo hesk_date($article['dt'], true); ?></p> ?>
<?php <p><?php echo $hesklang['dta']; ?>: <?php echo hesk_date($article['dt'], true); ?></p>
} <?php
}
if ($hesk_settings['kb_views'])
{ if ($hesk_settings['kb_views'])
?> {
<p><?php echo $hesklang['views']; ?>: <?php echo (isset($_GET['rated']) ? $article['views'] : $article['views']+1); ?></p> ?>
<?php <p><?php echo $hesklang['views']; ?>: <?php echo (isset($_GET['rated']) ? $article['views'] : $article['views']+1); ?></p>
} <?php
}
if ($hesk_settings['kb_rating'])
{ if ($hesk_settings['kb_rating'])
$alt = $article['rating'] ? sprintf($hesklang['kb_rated'], sprintf("%01.1f", $article['rating'])) : $hesklang['kb_not_rated']; {
echo ' $alt = $article['rating'] ? sprintf($hesklang['kb_rated'], sprintf("%01.1f", $article['rating'])) : $hesklang['kb_not_rated'];
echo '
<p>'.$hesklang['rating'].' ('.$hesklang['votes'].'): <img src="img/star_'.(hesk_round_to_half($article['rating'])*10).'.png" width="85" height="16" alt="'.$alt.'" title="'.$alt.'" border="0" style="vertical-align:text-bottom" /> ('.$article['votes'].')</p> <p>'.$hesklang['rating'].' ('.$hesklang['votes'].'): <img src="img/star_'.(hesk_round_to_half($article['rating'])*10).'.png" width="85" height="16" alt="'.$alt.'" title="'.$alt.'" border="0" style="vertical-align:text-bottom" /> ('.$article['votes'].')</p>
'; ';
} }
?> ?>
</div>
</div>
<?php if ($showRelated) { ?>
<div class="col-md-6 col-sm-12">
<h4 class="text-left"><?php echo $hesklang['relart']; ?></h4>
<div class="text-left">
<?php
foreach ($related_articles as $id => $subject)
{
echo '<span class="glyphicon glyphicon-file" style="font-size: 16px"></span> <a href="knowledgebase.php?article='.$id.'">'.$subject.'</a><br />';
}
?>
</div>
</div>
<?php } ?>
</div> </div>
<?php <?php
if (!isset($_GET['suggest'])) if (!isset($_GET['suggest']))
{ {

Loading…
Cancel
Save