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