HOME


Mini Shell 1.0
DIR: /home/dhnidqcz/journal.pragmaticsng.org/classes__47455f6/issue/
Upload File :
Current File : /home/dhnidqcz/journal.pragmaticsng.org/classes__47455f6/issue/IssueFileDAO.php
<?php

/**
 * @file classes/issue/IssueFileDAO.php
 *
 * Copyright (c) 2014-2021 Simon Fraser University
 * Copyright (c) 2003-2021 John Willinsky
 * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
 *
 * @class IssueFileDAO
 *
 * @ingroup issue
 *
 * @see IssueFile
 *
 * @brief Operations for retrieving and modifying IssueFile objects.
 */

namespace APP\issue;

use PKP\db\DAO;
use PKP\plugins\Hook;

class IssueFileDAO extends DAO
{
    /** @var array MIME types that can be displayed inline in a browser */
    public $_inlineableTypes = null;


    /**
     * Get inlineable file types.
     *
     * @return array
     */
    public function getInlineableTypes()
    {
        return $this->_inlineableTypes;
    }

    /**
     * Set inlineable file types.
     *
     * @param array $inlineableTypes
     */
    public function setInlineableTypes($inlineableTypes)
    {
        $this->_inlineableTypes = $inlineableTypes;
    }

    /**
     * Retrieve an issue file by ID.
     *
     * @param int $fileId
     * @param int $issueId optional
     *
     * @return IssueFile
     */
    public function getById($fileId, $issueId = null)
    {
        $params = [(int) $fileId];
        if ($issueId) {
            $params[] = (int) $issueId;
        }
        $result = $this->retrieve(
            'SELECT f.*
			FROM	issue_files f
			WHERE	f.file_id = ?
				' . ($issueId ? ' AND f.issue_id = ?' : ''),
            $params
        );
        $row = $result->current();
        return $row ? $this->_fromRow((array) $row) : null;
    }

    /**
     * Construct a new IssueFile data object.
     *
     * @return IssueFile
     */
    public function newDataObject()
    {
        return new IssueFile();
    }

    /**
     * Internal function to return an IssueFile object from a row.
     *
     * @param array $row
     *
     * @return IssueFile
     */
    public function _fromRow($row)
    {
        $issueFile = $this->newDataObject();
        $issueFile->setId($row['file_id']);
        $issueFile->setIssueId($row['issue_id']);
        $issueFile->setServerFileName($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']));
        Hook::call('IssueFileDAO::_returnIssueFileFromRow', [&$issueFile, &$row]);
        return $issueFile;
    }

    /**
     * Insert a new IssueFile.
     *
     * @param IssueFile $issueFile
     *
     * @return int
     */
    public function insertObject($issueFile)
    {
        $this->update(
            sprintf(
                'INSERT INTO issue_files
					(issue_id,
					file_name,
					file_type,
					file_size,
					content_type,
					original_file_name,
					date_uploaded,
					date_modified)
				VALUES
					(?, ?, ?, ?, ?, ?, %s, %s)',
                $this->datetimeToDB($issueFile->getDateUploaded()),
                $this->datetimeToDB($issueFile->getDateModified())
            ),
            [
                (int) $issueFile->getIssueId(),
                $issueFile->getServerFileName(),
                $issueFile->getFileType(),
                $issueFile->getFileSize(),
                $issueFile->getContentType(),
                $issueFile->getOriginalFileName()
            ]
        );

        $issueFile->setId($this->getInsertId());
        return $issueFile->getId();
    }

    /**
     * Update an existing issue file.
     */
    public function updateObject($issueFile)
    {
        $this->update(
            sprintf(
                'UPDATE issue_files
				SET
					issue_id = ?,
					file_name = ?,
					file_type = ?,
					file_size = ?,
					content_type = ?,
					original_file_name = ?,
					date_uploaded = %s,
					date_modified = %s
				WHERE file_id = ?',
                $this->datetimeToDB($issueFile->getDateUploaded()),
                $this->datetimeToDB($issueFile->getDateModified())
            ),
            [
                (int) $issueFile->getIssueId(),
                $issueFile->getServerFileName(),
                $issueFile->getFileType(),
                $issueFile->getFileSize(),
                $issueFile->getContentType(),
                $issueFile->getOriginalFileName(),
                (int) $issueFile->getId()
            ]
        );

        return $issueFile->getId();
    }

    /**
     * Delete an issue file.
     */
    public function deleteObject($issueFile)
    {
        $this->deleteById($issueFile->getId());
    }

    /**
     * Delete an issue file by ID.
     */
    public function deleteById($fileId)
    {
        $this->update('DELETE FROM issue_files WHERE file_id = ?', [(int) $fileId]);
    }

    /**
     * Delete all issue files for an issue.
     *
     * @param int $issueId
     */
    public function deleteByIssueId($issueId)
    {
        $this->update('DELETE FROM issue_files WHERE issue_id = ?', [(int) $issueId]);
    }
}

if (!PKP_STRICT_MODE) {
    class_alias('\APP\issue\IssueFileDAO', '\IssueFileDAO');
}