Inheritance: extends PKPFile
Example #1
0
 /**
  * Internal function to return an IssueFile object from a row.
  * @param $row array
  * @return IssueFile
  */
 function &_returnIssueFileFromRow(&$row)
 {
     $issueFile = new IssueFile();
     $issueFile->setId($row['file_id']);
     $issueFile->setIssueId($row['issue_id']);
     $issueFile->setFileName($row['file_name']);
     $issueFile->setFileType($row['file_type']);
     $issueFile->setFileSize($row['file_size']);
     $issueFile->setContentType($row['content_type']);
     $issueFile->setOriginalFileName($row['original_file_name']);
     $issueFile->setDateUploaded($this->datetimeFromDB($row['date_uploaded']));
     $issueFile->setDateModified($this->datetimeFromDB($row['date_modified']));
     HookRegistry::call('IssueFileDAO::_returnIssueFileFromRow', array(&$issueFile, &$row));
     return $issueFile;
 }
Example #2
0
 /**
  * Constructor.
  */
 function IssueGalley()
 {
     parent::IssueFile();
 }
 function importIssues()
 {
     assert($this->xml->name == 'issues');
     $issueDAO =& DAORegistry::getDAO('IssueDAO');
     $issueFileDAO =& DAORegistry::getDAO('IssueFileDAO');
     $issueGalleyDAO =& DAORegistry::getDAO('IssueGalleyDAO');
     $sectionDAO =& DAORegistry::getDAO('SectionDAO');
     $issues = $issueDAO->getIssues($this->journal->getId());
     $publicFileManager =& new PublicFileManager();
     $this->nextElement();
     while ($this->xml->name == 'issue') {
         $issueXML = $this->getCurrentElementAsDom();
         $issue = new Issue();
         $issue->setJournalId($this->journal->getId());
         $issue->setVolume((int) $issueXML->volume);
         $issue->setNumber((string) $issueXML->number);
         $issue->setYear((int) $issueXML->year);
         $issue->setPublished((int) $issueXML->published);
         $issue->setCurrent((int) $issueXML->current);
         $issue->setDatePublished((string) $issueXML->datePublished);
         $issue->setDateNotified((string) $issueXML->dateNotified);
         $issue->setLastModified((string) $issueXML->lastModified);
         $issue->setAccessStatus((int) $issueXML->accessStatus);
         $issue->setOpenAccessDate((string) $issueXML->openAccessDate);
         $issue->setShowVolume((int) $issueXML->showVolume);
         $issue->setShowNumber((int) $issueXML->showNumber);
         $issue->setShowYear((int) $issueXML->showYear);
         $issue->setShowTitle((int) $issueXML->showTitle);
         $issue->setStyleFileName((string) $issueXML->styleFileName);
         $issue->setOriginalStyleFileName((string) $issueXML->originalStyleFileName);
         $oldIssueId = (int) $issueXML->oldId;
         $issueDAO->insertIssue($issue);
         //$issueDAO->insertCustomIssueOrder($this->journal->getId(), $issue->getId(), (int)$issueXML->customOrder);
         $this->idTranslationTable->register(INTERNAL_TRANSFER_OBJECT_ISSUE, $oldIssueId, $issue->getId());
         $this->restoreDataObjectSettings($issueDAO, $issueXML->settings, 'issue_settings', 'issue_id', $issue->getId());
         $issue =& $issueDAO->getIssueById($issue->getId());
         // Reload issue to get restored settings
         $covers = $issue->getFileName(null);
         if ($covers) {
             foreach ($covers as $locale => $oldCoverFileName) {
                 $sourceFile = $this->publicFolderPath . '/' . $oldCoverFileName;
                 $extension = $publicFileManager->getExtension($oldCoverFileName);
                 $destFile = 'cover_issue_' . $issue->getId() . "_{$locale}.{$extension}";
                 $publicFileManager->copyJournalFile($this->journal->getId(), $sourceFile, $destFile);
                 unlink($sourceFile);
                 $issue->setFileName($destFile, $locale);
                 $issueDAO->updateIssue($issue);
             }
         }
         if ($issue->getStyleFileName()) {
             $oldStyleFileName = $issue->getStyleFileName();
             $sourceFile = $this->publicFolderPath . '/' . $oldStyleFileName;
             $destFile = 'style_' . $issue->getId() . '.css';
             $publicFileManager->copyJournalFile($this->journal->getId(), $sourceFile, $destFile);
             unlink($sourceFile);
             $issue->setStyleFileName($destFile);
             $issueDAO->updateIssue($issue);
         }
         $issueFileManager = new IssueFileManager($issue->getId());
         foreach ($issueXML->issueFile as $issueFileXML) {
             $issueFile = new IssueFile();
             $issueFile->setIssueId($issue->getId());
             $issueFile->setFileName((string) $issueFileXML->fileName);
             $issueFile->setFileType((string) $issueFileXML->fileType);
             $issueFile->setFileSize((int) $issueFileXML->fileSize);
             $issueFile->setContentType((string) $issueFileXML->contentType);
             $issueFile->setOriginalFileName((string) $issueFileXML->originalFileName);
             $issueFile->setDateUploaded((string) $issueFileXML->dateUploaded);
             $issueFile->setDateModified((string) $issueFileXML->dateModified);
             $issueFileDAO->insertIssueFile($issueFile);
             $oldFileName = $issueFile->getFileName();
             $extension = $issueFileManager->parseFileExtension($oldFileName);
             $contentPath = $issueFileManager->contentTypeToPath($issueFile->getContentType());
             $contentAbbrev = $issueFileManager->contentTypeToAbbrev($issueFile->getContentType());
             $fileInTransferPackage = $this->journalFolderPath . "/issues/{$oldIssueId}/{$contentPath}/{$oldFileName}";
             $newFileName = $issue->getId() . '-' . $issueFile->getId() . '-' . $contentAbbrev . '.' . $extension;
             $newFilePath = "{$contentPath}/{$newFileName}";
             $issueFileManager->copyFile($fileInTransferPackage, $issueFileManager->getFilesDir() . $newFilePath);
             unlink($fileInTransferPackage);
             $issueFile->setFileName($newFileName);
             $issueFileDAO->updateIssueFile($issueFile);
             $this->idTranslationTable->register(INTERNAL_TRANSFER_OBJECT_ISSUE_FILE, (int) $issueFileXML->oldId, $issueFile->getId());
         }
         foreach ($issueXML->issueGalley as $issueGalleyXML) {
             $issueGalley = new issueGalley();
             $issueGalley->setIssueId($issue->getId());
             $issueGalley->setLocale((string) $issueGalleyXML->locale);
             $issueGalley->setFileId($this->idTranslationTable->resolve(INTERNAL_TRANSFER_OBJECT_ISSUE_FILE, (int) $issueGalleyXML->fileId));
             $issueGalley->setLabel((string) $issueGalleyXML->label);
             $issueGalley->setSequence((int) $issueGalleyXML->sequence);
             $issueGalleyDAO->insertGalley($issueGalley);
             $this->idTranslationTable->register(INTERNAL_TRANSFER_OBJECT_ISSUE_GALLEY, (int) $issueGalleyXML->oldId, $issueGalley->getId());
             $this->restoreDataObjectSettings($issueGalleyDAO, $issueGalleyXML->settings, 'issue_galley_settings', 'galley_id', $issueGalley->getId());
         }
         if (isset($issueXML->customSectionOrder)) {
             foreach ($issueXML->customSectionOrder->sectionOrder as $sectionOrderXML) {
                 try {
                     $sectionId = $this->idTranslationTable->resolve(INTERNAL_TRANSFER_OBJECT_SECTION, (int) $sectionOrderXML['sectionId']);
                     $seq = (int) $sectionOrderXML['seq'];
                     $sectionDAO->insertCustomSectionOrder($issue->getId(), $sectionId, $seq);
                 } catch (Exception $e) {
                 }
             }
         }
         $this->nextElement();
     }
 }
 /**
  * PRIVATE routine to upload the file and add it to the database.
  * @param $fileName string index into the $_FILES array
  * @param $contentType int Issue file content type
  * @param $fileId int ID of an existing file to update
  * @param $overwrite boolean overwrite previous version of the file
  * @return int the file ID
  */
 function _handleUpload($fileName, $contentType, $fileId = null, $overwrite = false)
 {
     if (HookRegistry::call('IssueFileManager::_handleUpload', array(&$fileName, &$contentType, &$fileId, &$overwrite, &$result))) {
         return $result;
     }
     $issueId = $this->getIssueId();
     $issueFileDao =& DAORegistry::getDAO('IssueFileDAO');
     $contentTypePath = $this->contentTypeToPath($contentType);
     $dir = $this->getFilesDir() . $contentTypePath . '/';
     $issueFile = new IssueFile();
     $issueFile->setIssueId($issueId);
     $issueFile->setDateUploaded(Core::getCurrentDate());
     $issueFile->setDateModified(Core::getCurrentDate());
     $issueFile->setFileName('');
     $issueFile->setFileType($this->getUploadedFileType($fileName));
     $issueFile->setFileSize($_FILES[$fileName]['size']);
     $issueFile->setOriginalFileName($this->truncateFileName($_FILES[$fileName]['name'], 127));
     $issueFile->setContentType($contentType);
     // If this is a new issue file, add it to the db and get it's new file id
     if (!$fileId) {
         if (!$issueFileDao->insertIssueFile($issueFile)) {
             return false;
         }
     } else {
         $issueFile->setId($fileId);
     }
     $extension = $this->parseFileExtension($this->getUploadedFileName($fileName));
     $newFileName = $issueFile->getIssueId() . '-' . $issueFile->getId() . '-' . $this->contentTypeToAbbrev($contentType) . '.' . $extension;
     $issueFile->setFileName($newFileName);
     // Upload the actual file
     if (!$this->uploadFile($fileName, $dir . $newFileName)) {
         // Upload failed. If this is a new file, remove newly added db record.
         if (!$fileId) {
             $issueFileDao->deleteIssueFileById($issueFile->getId());
         }
         return false;
     }
     // Upload succeeded. Update issue file record with new filename.
     $issueFileDao->updateIssueFile($issueFile);
     return $issueFile->getId();
 }
