Example #1
0
 /**
  * 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();
             }
         }
     }
 }