17 import(
'lib.pkp.classes.controlledVocab.ControlledVocabDAO');
19 define(
'CONTROLLED_VOCAB_SUBMISSION_KEYWORD',
'submissionKeyword');
29 function build($publicationId, $assocType = ASSOC_TYPE_PUBLICATION) {
31 return parent::_build(CONTROLLED_VOCAB_SUBMISSION_KEYWORD, $assocType, $publicationId);
39 return array(
'submissionKeyword');
49 function getKeywords($publicationId, $locales = [], $assocType = ASSOC_TYPE_PUBLICATION) {
52 $keywords = $this->
build($publicationId, $assocType);
54 $submissionKeywords = $submissionKeywordEntryDao->getByControlledVocabId($keywords->getId());
55 while ($keywordEntry = $submissionKeywords->next()) {
56 $keyword = $keywordEntry->getKeyword();
57 foreach ($keyword as $locale => $value) {
58 if (empty($locales) || in_array($locale, $locales)) {
59 if (!array_key_exists($locale, $result)) {
60 $result[$locale] = [];
62 $result[$locale][] = $value;
78 'SELECT DISTINCT setting_value FROM controlled_vocab_entry_settings WHERE setting_name = ?', CONTROLLED_VOCAB_SUBMISSION_KEYWORD
81 while (!$result->EOF) {
82 $keywords[] = $result->fields[0];
98 function insertKeywords($keywords, $publicationId, $deleteFirst =
true, $assocType = ASSOC_TYPE_PUBLICATION) {
105 $currentKeywords = $this->
build($publicationId, $assocType);
107 if (is_array($keywords)) {
109 foreach ($keywords as $locale => $list) {
110 if (is_array($list)) {
111 $list = array_unique($list);
113 foreach ($list as $keyword) {
114 $keywordEntry = $submissionKeywordEntryDao->newDataObject();
115 $keywordEntry->setControlledVocabId($currentKeywords->getId());
116 $keywordEntry->setKeyword(urldecode($keyword), $locale);
117 $keywordEntry->setSequence($i);
119 $submissionKeywordEntryDao->insertObject($keywordEntry);
135 $currentKeywords = $this->
build($publicationId);
137 $existingEntries = $keywordDao->enumerate($currentKeywords->getId(), CONTROLLED_VOCAB_SUBMISSION_KEYWORD);
138 foreach ($existingEntries as $id => $entry) {
139 $entry = trim($entry);
140 $entryObj = $submissionKeywordEntryDao->getById($id);
141 $submissionKeywordEntryDao->deleteObjectById($id);
144 return $currentKeywords;