18 import(
'lib.pkp.classes.controlledVocab.ControlledVocabDAO');
20 define(
'CONTROLLED_VOCAB_SUBMISSION_DISCIPLINE',
'submissionDiscipline');
30 function build($publicationId, $assocType = ASSOC_TYPE_PUBLICATION) {
31 return parent::_build(CONTROLLED_VOCAB_SUBMISSION_DISCIPLINE, $assocType, $publicationId);
39 return array(
'submissionDiscipline');
49 function getDisciplines($publicationId, $locales = [], $assocType = ASSOC_TYPE_PUBLICATION) {
52 $disciplines = $this->
build($publicationId, $assocType);
54 $submissionDisciplines = $submissionDisciplineEntryDao->getByControlledVocabId($disciplines->getId());
55 while ($disciplineEntry = $submissionDisciplines->next()) {
56 $discipline = $disciplineEntry->getDiscipline();
57 foreach ($discipline 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;
75 $disciplines = array();
78 'SELECT DISTINCT setting_value FROM controlled_vocab_entry_settings WHERE setting_name = ?', CONTROLLED_VOCAB_SUBMISSION_DISCIPLINE
81 while (!$result->EOF) {
82 $disciplines[] = $result->fields[0];
98 function insertDisciplines($disciplines, $publicationId, $deleteFirst =
true, $assocType = ASSOC_TYPE_PUBLICATION) {
101 $currentDisciplines = $this->
build($publicationId, $assocType);
104 $existingEntries = $disciplineDao->enumerate($currentDisciplines->getId(), CONTROLLED_VOCAB_SUBMISSION_DISCIPLINE);
106 foreach ($existingEntries as $id => $entry) {
107 $entry = trim($entry);
108 $submissionDisciplineEntryDao->deleteObjectById($id);
111 if (is_array($disciplines)) {
113 foreach ($disciplines as $locale => $list) {
114 if (is_array($list)) {
115 $list = array_unique($list);
117 foreach ($list as $discipline) {
118 $disciplineEntry = $submissionDisciplineEntryDao->newDataObject();
119 $disciplineEntry->setControlledVocabId($currentDisciplines->getId());
120 $disciplineEntry->setDiscipline(urldecode($discipline), $locale);
121 $disciplineEntry->setSequence($i);
123 $submissionDisciplineEntryDao->insertObject($disciplineEntry);