Open Journal 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 
29  function build($publicationId, $assocType = ASSOC_TYPE_PUBLICATION) {
30  return parent::_build(CONTROLLED_VOCAB_SUBMISSION_AGENCY, $assocType, $publicationId);
31  }
32 
37  function getLocaleFieldNames() {
38  return array('submissionAgency');
39  }
40 
48  function getAgencies($publicationId, $locales = [], $assocType = ASSOC_TYPE_PUBLICATION) {
49  $result = [];
50 
51  $agencies = $this->build($publicationId, $assocType);
52  $submissionAgencyEntryDao = DAORegistry::getDAO('SubmissionAgencyEntryDAO'); /* @var $submissionAgencyEntryDao SubmissionAgencyEntryDAO */
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] = [];
60  }
61  $result[$locale][] = $value;
62  }
63  }
64  }
65 
66  return $result;
67  }
68 
73  function getAllUniqueAgencies() {
74  $agencies = array();
75 
76  $result = $this->retrieve(
77  'SELECT DISTINCT setting_value FROM controlled_vocab_entry_settings WHERE setting_name = ?', CONTROLLED_VOCAB_SUBMISSION_AGENCY
78  );
79 
80  while (!$result->EOF) {
81  $agencies[] = $result->fields[0];
82  $result->MoveNext();
83  }
84 
85  $result->Close();
86  return $agencies;
87  }
88 
97  function insertAgencies($agencies, $publicationId, $deleteFirst = true, $assocType = ASSOC_TYPE_PUBLICATION) {
98  $agencyDao = DAORegistry::getDAO('SubmissionAgencyDAO'); /* @var $agencyDao SubmissionAgencyDAO */
99  $submissionAgencyEntryDao = DAORegistry::getDAO('SubmissionAgencyEntryDAO'); /* @var $submissionAgencyEntryDao SubmissionAgencyEntryDAO */
100  $currentAgencies = $this->build($publicationId, $assocType);
101 
102  if ($deleteFirst) {
103  $existingEntries = $agencyDao->enumerate($currentAgencies->getId(), CONTROLLED_VOCAB_SUBMISSION_AGENCY);
104 
105  foreach ($existingEntries as $id => $entry) {
106  $entry = trim($entry);
107  $submissionAgencyEntryDao->deleteObjectById($id);
108  }
109  }
110  if (is_array($agencies)) { // localized, array of arrays
111 
112  foreach ($agencies as $locale => $list) {
113  if (is_array($list)) {
114  $list = array_unique($list); // Remove any duplicate keywords
115  $i = 1;
116  foreach ($list as $agency) {
117  $agencyEntry = $submissionAgencyEntryDao->newDataObject();
118  $agencyEntry->setControlledVocabId($currentAgencies->getId());
119  $agencyEntry->setAgency(urldecode($agency), $locale);
120  $agencyEntry->setSequence($i);
121  $i++;
122  $submissionAgencyEntryDao->insertObject($agencyEntry);
123  }
124  }
125  }
126  }
127  }
128 }
129 
130 
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
SubmissionAgencyDAO\getAgencies
getAgencies($publicationId, $locales=[], $assocType=ASSOC_TYPE_PUBLICATION)
Definition: SubmissionAgencyDAO.inc.php:48
ControlledVocabDAO
Operations for retrieving and modifying ControlledVocab objects.
Definition: ControlledVocabDAO.inc.php:19
SubmissionAgencyDAO\getLocaleFieldNames
getLocaleFieldNames()
Definition: SubmissionAgencyDAO.inc.php:37
SubmissionAgencyDAO\insertAgencies
insertAgencies($agencies, $publicationId, $deleteFirst=true, $assocType=ASSOC_TYPE_PUBLICATION)
Definition: SubmissionAgencyDAO.inc.php:97
SubmissionAgencyDAO\getAllUniqueAgencies
getAllUniqueAgencies()
Definition: SubmissionAgencyDAO.inc.php:73
SubmissionAgencyDAO\build
build($publicationId, $assocType=ASSOC_TYPE_PUBLICATION)
Definition: SubmissionAgencyDAO.inc.php:29
SubmissionAgencyDAO
Operations for retrieving and modifying a submission's assigned agencies.
Definition: SubmissionAgencyDAO.inc.php:21