Ojs\JournalBundle\Entity\Journal::setHeader PHP Method

setHeader() public method

public setHeader ( string $header )
$header string
    public function setHeader($header)
    {
        $this->header = $header;
        return $this;
    }

Usage Example

コード例 #1
0
 /**
  * Imports the journal with given ID
  * @param  int $id Journal's ID
  * @return array New IDs as keys, old IDs as values
  * @throws Exception
  * @throws \Doctrine\DBAL\DBALException
  */
 public function importJournal($id)
 {
     $this->consoleOutput->writeln("Importing the journal...");
     $journalSql = "SELECT path, primary_locale FROM journals WHERE journal_id = :id LIMIT 1";
     $journalStatement = $this->dbalConnection->prepare($journalSql);
     $journalStatement->bindValue('id', $id);
     $journalStatement->execute();
     $settingsSql = "SELECT locale, setting_name, setting_value FROM journal_settings WHERE journal_id = :id";
     $settingsStatement = $this->dbalConnection->prepare($settingsSql);
     $settingsStatement->bindValue('id', $id);
     $settingsStatement->execute();
     $pkpJournal = $journalStatement->fetch();
     $pkpSettings = $settingsStatement->fetchAll();
     $primaryLocale = $pkpJournal['primary_locale'];
     $languageCode = mb_substr($primaryLocale, 0, 2, 'UTF-8');
     !$pkpJournal && die('Journal not found.' . PHP_EOL);
     $this->consoleOutput->writeln("Reading journal settings...");
     foreach ($pkpSettings as $setting) {
         $locale = !empty($setting['locale']) ? mb_substr($setting['locale'], 0, 2, 'UTF-8') : $languageCode;
         $name = $setting['setting_name'];
         $value = $setting['setting_value'];
         $this->settings[$locale][$name] = $value;
     }
     $this->journal = new Journal();
     $this->journal->setStatus(1);
     $this->journal->setSlug($pkpJournal['path']);
     // Fill translatable fields in all available languages except the primary one
     foreach ($this->settings as $fieldLocale => $fields) {
         if ($fieldLocale === $languageCode) {
             // We will fill fields of the primary language later.
             continue;
         }
         $this->journal->setCurrentLocale(mb_substr($fieldLocale, 0, 2, 'UTF-8'));
         !empty($fields['title']) ? $this->journal->setTitle($fields['title']) : $this->journal->setTitle('Unknown Journal');
         !empty($fields['description']) ? $this->journal->setDescription($fields['description']) : $this->journal->setDescription('-');
     }
     $this->journal->setCurrentLocale($languageCode);
     // Fill fields for the primary language
     !empty($this->settings[$languageCode]['title']) ? $this->journal->setTitle($this->settings[$languageCode]['title']) : $this->journal->setTitle('Unknown Journal');
     !empty($this->settings[$languageCode]['description']) ? $this->journal->setDescription($this->settings[$languageCode]['description']) : $this->journal->setDescription('-');
     !empty($this->settings[$languageCode]['journalPageFooter']) ? $this->journal->setFooterText($this->settings[$languageCode]['journalPageFooter']) : $this->journal->setFooterText(null);
     !empty($this->settings[$languageCode]['printIssn']) && count($this->settings[$languageCode]['printIssn']) == 9 ? $this->journal->setIssn($this->settings[$languageCode]['printIssn']) : $this->journal->setIssn('');
     !empty($this->settings[$languageCode]['onlineIssn']) && count($this->settings[$languageCode]['onlineIssn']) == 9 ? $this->journal->setEissn($this->settings[$languageCode]['onlineIssn']) : $this->journal->setEissn('');
     $date = sprintf('%d-01-01 00:00:00', !empty($this->settings[$languageCode]['initialYear']) ? $this->settings[$languageCode]['initialYear'] : '2015');
     $this->journal->setFounded(DateTime::createFromFormat('Y-m-d H:i:s', $date));
     // Set view and download counts
     !empty($this->settings[$languageCode]['total_views']) ? $this->journal->setViewCount($this->settings[$languageCode]['total_views']) : $this->journal->setViewCount(0);
     !empty($this->settings[$languageCode]['total_downloads']) ? $this->journal->setDownloadCount($this->settings[$languageCode]['total_downloads']) : $this->journal->setDownloadCount(0);
     !empty($this->settings[$languageCode]['homeHeaderTitleImage']) ? $header = unserialize($this->settings[$languageCode]['homeHeaderTitleImage']) : ($header = null);
     if ($header) {
         $baseDir = '/../web/uploads/journal/imported/';
         $croppedBaseDir = '/../web/uploads/journal/croped/imported/';
         $headerPath = $id . '/' . $header['uploadName'];
         $pendingDownload = new PendingDownload();
         $pendingDownload->setSource('public/journals/' . $headerPath)->setTarget($baseDir . $headerPath)->setTag('journal-header');
         $croppedPendingDownload = new PendingDownload();
         $croppedPendingDownload->setSource('public/journals/' . $headerPath)->setTarget($croppedBaseDir . $headerPath)->setTag('journal-header');
         $history = $this->em->getRepository(FileHistory::class)->findOneBy(['fileName' => 'imported/' . $headerPath]);
         if (!$history) {
             $history = new FileHistory();
             $history->setFileName('imported/' . $headerPath);
             $history->setOriginalName('imported/' . $headerPath);
             $history->setType('journal');
         }
         $this->em->persist($croppedPendingDownload);
         $this->em->persist($pendingDownload);
         $this->em->persist($history);
         $this->journal->setHeader('imported/' . $headerPath);
     }
     $subjects = $this->importSubjects($languageCode);
     foreach ($subjects as $subject) {
         $this->journal->addSubject($subject);
     }
     // Set publisher
     !empty($this->settings[$languageCode]['publisherInstitution']) ? $this->importAndSetPublisher($this->settings[$languageCode]['publisherInstitution'], $languageCode) : $this->journal->setPublisher($this->getUnknownPublisher($languageCode));
     // Use existing languages or create if needed
     $language = $this->em->getRepository('OjsJournalBundle:Lang')->findOneBy(['code' => $languageCode]);
     $this->journal->setMandatoryLang($language ? $language : $this->createLanguage($languageCode));
     $this->journal->addLanguage($language ? $language : $this->createLanguage($languageCode));
     $this->importContacts($languageCode);
     $this->importSubmissionChecklist($languageCode);
     $this->consoleOutput->writeln("Read journal's settings.");
     $this->em->beginTransaction();
     // Outer transaction
     try {
         $this->em->beginTransaction();
         // Inner transaction
         $this->em->persist($this->journal);
         $this->em->flush();
         $this->em->commit();
     } catch (Exception $exception) {
         $this->em->rollback();
         throw $exception;
     }
     $this->consoleOutput->writeln("Imported journal #" . $id);
     // Those below also create their own inner transactions
     $createdSections = $this->sectionImporter->importJournalSections($id, $this->journal->getId());
     $createdIssues = $this->issueImporter->importJournalIssues($id, $this->journal->getId(), $createdSections);
     $this->articleImporter->importJournalArticles($id, $this->journal->getId(), $createdIssues, $createdSections);
     $this->journalPageImporter->importPages($id, $this->journal->getId());
     $createdBoards = $this->boardImporter->importBoards($id, $this->journal->getId());
     foreach ($createdBoards as $oldBoardId => $newBoardId) {
         $this->boardMemberImporter->importBoardMembers($oldBoardId, $newBoardId);
     }
     $this->importAboutPage();
     $map = new ImportMap($id, $this->journal->getId(), Journal::class);
     $this->em->persist($map);
     $this->em->flush();
     $this->em->commit();
     return ['new' => $this->journal->getId(), 'old' => $id];
 }
Journal