/** * Set the terms for this learnpath item * @param string Terms, as a comma-split list * @return boolean Always return true */ function set_terms($terms) { global $charset; $lp_item = Database::get_course_table(TABLE_LP_ITEM); require_once api_get_path(LIBRARY_PATH) . 'search/DokeosIndexer.class.php'; $a_terms = split(',', $terms); $i_terms = split(',', $this->get_terms()); foreach ($i_terms as $term) { if (!in_array($term, $a_terms)) { array_push($a_terms, $term); } } $new_terms = $a_terms; $new_terms_string = implode(',', $new_terms); $terms_update_sql = ''; //TODO: validate csv string $terms_update_sql = "UPDATE {$lp_item} SET terms = '" . Database::escape_string(api_htmlentities($new_terms_string, ENT_QUOTES, $charset)) . "' WHERE id=" . $this->get_id(); $res = Database::query($terms_update_sql, __FILE__, __LINE__); // save it to search engine if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) { $di = new DokeosIndexer(); $di->update_terms($this->get_search_did(), $new_terms); } return true; }