Open Preprint Systems  3.3.0
SubmissionAgencyDAO.inc.php
1 <?php
2 
17 import('lib.pkp.classes.controlledVocab.ControlledVocabDAO');
18 
19 define('CONTROLLED_VOCAB_SUBMISSION_AGENCY', 'submissionAgency');
20 
22 
28  function build($publicationId) {
29  return parent::_build(CONTROLLED_VOCAB_SUBMISSION_AGENCY, ASSOC_TYPE_PUBLICATION, $publicationId);
30  }
31 
36  function getLocaleFieldNames() {
37  return array('submissionAgency');
38  }
39 
46  function getAgencies($publicationId, $locales = []) {
47  $result = [];
48 
49  $agencies = $this->build($publicationId);
50  $submissionAgencyEntryDao = DAORegistry::getDAO('SubmissionAgencyEntryDAO'); /* @var $submissionAgencyEntryDao SubmissionAgencyEntryDAO */
51  $submissionAgencies = $submissionAgencyEntryDao->getByControlledVocabId($agencies->getId());
52  while ($agencyEntry = $submissionAgencies->next()) {
53  $agency = $agencyEntry->getAgency();
54  foreach ($agency as $locale => $value) {
55  if (empty($locales) || in_array($locale, $locales)) {
56  if (!array_key_exists($locale, $result)) {
57  $result[$locale] = [];
58  }
59  $result[$locale][] = $value;
60  }
61  }
62  }
63 
64  return $result;
65  }
66 
71  function getAllUniqueAgencies() {
72  $agencies = array();
73 
74  $result = $this->retrieve(
75  'SELECT DISTINCT setting_value FROM controlled_vocab_entry_settings WHERE setting_name = ?', CONTROLLED_VOCAB_SUBMISSION_AGENCY
76  );
77 
78  while (!$result->EOF) {
79  $agencies[] = $result->fields[0];
80  $result->MoveNext();
81  }
82 
83  $result->Close();
84  return $agencies;
85  }
86 
94  function insertAgencies($agencies, $publicationId, $deleteFirst = true) {
95  $agencyDao = DAORegistry::getDAO('SubmissionAgencyDAO'); /* @var $agencyDao SubmissionAgencyDAO */
96  $submissionAgencyEntryDao = DAORegistry::getDAO('SubmissionAgencyEntryDAO'); /* @var $submissionAgencyEntryDao SubmissionAgencyEntryDAO */
97  $currentAgencies = $this->build($publicationId);
98 
99  if ($deleteFirst) {
100  $existingEntries = $agencyDao->enumerate($currentAgencies->getId(), CONTROLLED_VOCAB_SUBMISSION_AGENCY);
101 
102  foreach ($existingEntries as $id => $entry) {
103  $entry = trim($entry);
104  $submissionAgencyEntryDao->deleteObjectById($id);
105  }
106  }
107  if (is_array($agencies)) { // localized, array of arrays
108 
109  foreach ($agencies as $locale => $list) {
110  if (is_array($list)) {
111  $list = array_unique($list); // Remove any duplicate keywords
112  $i = 1;
113  foreach ($list as $agency) {
114  $agencyEntry = $submissionAgencyEntryDao->newDataObject();
115  $agencyEntry->setControlledVocabId($currentAgencies->getId());
116  $agencyEntry->setAgency(urldecode($agency), $locale);
117  $agencyEntry->setSequence($i);
118  $i++;
119  $submissionAgencyEntryDao->insertObject($agencyEntry);
120  }
121  }
122  }
123  }
124  }
125 }
126 
127 
SubmissionAgencyDAO\getAgencies
getAgencies($publicationId, $locales=[])
Definition: SubmissionAgencyDAO.inc.php:46
SubmissionAgencyDAO\build
build($publicationId)
Definition: SubmissionAgencyDAO.inc.php:28
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
DAO\retrieve
& retrieve($sql, $params=false, $callHooks=true)
Definition: DAO.inc.php:85
ControlledVocabDAO
Operations for retrieving and modifying ControlledVocab objects.
Definition: ControlledVocabDAO.inc.php:19
SubmissionAgencyDAO\getLocaleFieldNames
getLocaleFieldNames()
Definition: SubmissionAgencyDAO.inc.php:36
SubmissionAgencyDAO\insertAgencies
insertAgencies($agencies, $publicationId, $deleteFirst=true)
Definition: SubmissionAgencyDAO.inc.php:94
SubmissionAgencyDAO\getAllUniqueAgencies
getAllUniqueAgencies()
Definition: SubmissionAgencyDAO.inc.php:71
SubmissionAgencyDAO
Operations for retrieving and modifying a submission's assigned agencies.
Definition: SubmissionAgencyDAO.inc.php:21