/** * Save book. */ function execute() { $bfrPlugin =& PluginRegistry::getPlugin('generic', $this->parentPluginName); $bfrPlugin->import('classes.BookForReview'); $bfrPlugin->import('classes.BookForReviewAuthor'); $bfrDao =& DAORegistry::getDAO('BookForReviewDAO'); $journal =& Request::getJournal(); $journalId = $journal->getId(); $user =& Request::getUser(); $editorId = $user->getId(); if ($this->book == null) { $book = new BookForReview(); $book->setJournalId($journalId); $book->setEditorId($editorId); $book->setStatus(BFR_STATUS_AVAILABLE); $book->setDateCreated(Core::getCurrentDate()); } else { $book =& $this->book; } $book->setAuthorType($this->getData('authorType')); $book->setPublisher($this->getData('publisher')); $book->setYear($this->getData('year')); $book->setLanguage($this->getData('language')); $book->setCopy($this->getData('copy') == null ? 0 : 1); $book->setUrl($this->getData('url')); $book->setEdition($this->getData('edition') == 0 ? null : $this->getData('edition')); $book->setPages($this->getData('pages') == '' ? null : $this->getData('pages')); $book->setISBN($this->getData('isbn')); $book->setDateDue($this->getData('dateDue')); $book->setUserId($this->getData('userId')); $book->setArticleId($this->getData('articleId')); $book->setNotes($this->getData('notes')); $book->setTitle($this->getData('title'), null); // Localized $book->setDescription($this->getData('description'), null); // Localized $book->setCoverPageAltText($this->getData('coverPageAltText'), null); // Localized // Update authors $authors = $this->getData('authors'); for ($i = 0, $count = count($authors); $i < $count; $i++) { if ($authors[$i]['authorId'] > 0) { // Update an existing author $author =& $book->getAuthor($authors[$i]['authorId']); $isExistingAuthor = true; } else { // Create a new author // PHP4 Requires explicit instantiation-by-reference if (checkPhpVersion('5.0.0')) { $author = new BookForReviewAuthor(); } else { $author =& new BookForReviewAuthor(); } $isExistingAuthor = false; } if ($author != null) { $author->setFirstName($authors[$i]['firstName']); $author->setMiddleName($authors[$i]['middleName']); $author->setLastName($authors[$i]['lastName']); $author->setSequence($authors[$i]['seq']); if ($isExistingAuthor == false) { $book->addAuthor($author); } } } // Remove deleted authors $deletedAuthors = explode(':', $this->getData('deletedAuthors')); for ($i = 0, $count = count($deletedAuthors); $i < $count; $i++) { $book->removeAuthor($deletedAuthors[$i]); } // Insert or update book for review if ($book->getId() == null) { $bfrDao->insertObject($book); } else { $bfrDao->updateObject($book); } // Handle book for review cover image import('classes.file.PublicFileManager'); $publicFileManager = new PublicFileManager(); $formLocale = $this->getFormLocale(); if ($publicFileManager->uploadedFileExists(BFR_COVER_PAGE_IMAGE_NAME)) { $originalFileName = $publicFileManager->getUploadedFileName(BFR_COVER_PAGE_IMAGE_NAME); $type = $publicFileManager->getUploadedFileType(BFR_COVER_PAGE_IMAGE_NAME); $newFileName = 'cover_bfr_' . $book->getId() . '_' . $formLocale . $publicFileManager->getImageExtension($type); $publicFileManager->uploadJournalFile($journalId, BFR_COVER_PAGE_IMAGE_NAME, $newFileName); $book->setOriginalFileName($publicFileManager->truncateFileName($originalFileName, 127), $formLocale); $book->setFileName($newFileName, $formLocale); // Store the image dimensions list($width, $height) = getimagesize($publicFileManager->getJournalFilesPath($journalId) . '/' . $newFileName); $book->setWidth($width, $formLocale); $book->setHeight($height, $formLocale); $bfrDao->updateObject($book); } }