protected function filterItemsByKeyWord(array $a_items, $a_keyword)
 {
     $res = array();
     include_once "./Modules/Blog/classes/class.ilBlogPosting.php";
     foreach ($a_items as $month => $items) {
         foreach ($items as $item) {
             if (in_array($a_keyword, ilBlogPosting::getKeywords($this->obj_id, $item["id"]))) {
                 $res[] = $item;
             }
         }
     }
     return $res;
 }
 /**
  * Read data
  *
  * @param
  * @return
  */
 function readData($a_entity, $a_version, $a_ids, $a_field = "")
 {
     global $ilDB;
     if (!is_array($a_ids)) {
         $a_ids = array($a_ids);
     }
     if ($a_entity == "blog") {
         switch ($a_version) {
             case "4.3.0":
                 $this->getDirectDataFromQuery("SELECT bl.id,od.title,od.description," . "bl.notes,bl.bg_color,bl.font_color,bl.img,bl.ppic,bl.rss_active,bl.approval" . " FROM il_blog bl" . " JOIN object_data od ON (od.obj_id = bl.id)" . " WHERE " . $ilDB->in("bl.id", $a_ids, false, "integer") . " AND od.type = " . $ilDB->quote("blog", "text"));
                 break;
             case "5.0.0":
                 $this->getDirectDataFromQuery("SELECT bl.id,od.title,od.description," . "bl.bg_color,bl.font_color,bl.img,bl.ppic,bl.rss_active,bl.approval," . "bl.abs_shorten,bl.abs_shorten_len,bl.abs_image,bl.abs_img_width,bl.abs_img_height," . "bl.nav_mode,bl.nav_list_post,bl.nav_list_mon,bl.keywords,bl.authors,bl.nav_order," . "bl.ov_post" . " FROM il_blog bl" . " JOIN object_data od ON (od.obj_id = bl.id)" . " WHERE " . $ilDB->in("bl.id", $a_ids, false, "integer") . " AND od.type = " . $ilDB->quote("blog", "text"));
                 break;
         }
     }
     if ($a_entity == "blog_posting") {
         switch ($a_version) {
             case "4.3.0":
             case "5.0.0":
                 $this->getDirectDataFromQuery("SELECT id,blog_id,title,created,author,approved" . " FROM il_blog_posting WHERE " . $ilDB->in("blog_id", $a_ids, false, "integer"));
                 foreach ($this->data as $idx => $item) {
                     // create full export id
                     $this->data[$idx]["Author"] = $this->createObjectExportId("usr", $item["Author"]);
                 }
                 break;
         }
         // keywords
         include_once "./Modules/Blog/classes/class.ilBlogPosting.php";
         include_once "./Services/MetaData/classes/class.ilMDKeyword.php";
         foreach ($this->data as $idx => $item) {
             $blog_id = ilBlogPosting::lookupBlogId($item["Id"]);
             $keywords = ilBlogPosting::getKeywords($blog_id, $item["Id"]);
             if ($keywords) {
                 foreach ($keywords as $kidx => $keyword) {
                     $this->data[$idx]["Keyword" . $kidx] = $keyword;
                 }
             }
         }
     }
 }
 protected function initKeywordsForm()
 {
     global $ilUser;
     include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
     $form = new ilPropertyFormGUI();
     $form->setFormAction($this->ctrl->getFormAction($this, "saveKeywordsForm"));
     $form->setTitle($this->lng->txt("blog_edit_keywords"));
     $txt = new ilTextInputGUI($this->lng->txt("blog_keywords"), "keywords");
     // $txt->setRequired(true); #10504
     $txt->setMulti(true);
     $txt->setDataSource($this->ctrl->getLinkTarget($this, "keywordAutocomplete", "", true));
     $txt->setMaxLength(200);
     $txt->setSize(50);
     $txt->setInfo($this->lng->txt("blog_keywords_info"));
     $form->addItem($txt);
     $md_section = $this->getBlogPosting()->getMDSection();
     $keywords = array();
     foreach ($ids = $md_section->getKeywordIds() as $id) {
         $md_key = $md_section->getKeyword($id);
         if (trim($md_key->getKeyword()) != "") {
             $keywords[$md_key->getKeywordLanguageCode()][] = $md_key->getKeyword();
         }
     }
     // language is not "used" anywhere
     $ulang = $ilUser->getLanguage();
     if ($keywords[$ulang]) {
         asort($keywords[$ulang]);
         $txt->setValue($keywords[$ulang]);
     }
     // other keywords in blog
     $other = array();
     foreach (array_keys(ilBlogPosting::getAllPostings($this->getBlogPosting()->getBlogId())) as $posting_id) {
         if ($posting_id != $this->getBlogPosting()->getId()) {
             $other = array_merge($other, ilBlogPosting::getKeywords($this->getBlogPosting()->getBlogId(), $posting_id));
         }
     }
     if (is_array($keywords[$ulang])) {
         $other = array_diff($other, $keywords[$ulang]);
     }
     if (sizeof($other)) {
         $html = "";
         foreach ($other as $item) {
             $html .= '<span class="ilTag">' . $item . '</span>';
         }
         $info = new ilNonEditableValueGUI($this->lng->txt("blog_keywords_other"), "", true);
         $info->setInfo($this->lng->txt("blog_keywords_other_info"));
         $info->setValue($html);
         $form->addItem($info);
     }
     $form->addCommandButton("saveKeywordsForm", $this->lng->txt("save"));
     $form->addCommandButton("preview", $this->lng->txt("cancel"));
     return $form;
 }