17 import(
'lib.pkp.classes.controlledVocab.ControlledVocabDAO');
19 define(
'CONTROLLED_VOCAB_SUBMISSION_AGENCY',
'submissionAgency');
29 function build($publicationId, $assocType = ASSOC_TYPE_PUBLICATION) {
30 return parent::_build(CONTROLLED_VOCAB_SUBMISSION_AGENCY, $assocType, $publicationId);
38 return array(
'submissionAgency');
48 function getAgencies($publicationId, $locales = [], $assocType = ASSOC_TYPE_PUBLICATION) {
51 $agencies = $this->
build($publicationId, $assocType);
53 $submissionAgencies = $submissionAgencyEntryDao->getByControlledVocabId($agencies->getId());
54 while ($agencyEntry = $submissionAgencies->next()) {
55 $agency = $agencyEntry->getAgency();
56 foreach ($agency as $locale => $value) {
57 if (empty($locales) || in_array($locale, $locales)) {
58 if (!array_key_exists($locale, $result)) {
59 $result[$locale] = [];
61 $result[$locale][] = $value;
77 'SELECT DISTINCT setting_value FROM controlled_vocab_entry_settings WHERE setting_name = ?', CONTROLLED_VOCAB_SUBMISSION_AGENCY
80 while (!$result->EOF) {
81 $agencies[] = $result->fields[0];
97 function insertAgencies($agencies, $publicationId, $deleteFirst =
true, $assocType = ASSOC_TYPE_PUBLICATION) {
100 $currentAgencies = $this->
build($publicationId, $assocType);
103 $existingEntries = $agencyDao->enumerate($currentAgencies->getId(), CONTROLLED_VOCAB_SUBMISSION_AGENCY);
105 foreach ($existingEntries as $id => $entry) {
106 $entry = trim($entry);
107 $submissionAgencyEntryDao->deleteObjectById($id);
110 if (is_array($agencies)) {
112 foreach ($agencies as $locale => $list) {
113 if (is_array($list)) {
114 $list = array_unique($list);
116 foreach ($list as $agency) {
117 $agencyEntry = $submissionAgencyEntryDao->newDataObject();
118 $agencyEntry->setControlledVocabId($currentAgencies->getId());
119 $agencyEntry->setAgency(urldecode($agency), $locale);
120 $agencyEntry->setSequence($i);
122 $submissionAgencyEntryDao->insertObject($agencyEntry);