Open Monograph Press  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 
30  function build($publicationId, $assocType = ASSOC_TYPE_PUBLICATION) {
31  return parent::_build(CONTROLLED_VOCAB_SUBMISSION_DISCIPLINE, $assocType, $publicationId);
32  }
33 
38  function getLocaleFieldNames() {
39  return array('submissionDiscipline');
40  }
41 
49  function getDisciplines($publicationId, $locales = [], $assocType = ASSOC_TYPE_PUBLICATION) {
50  $result = [];
51 
52  $disciplines = $this->build($publicationId, $assocType);
53  $submissionDisciplineEntryDao = DAORegistry::getDAO('SubmissionDisciplineEntryDAO'); /* @var $submissionDisciplineEntryDao SubmissionDisciplineEntryDAO */
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] = [];
61  }
62  $result[$locale][] = $value;
63  }
64  }
65  }
66 
67  return $result;
68  }
69 
75  $disciplines = array();
76 
77  $result = $this->retrieve(
78  'SELECT DISTINCT setting_value FROM controlled_vocab_entry_settings WHERE setting_name = ?', CONTROLLED_VOCAB_SUBMISSION_DISCIPLINE
79  );
80 
81  while (!$result->EOF) {
82  $disciplines[] = $result->fields[0];
83  $result->MoveNext();
84  }
85 
86  $result->Close();
87  return $disciplines;
88  }
89 
98  function insertDisciplines($disciplines, $publicationId, $deleteFirst = true, $assocType = ASSOC_TYPE_PUBLICATION) {
99  $disciplineDao = DAORegistry::getDAO('SubmissionDisciplineDAO'); /* @var $disciplineDao SubmissionDisciplineDAO */
100  $submissionDisciplineEntryDao = DAORegistry::getDAO('SubmissionDisciplineEntryDAO'); /* @var $submissionDisciplineEntryDao SubmissionDisciplineEntryDAO */
101  $currentDisciplines = $this->build($publicationId, $assocType);
102 
103  if ($deleteFirst) {
104  $existingEntries = $disciplineDao->enumerate($currentDisciplines->getId(), CONTROLLED_VOCAB_SUBMISSION_DISCIPLINE);
105 
106  foreach ($existingEntries as $id => $entry) {
107  $entry = trim($entry);
108  $submissionDisciplineEntryDao->deleteObjectById($id);
109  }
110  }
111  if (is_array($disciplines)) { // localized, array of arrays
112 
113  foreach ($disciplines as $locale => $list) {
114  if (is_array($list)) {
115  $list = array_unique($list); // Remove any duplicate keywords
116  $i = 1;
117  foreach ($list as $discipline) {
118  $disciplineEntry = $submissionDisciplineEntryDao->newDataObject();
119  $disciplineEntry->setControlledVocabId($currentDisciplines->getId());
120  $disciplineEntry->setDiscipline(urldecode($discipline), $locale);
121  $disciplineEntry->setSequence($i);
122  $i++;
123  $submissionDisciplineEntryDao->insertObject($disciplineEntry);
124  }
125  }
126  }
127  }
128  }
129 }
130 
131 
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
SubmissionDisciplineDAO\getLocaleFieldNames
getLocaleFieldNames()
Definition: SubmissionDisciplineDAO.inc.php:38
ControlledVocabDAO
Operations for retrieving and modifying ControlledVocab objects.
Definition: ControlledVocabDAO.inc.php:19
SubmissionDisciplineDAO\getAllUniqueDisciplines
getAllUniqueDisciplines()
Definition: SubmissionDisciplineDAO.inc.php:74
SubmissionDisciplineDAO\insertDisciplines
insertDisciplines($disciplines, $publicationId, $deleteFirst=true, $assocType=ASSOC_TYPE_PUBLICATION)
Definition: SubmissionDisciplineDAO.inc.php:98
SubmissionDisciplineDAO\build
build($publicationId, $assocType=ASSOC_TYPE_PUBLICATION)
Definition: SubmissionDisciplineDAO.inc.php:30
SubmissionDisciplineDAO\getDisciplines
getDisciplines($publicationId, $locales=[], $assocType=ASSOC_TYPE_PUBLICATION)
Definition: SubmissionDisciplineDAO.inc.php:49
SubmissionDisciplineDAO
Operations for retrieving and modifying a submission's assigned disciplines.
Definition: SubmissionDisciplineDAO.inc.php:22