Write a file to a journals's public directory.
public writeJournalFile ( $journalId, $destFileName, $contents ) : boolean | ||
$journalId | int | |
$destFileName | string the destination file name | |
$contents | string the contents to write to the file | |
return | boolean |
function handleArticleCoverNode(&$journal, &$coverNode, &$article, &$errors, $isCommandLine) { $errors = array(); $hasErrors = false; $journalSupportedLocales = array_keys($journal->getSupportedLocaleNames()); // => journal locales must be set up before $journalPrimaryLocale = $journal->getPrimaryLocale(); $locale = $coverNode->getAttribute('locale'); if ($locale == '') { $locale = $journalPrimaryLocale; } elseif (!in_array($locale, $journalSupportedLocales)) { $errors[] = array('plugins.importexport.native.import.error.coverLocaleUnsupported', array('issueTitle' => $issue->getIssueIdentification(), 'locale' => $locale)); return false; } $article->setShowCoverPage(1, $locale); if ($node = $coverNode->getChildByName('altText')) { $article->setCoverPageAltText($node->getValue(), $locale); } if ($node = $coverNode->getChildByName('image')) { import('classes.file.PublicFileManager'); $publicFileManager = new PublicFileManager(); $newName = 'cover_article_' . $article->getId() . "_{$locale}" . '.'; if ($href = $node->getChildByName('href')) { $url = $href->getAttribute('src'); if ($isCommandLine || NativeImportDom::isAllowedMethod($url)) { if ($isCommandLine && NativeImportDom::isRelativePath($url)) { // The command-line tool does a chdir; we need to prepend the original pathname to relative paths so we're not looking in the wrong place. $url = PWD . '/' . $url; } $originalName = basename($url); $newName .= $publicFileManager->getExtension($originalName); if (!$publicFileManager->copyJournalFile($journal->getId(), $url, $newName)) { $errors[] = array('plugins.importexport.native.import.error.couldNotCopy', array('url' => $url)); $hasErrors = true; } $article->setFileName($newName, $locale); $article->setOriginalFileName($publicFileManager->truncateFileName($originalName, 127), $locale); } } if ($embed = $node->getChildByName('embed')) { if (($type = $embed->getAttribute('encoding')) !== 'base64') { $errors[] = array('plugins.importexport.native.import.error.unknownEncoding', array('type' => $type)); $hasErrors = true; } else { $originalName = $embed->getAttribute('filename'); $newName .= $publicFileManager->getExtension($originalName); $article->setFileName($newName, $locale); $article->setOriginalFileName($publicFileManager->truncateFileName($originalName, 127), $locale); if ($publicFileManager->writeJournalFile($journal->getId(), $newName, base64_decode($embed->getValue())) === false) { $errors[] = array('plugins.importexport.native.import.error.couldNotWriteFile', array('originalName' => $originalName)); $hasErrors = true; } } } // Store the image dimensions. list($width, $height) = getimagesize($publicFileManager->getJournalFilesPath($journal->getId()) . '/' . $newName); $article->setWidth($width, $locale); $article->setHeight($height, $locale); } if ($hasErrors) { return false; } return true; }
/** * Save settings. */ function execute() { $plugin =& $this->plugin; $journalId = $this->journalId; $css = ''; // Header and footer colours $customThemeHeaderColour = $this->getData('customThemeHeaderColour'); $plugin->updateSetting($journalId, 'customThemeHeaderColour', $customThemeHeaderColour, 'string'); $css .= "#header {background-color: {$customThemeHeaderColour};}\n"; $css .= "#footer {background-color: {$customThemeHeaderColour};}\n"; $css .= "table.listing tr.fastTracked {background-color: {$customThemeHeaderColour};}\n"; // Link colours $customThemeLinkColour = $this->getData('customThemeLinkColour'); $plugin->updateSetting($journalId, 'customThemeLinkColour', $customThemeLinkColour, 'string'); $css .= "a {color: {$customThemeLinkColour};}\n"; $css .= "a:link {color: {$customThemeLinkColour};}\n"; $css .= "a:active {color: {$customThemeLinkColour};}\n"; $css .= "a:visited {color: {$customThemeLinkColour};}\n"; $css .= "a:hover {color: {$customThemeLinkColour};}\n"; $css .= "input.defaultButton {color: {$customThemeLinkColour};}\n"; // Background colours $customThemeBackgroundColour = $this->getData('customThemeBackgroundColour'); $plugin->updateSetting($journalId, 'customThemeBackgroundColour', $customThemeBackgroundColour, 'string'); $css .= "body {background-color: {$customThemeBackgroundColour};}\n"; $css .= "input.defaultButton {background-color: {$customThemeBackgroundColour};}\n"; // Foreground colours $customThemeForegroundColour = $this->getData('customThemeForegroundColour'); $plugin->updateSetting($journalId, 'customThemeForegroundColour', $customThemeForegroundColour, 'string'); $css .= "body {color: {$customThemeForegroundColour};}\n"; $css .= "input.defaultButton {color: {$customThemeForegroundColour};}\n"; import('classes.file.PublicFileManager'); $fileManager = new PublicFileManager(); $customThemePerJournal = $this->getData('customThemePerJournal'); if (!$customThemePerJournal && !$this->_canUsePluginPath()) { $customThemePerJournal = true; } $plugin->updateSetting($journalId, 'customThemePerJournal', $customThemePerJournal, 'boolean'); if ($customThemePerJournal) { $fileManager->writeJournalFile($journalId, $this->plugin->getStylesheetFilename(), $css); } else { $fileManager->writeFile(dirname(__FILE__) . '/' . $this->plugin->getStylesheetFilename(), $css); } }