Open Monograph Press  3.3.0
SubmissionLanguageDAO.inc.php
1 <?php
2 
17 import('lib.pkp.classes.controlledVocab.ControlledVocabDAO');
18 
19 define('CONTROLLED_VOCAB_SUBMISSION_LANGUAGE', 'submissionLanguage');
20 
22 
29  function build($publicationId, $assocType = ASSOC_TYPE_PUBLICATION) {
30  // may return an array of ControlledVocabs
31  return parent::_build(CONTROLLED_VOCAB_SUBMISSION_LANGUAGE, $assocType, $publicationId);
32  }
33 
38  function getLocaleFieldNames() {
39  return array('submissionLanguage');
40  }
41 
49  function getLanguages($publicationId, $locales = [], $assocType = ASSOC_TYPE_PUBLICATION) {
50  $result = [];
51 
52  $languages = $this->build($publicationId, $assocType);
53  $submissionLanguageEntryDao = DAORegistry::getDAO('SubmissionLanguageEntryDAO'); /* @var $submissionLanguageEntryDao SubmissionLanguageEntryDAO */
54  $submissionLanguages = $submissionLanguageEntryDao->getByControlledVocabId($languages->getId());
55  while ($languageEntry = $submissionLanguages->next()) {
56  $language = $languageEntry->getLanguage();
57  foreach ($language 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 
74  function getAllUniqueLanguages() {
75  $languages = array();
76 
77  $result = $this->retrieve(
78  'SELECT DISTINCT setting_value FROM controlled_vocab_entry_settings WHERE setting_name = ?', CONTROLLED_VOCAB_SUBMISSION_LANGUAGE
79  );
80 
81  while (!$result->EOF) {
82  $languages[] = $result->fields[0];
83  $result->MoveNext();
84  }
85 
86  $result->Close();
87  return $languages;
88  }
89 
98  function insertLanguages($languages, $publicationId, $deleteFirst = true, $assocType = ASSOC_TYPE_PUBLICATION) {
99  $languageDao = DAORegistry::getDAO('SubmissionLanguageDAO'); /* @var $languageDao SubmissionLanguageDAO */
100  $submissionLanguageEntryDao = DAORegistry::getDAO('SubmissionLanguageEntryDAO'); /* @var $submissionLanguageEntryDao SubmissionLanguageEntryDAO */
101  $currentLanguages = $this->build($publicationId, $assocType);
102 
103  if ($deleteFirst) {
104  $existingEntries = $languageDao->enumerate($currentLanguages->getId(), CONTROLLED_VOCAB_SUBMISSION_LANGUAGE);
105 
106  foreach ($existingEntries as $id => $entry) {
107  $entry = trim($entry);
108  $submissionLanguageEntryDao->deleteObjectById($id);
109  }
110  }
111  if (is_array($languages)) { // localized, array of arrays
112 
113  foreach ($languages as $locale => $list) {
114  if (is_array($list)) {
115  $list = array_unique($list); // Remove any duplicate Languages
116  $i = 1;
117  foreach ($list as $language) {
118  $languageEntry = $submissionLanguageEntryDao->newDataObject();
119  $languageEntry->setControlledVocabId($currentLanguages->getId());
120  $languageEntry->setLanguage(urldecode($language), $locale);
121  $languageEntry->setSequence($i);
122  $i++;
123  $submissionLanguageEntryDao->insertObject($languageEntry);
124  }
125  }
126  }
127  }
128  }
129 }
130 
131 
SubmissionLanguageDAO\build
build($publicationId, $assocType=ASSOC_TYPE_PUBLICATION)
Definition: SubmissionLanguageDAO.inc.php:29
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SubmissionLanguageDAO\getAllUniqueLanguages
getAllUniqueLanguages()
Definition: SubmissionLanguageDAO.inc.php:74
DAO\retrieve
& retrieve($sql, $params=false, $callHooks=true)
Definition: DAO.inc.php:85
SubmissionLanguageDAO\insertLanguages
insertLanguages($languages, $publicationId, $deleteFirst=true, $assocType=ASSOC_TYPE_PUBLICATION)
Definition: SubmissionLanguageDAO.inc.php:98
ControlledVocabDAO
Operations for retrieving and modifying ControlledVocab objects.
Definition: ControlledVocabDAO.inc.php:19
SubmissionLanguageDAO\getLanguages
getLanguages($publicationId, $locales=[], $assocType=ASSOC_TYPE_PUBLICATION)
Definition: SubmissionLanguageDAO.inc.php:49
SubmissionLanguageDAO\getLocaleFieldNames
getLocaleFieldNames()
Definition: SubmissionLanguageDAO.inc.php:38
SubmissionLanguageDAO
Operations for retrieving and modifying a submission's assigned languages.
Definition: SubmissionLanguageDAO.inc.php:21