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; }