IssueGalleyForm::execute PHP Method

execute() public method

Save changes to the galley.
public execute ( $request ) : integer
$request PKPRequest
return integer the galley ID
    function execute($request)
    {
        import('classes.file.IssueFileManager');
        $issueFileManager = new IssueFileManager($this->_issue->getId());
        $journal = $request->getJournal();
        $user = $request->getUser();
        $issueGalley = $this->_issueGalley;
        $issueGalleyDao = DAORegistry::getDAO('IssueGalleyDAO');
        // If a temporary file ID was specified (i.e. an upload occurred), get the file for later.
        $temporaryFileDao = DAORegistry::getDAO('TemporaryFileDAO');
        $temporaryFile = $temporaryFileDao->getTemporaryFile($this->getData('temporaryFileId'), $user->getId());
        if ($issueGalley) {
            // Update an existing galley
            if ($temporaryFile) {
                // Galley has a file, delete it before uploading new one
                if ($issueGalley->getFileId()) {
                    $issueFileManager->deleteFile($issueGalley->getFileId());
                }
                // Upload new file
                $issueFile = $issueFileManager->fromTemporaryFile($temporaryFile);
                $issueGalley->setFileId($issueFile->getFileId());
            }
            $issueGalley->setLabel($this->getData('label'));
            $issueGalley->setStoredPubId('publisher-id', $this->getData('publicGalleyId'));
            $issueGalley->setLocale($this->getData('galleyLocale'));
            // Update galley in the db
            $issueGalleyDao->updateObject($issueGalley);
        } else {
            // Create a new galley
            $issueGalleyFile = $issueFileManager->fromTemporaryFile($temporaryFile);
            $issueGalley = $issueGalleyDao->newDataObject();
            $issueGalley->setIssueId($this->_issue->getId());
            $issueGalley->setFileId($issueGalleyFile->getId());
            if ($this->getData('label') == null) {
                // Generate initial label based on file type
                if (isset($fileType)) {
                    if (strstr($fileType, 'pdf')) {
                        $issueGalley->setLabel('PDF');
                    } else {
                        if (strstr($fileType, 'postscript')) {
                            $issueGalley->setLabel('PostScript');
                        } else {
                            if (strstr($fileType, 'xml')) {
                                $issueGalley->setLabel('XML');
                            }
                        }
                    }
                }
                if ($issueGalley->getLabel() == null) {
                    $issueGalley->setLabel(__('common.untitled'));
                }
            } else {
                $issueGalley->setLabel($this->getData('label'));
            }
            $issueGalley->setLocale($this->getData('galleyLocale'));
            $issueGalley->setStoredPubId('publisher-id', $this->getData('publicGalleyId'));
            // Insert new galley into the db
            $issueGalleyDao->insertObject($issueGalley);
            $this->_issueGalley = $issueGalley;
        }
        return $this->_issueGalley->getId();
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Update a issue
  * @param $args array
  * @param $request PKPRequest
  * @return JSONMessage JSON object
  */
 function update($args, $request)
 {
     $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE);
     $issueGalley = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE_GALLEY);
     import('controllers.grid.issues.form.IssueGalleyForm');
     $issueGalleyForm = new IssueGalleyForm($request, $issue, $issueGalley);
     $issueGalleyForm->readInputData();
     if ($issueGalleyForm->validate($request)) {
         $issueId = $issueGalleyForm->execute($request);
         return DAO::getDataChangedEvent($issueId);
     } else {
         return new JSONMessage(false);
     }
 }
All Usage Examples Of IssueGalleyForm::execute