Example #5
0
 public function actionFile($id)
 {
     $id = (int) $id;
     $model = IssueFile::model()->findByPk($id);
     if (!$model) {
         throw new CHttpException(404, Yii::t('site', 'Page not found'));
     }
     $available_mime = Yii::app()->params['mime_fileview'];
     $available_mime_microsoft = Yii::app()->params['mime_fileview_microsoft'];
     $filename = $model->filename;
     $realname = $model->realname;
     $uploadPath = $model->issue->getFileFolder();
     if (file_exists($uploadPath . $filename)) {
         $type = CFileHelper::getMimeType($uploadPath . $filename);
         // get yii framework mime
         if (in_array($type, $available_mime) || in_array($type, $available_mime_microsoft)) {
             //.. get the content of the requested file
             $content = file_get_contents($uploadPath . $filename);
             //.. send appropriate headers
             header('Content-Type:' . $type);
             header("Content-Length: " . filesize($uploadPath . $filename));
             header('Content-Disposition: inline; filename="' . $realname . '"');
             header('Content-Transfer-Encoding: binary');
             header('Accept-Ranges: bytes');
             echo $content;
             exit;
         } else {
             Yii::app()->getRequest()->sendFile($realname, file_get_contents($uploadPath . $filename));
         }
     } else {
         throw new CHttpException(404, Yii::t('site', 'Page not found'));
     }
 }
Example #6
0
 /**
  * Constructor.
  */
 function __construct()
 {
     parent::__construct();
 }
Example #7
0
 public function actionDeleteFile($id)
 {
     if (IssueFile::model()->deleteByPk($id)) {
         echo "Ajax Success";
         Yii::app()->end();
     }
 }