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