public function importContacts($languageCode) { $mainContact = new JournalContact(); $contactName = !empty($this->settings[$languageCode]['contactName']) ? $this->settings[$languageCode]['contactName'] : null; $contactEmail = !empty($this->settings[$languageCode]['contactEmail']) ? $this->settings[$languageCode]['contactEmail'] : null; if ($contactName && $contactEmail) { $mainContact->setFullName($contactName); $mainContact->setEmail($contactEmail); if (!empty($this->settings[$languageCode]['contactPhone'])) { $mainContact->setPhone($this->settings[$languageCode]['contactPhone']); } if (!empty($this->settings[$languageCode]['contactMailingAddress'])) { $mainContact->setAddress($this->settings[$languageCode]['contactMailingAddress']); } } $supportContact = new JournalContact(); $supportName = !empty($this->settings[$languageCode]['supportName']) ? $this->settings[$languageCode]['supportName'] : null; $supportEmail = !empty($this->settings[$languageCode]['supportEmail']) ? $this->settings[$languageCode]['supportEmail'] : null; if ($supportName && $supportEmail) { $supportContact->setFullName($supportName); $supportContact->setEmail($supportEmail); if (!empty($this->settings[$languageCode]['supportPhone'])) { $supportContact->setPhone($this->settings[$languageCode]['supportPhone']); } if (!empty($this->settings[$languageCode]['mailingAddress'])) { $supportContact->setAddress($this->settings[$languageCode]['mailingAddress']); } } $type = $this->em->getRepository('OjsJournalBundle:ContactTypes')->findBy([], null, 1); if ($type) { $mainContact->setContactType($type[0]); $supportContact->setContactType($type[0]); } else { $newType = new ContactTypes(); $newType->setCurrentLocale(mb_substr($languageCode, 0, 2, 'UTF-8')); $newType->setName('Default'); $newType->setDescription('Default Type'); $this->em->persist($newType); $mainContact->setContactType($newType); $supportContact->setContactType($newType); } $this->journal->addJournalContact($mainContact); $this->journal->addJournalContact($supportContact); }
/** * Imports contacts of the given journal. * @param Journal $journal The journal whose contacts are going to be imported * @param int $journalId Old ID of the journal * @throws \Doctrine\DBAL\DBALException */ public function importContacts($journal, $journalId) { $this->consoleOutput->writeln("Importing journal's contacts..."); $settingsSql = "SELECT locale, setting_name, setting_value FROM journal_settings WHERE journal_id = :id"; $settingsStatement = $this->dbalConnection->prepare($settingsSql); $settingsStatement->bindValue('id', $journalId); $settingsStatement->execute(); $settings = array(); $pkpSettings = $settingsStatement->fetchAll(); foreach ($pkpSettings as $setting) { $name = $setting['setting_name']; $value = $setting['setting_value']; $settings[$name] = $value; } $contact = new JournalContact(); $contact->setFullName($settings['contactName']); $contact->setEmail($settings['contactEmail']); $contact->setPhone($settings['contactPhone']); $contact->setAddress($settings['contactMailingAddress']); $types = $this->em->getRepository('OjsJournalBundle:ContactTypes')->findAll(); !empty($types) && $contact->setContactType($types[0]); $journal->addJournalContact($contact); }
/** * @param Journal $journal * @return Journal */ private function setupJournalContacts(Journal $journal) { $contactTypeNames = ['Editor', 'Technical Contact', 'Co-Editor']; $em = $this->getDoctrine()->getManager(); $contactTypes = []; foreach ($contactTypeNames as $contactTypeName) { $contactTypeTranslation = $em->getRepository('OjsJournalBundle:ContactTypesTranslation')->findOneBy(['name' => $contactTypeName]); $this->throw404IfNotFound($contactTypeTranslation, 'Not found ' . $contactTypeName . ' type contact type. please create'); $contactTypes[] = $contactTypeTranslation->getTranslatable(); } /** @var ContactTypes $contactType */ foreach ($contactTypes as $contactType) { if (!is_null($contactType)) { $journalContact = new JournalContact(); $journalContact->setContactType($contactType); $journal->addJournalContact($journalContact); } } return $journal; }