19 declare(strict_types=1);
35 $this->keyword = $a_keyword;
45 $this->keyword_language = $lng_obj;
50 return is_object($this->keyword_language) ? $this->keyword_language :
null;
55 return is_object($this->keyword_language) ? $this->keyword_language->getLanguageCode() :
'';
61 $fields[
'meta_keyword_id'] = array(
'integer', $next_id = $this->db->nextId(
'il_meta_keyword'));
63 if ($this->db->insert(
'il_meta_keyword', $fields)) {
72 return $this->
getMetaId() && $this->db->update(
75 array(
"meta_keyword_id" => array(
'integer', $this->
getMetaId()))
79 public function delete():
bool 82 $query =
"DELETE FROM il_meta_keyword " .
83 "WHERE meta_keyword_id = " . $this->db->quote($this->
getMetaId(),
'integer');
84 $res = $this->db->manipulate($query);
97 'rbac_id' => array(
'integer', $this->
getRBACId()),
98 'obj_id' => array(
'integer', $this->
getObjId()),
99 'obj_type' => array(
'text', $this->
getObjType()),
101 'parent_id' => array(
'integer', $this->
getParentId()),
102 'keyword' => array(
'text', $this->
getKeyword()),
110 $query =
"SELECT * FROM il_meta_keyword " .
111 "WHERE meta_keyword_id = " . $this->db->quote($this->
getMetaId(),
'integer');
113 $res = $this->db->query($query);
116 $this->
setObjId((
int) $row->obj_id);
143 public static function _getIds(
int $a_rbac_id,
int $a_obj_id,
int $a_parent_id,
string $a_parent_type): array
147 $ilDB = $DIC->database();
149 $query =
"SELECT meta_keyword_id FROM il_meta_keyword " .
150 "WHERE rbac_id = " .
$ilDB->quote($a_rbac_id,
'integer') .
" " .
151 "AND obj_id = " .
$ilDB->quote($a_obj_id,
'integer') .
" " .
152 "AND parent_id = " .
$ilDB->quote($a_parent_id,
'integer') .
" " .
153 "AND parent_type = " .
$ilDB->quote($a_parent_type,
'text') .
" " .
154 "ORDER BY meta_keyword_id ";
159 $ids[] = (
int) $row->meta_keyword_id;
171 $ilDB = $DIC->database();
172 $ilObjDataCache = $DIC[
'ilObjDataCache'];
174 $query =
"SELECT keyword,keyword_language " .
175 "FROM il_meta_keyword " .
176 "WHERE rbac_id = " .
$ilDB->quote($a_rbac_id,
'integer') .
" " .
177 "AND obj_id = " .
$ilDB->quote($a_obj_id,
'integer') .
" " .
178 "AND obj_type = " .
$ilDB->quote($a_type,
'text') .
" ";
183 $keywords[$row->keyword_language][] = $row->keyword;
195 foreach (self::_getKeywordsByLanguage($a_rbac_id, $a_obj_id, $a_type) as $lng_code => $keywords) {
196 $key_string[$lng_code] = implode(
",", $keywords);
204 public static function _searchKeywords(
string $a_query,
string $a_type,
int $a_rbac_id = 0): array
208 $ilDB = $DIC->database();
212 foreach ((array) explode(
' ', $a_query) as $part) {
216 $qs .= (
$ilDB->like(
'keyword',
'text', $part) .
' ');
220 $query =
"SELECT obj_id FROM il_meta_keyword " .
221 "WHERE rbac_id = " .
$ilDB->quote($a_rbac_id,
'integer') .
' ' .
222 'AND obj_type = ' .
$ilDB->quote($a_type,
'text') .
' ' .
225 $query =
"SELECT obj_id FROM il_meta_keyword " .
226 'WHERE obj_type = ' .
$ilDB->quote($a_type,
'text') .
' ' .
233 $obj_ids[] = $row->obj_id;
246 $ilDB = $DIC->database();
248 $query =
"SELECT DISTINCT keyword FROM il_meta_keyword " .
249 'WHERE obj_type = ' .
$ilDB->quote($a_type,
'text') .
' ' .
250 'AND ' .
$ilDB->like(
'keyword',
'text',
'%' . trim($a_query) .
'%') .
' ';
253 $query .=
"AND rbac_id = " .
$ilDB->quote($a_rbac_id,
'integer') .
' ';
259 $kws[] = $row->keyword;
264 public static function lookupKeywords(
int $a_rbac_id,
int $a_obj_id,
bool $a_return_ids =
false): array
268 $ilDB = $DIC->database();
270 $query =
"SELECT * FROM il_meta_keyword " .
271 "WHERE rbac_id = " .
$ilDB->quote($a_rbac_id,
'integer') .
' ' .
272 "AND obj_id = " .
$ilDB->quote($a_obj_id,
'integer') .
' ';
276 if (!$a_return_ids) {
277 if (is_string($row->keyword) && $row->keyword !==
'') {
278 $kws[] = $row->keyword;
281 $kws[] = $row->meta_keyword_id;
290 $new_keywords = array();
291 foreach ($a_keywords as
$lang => $keywords) {
292 foreach ((array) $keywords as $keyword) {
293 $keyword = trim($keyword);
294 if ($keyword !==
"" && !(isset($new_keywords[
$lang]) && in_array($keyword, $new_keywords[$lang],
true))) {
303 $lang = $md_key->getKeywordLanguageCode();
306 if (is_array($new_keywords[
$lang] ??
false) && in_array($md_key->getKeyword(), $new_keywords[
$lang],
true)) {
307 unset($new_keywords[$lang][array_search($md_key->getKeyword(), $new_keywords[
$lang],
true)]);
314 foreach ($new_keywords as
$lang => $key_arr) {
315 foreach ($key_arr as $keyword) {
316 if ($keyword !==
"") {
static _getKeywordsByLanguage(int $a_rbac_id, int $a_obj_id, string $a_type)
static _getMatchingKeywords(string $a_query, string $a_type, int $a_rbac_id=0)
static _getKeywordsByLanguageAsString(int $a_rbac_id, int $a_obj_id, string $a_type)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
setKeyword(string $a_keyword)
toXML(ilXmlWriter $writer)
static updateKeywords(ilMDGeneral $a_md_section, array $a_keywords)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static lookupKeywords(int $a_rbac_id, int $a_obj_id, bool $a_return_ids=false)
static _getIds(int $a_rbac_id, int $a_obj_id, int $a_parent_id, string $a_parent_type)
ilMDLanguageItem $keyword_language
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
getKeyword(int $a_keyword_id)
setParentType(string $a_parent_type)
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
setMetaId(int $a_meta_id, bool $a_read_data=true)
setKeywordLanguage(ilMDLanguageItem $lng_obj)
setObjType(string $a_type)
static _searchKeywords(string $a_query, string $a_type, int $a_rbac_id=0)