/** * Update keywords from input array * @param ilMDGeneral $a_md_section * @param array $a_keywords lang => keywords */ public static function updateKeywords(ilMDGeneral $a_md_section, array $a_keywords) { // trim keywords $new_keywords = array(); foreach ($a_keywords as $lang => $keywords) { foreach ($keywords as $keyword) { $keyword = trim($keyword); if ($keyword != "" && !(is_array($new_keywords[$lang]) && in_array($keyword, $new_keywords[$lang]))) { $new_keywords[$lang][] = $keyword; } } } // update existing author entries (delete if not entered) foreach ($ids = $a_md_section->getKeywordIds() as $id) { $md_key = $a_md_section->getKeyword($id); $lang = $md_key->getKeywordLanguageCode(); // entered keyword already exists if (is_array($new_keywords[$lang]) && in_array($md_key->getKeyword(), $new_keywords[$lang])) { unset($new_keywords[$lang][array_search($md_key->getKeyword(), $new_keywords[$lang])]); } else { $md_key->delete(); } } // insert entered, but not existing keywords foreach ($new_keywords as $lang => $key_arr) { foreach ($key_arr as $keyword) { if ($keyword != "") { $md_key = $a_md_section->addKeyword(); $md_key->setKeyword(ilUtil::stripSlashes($keyword)); $md_key->setKeywordLanguage(new ilMDLanguageItem($lang)); $md_key->save(); } } } }