/** * 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; }