/**
* Get a list of KB/FAQ articles
* for an authenticated user (or anonymous if allowed from config)
*
* @param $params array of options
* @param $protocol the commonication protocol used
**/
static function methodListKnowBaseItems($params, $protocol)
{
global $DB, $CFG_GLPI;
if (isset($params['help'])) {
return array('start' => 'integer,optional', 'limit' => 'integer,optional', 'contains' => 'string,optional', 'category' => 'string,optional', 'faq' => 'bool,optional', 'type' => 'string,optionnal', 'help' => 'bool,optional');
}
if (!Session::getLoginUserID()) {
$params['faq'] = 1;
} else {
if (!isset($params['faq'])) {
$params['faq'] = 0;
}
}
$kb = new KnowbaseItem();
if (!$kb->canView()) {
return self::Error($protocol, WEBSERVICES_ERROR_NOTALLOWED);
}
if (!isset($params['category'])) {
$params['category'] = 0;
} else {
if (!is_numeric($params['category'])) {
return self::Error($protocol, WEBSERVICES_ERROR_BADPARAMETER, '', 'category');
}
}
if (!isset($params['contains'])) {
$params['contains'] = '';
}
if (!isset($params['type'])) {
$params['type'] == 'search';
}
$query = KnowbaseItem::getListRequest(array('faq' => $params['faq'], 'contains' => addslashes($params['contains']), 'knowbaseitemcategories_id' => $params['category']), $params['type']);
$resp = array();
if (isset($params['count'])) {
$resp['count'] = $DB->numrows($DB->query($query));
} else {
$start = 0;
$limit = $CFG_GLPI["list_limit_max"];
if (isset($params['limit']) && is_numeric($params['limit'])) {
$limit = $params['limit'];
}
if (isset($params['start']) && is_numeric($params['start'])) {
$start = $params['start'];
}
$query .= " LIMIT {$start}, {$limit}";
foreach ($DB->request($query) as $data) {
$data['resume'] = Toolbox::unclean_cross_side_scripting_deep($data['answer']);
$data['resume'] = Html::clean(Html::resume_text(Html::clean($data['resume']), 200));
$data['resume'] = html_entity_decode($data['resume'], 0, 'UTF-8');
unset($data['answer']);
$resp[] = $data;
}
}
return $resp;
}