private function importSubjects($languageCode)
{
if (empty($this->settings[$languageCode]['categories'])) {
return array();
}
$subjects = [];
$categoryIds = unserialize($this->settings[$languageCode]['categories']);
if (!is_array($categoryIds)) {
return [];
}
foreach ($categoryIds as $categoryId) {
$categorySql = "SELECT locale, setting_value FROM " . "controlled_vocab_entry_settings WHERE " . "controlled_vocab_entry_id = :categoryId";
$categoryStatement = $this->dbalConnection->prepare($categorySql);
$categoryStatement->bindValue('categoryId', $categoryId);
$categoryStatement->execute();
$pkpCategorySettings = $categoryStatement->fetchAll();
$categorySettings = [];
foreach ($pkpCategorySettings as $pkpSetting) {
$locale = !empty($pkpSetting['locale']) ? $pkpSetting['locale'] : $languageCode;
$value = $pkpSetting['setting_value'];
$categorySettings[$locale] = $value;
}
$slug = Transliterator::urlize(array_values($categorySettings)[0]);
$tags = str_replace(' ', ', ', strtolower(array_values($categorySettings)[0]));
$subject = $this->em->getRepository('OjsJournalBundle:Subject')->findOneBy(['slug' => $slug]);
if (!$subject) {
$subject = new Subject();
$subject->setSlug($slug);
$subject->setTags($tags);
foreach ($categorySettings as $locale => $value) {
$subject->setCurrentLocale(mb_substr($locale, 0, 2, 'UTF-8'));
$subject->setSubject($value);
$this->em->persist($subject);
$this->em->flush();
}
}
$subjects[] = $subject;
}
return $subjects;
}