openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 8f7d857c67fbe8604c289e5f8af8e3282db9e730
parent 04321b97cda1748a07807794a33d9e61fa3227c9
Author: dankert <openrat@jandankert.de>
Date:   Fri, 11 Mar 2022 12:26:33 +0100

Fix: Catch error if something happens while publishing.

Diffstat:
Mmodules/cms/action/PageelementAction.class.php | 12+++++++++---
Mmodules/cms/action/file/FilePubAction.class.php | 13++++++++++---
Mmodules/cms/action/folder/FolderPubAction.class.php | 9++++++++-
Mmodules/cms/action/page/PageAllAction.class.php | 8+++++++-
Mmodules/cms/action/page/PagePubAction.class.php | 21+++++++++++++--------
Mmodules/cms/action/template/TemplatePubAction.class.php | 11++++++++---
Mmodules/cms/generator/target/LocalTarget.class.php | 4+++-
7 files changed, 58 insertions(+), 20 deletions(-)

diff --git a/modules/cms/action/PageelementAction.class.php b/modules/cms/action/PageelementAction.class.php @@ -26,6 +26,7 @@ use language\Messages; use LogicException; use util\ArrayUtils; use util\exception\ObjectNotFoundException; +use util\exception\PublisherException; use util\exception\SecurityException; use util\exception\ValidationException; use util\Html; @@ -613,10 +614,15 @@ class PageelementAction extends BaseAction } } - $publisher->publish(); + try { + $publisher->publish(); - $this->addNoticeFor( $this->value,Messages::PUBLISHED,[], - implode("\n",$publisher->getDestinationFilenames() ) ); + $this->addNoticeFor( $this->value,Messages::PUBLISHED,[], + implode("\n",$publisher->getDestinationFilenames() ) ); + + } catch( PublisherException $e ) { + $this->addErrorFor( $this->value,Messages::PUBLISHED_ERROR,[],$e->getMessage() ); + } } diff --git a/modules/cms/action/file/FilePubAction.class.php b/modules/cms/action/file/FilePubAction.class.php @@ -8,6 +8,8 @@ use cms\generator\Producer; use cms\generator\Publisher; use cms\generator\PublishOrder; use cms\model\Permission; +use language\Messages; +use util\exception\PublisherException; class FilePubAction extends FileAction implements Method { public function getRequiredPermission() { @@ -21,9 +23,14 @@ class FilePubAction extends FileAction implements Method { $publisher = new Publisher( $this->file->projectid ); $publisher->addOrderForPublishing( new PublishOrder( $fileGenerator->getCache()->load()->getFilename(),$fileGenerator->getPublicFilename(),$this->file->lastchangeDate) ); - $publisher->publish(); - $this->file->setPublishedTimestamp(); - $this->addNoticeFor($this->file,'PUBLISHED',[],'Published items:'."\n".implode("\n",$publisher->getDestinationFilenames()) ); + try { + $publisher->publish(); + $this->file->setPublishedTimestamp(); + $this->addNoticeFor($this->file,'PUBLISHED',[],'Published items:'."\n".implode("\n",$publisher->getDestinationFilenames()) ); + } catch( PublisherException $e ) { + $this->addErrorFor( $this->file,Messages::PUBLISHED_ERROR,[],$e->getMessage() ); + } + } } diff --git a/modules/cms/action/folder/FolderPubAction.class.php b/modules/cms/action/folder/FolderPubAction.class.php @@ -16,6 +16,7 @@ use cms\model\Permission; use cms\model\Folder; use cms\model\Template; use language\Messages; +use util\exception\PublisherException; use util\Session; @@ -110,7 +111,13 @@ class FolderPubAction extends FolderAction implements Method { } } - $publisher->publish(); + try { + $publisher->publish(); + $this->folder->setPublishedTimestamp(); + + } catch( PublisherException $e ) { + $this->addErrorFor( $this->folder,Messages::PUBLISHED_ERROR,[],$e->getMessage() ); + } } diff --git a/modules/cms/action/page/PageAllAction.class.php b/modules/cms/action/page/PageAllAction.class.php @@ -20,6 +20,7 @@ use cms\model\Permission; use cms\model\Project; use cms\model\Value; use language\Messages; +use util\exception\PublisherException; use util\exception\SecurityException; use util\exception\ValidationException; use util\Session; @@ -360,7 +361,12 @@ class PageAllAction extends PageAction implements Method { $publisher->addOrderForPublishing( new PublishOrder( $pageGenerator->getCache()->load()->getFilename(),$pageGenerator->getPublicFilename(), $this->page->lastchangeDate ) ); } - $publisher->publish(); + try { + $publisher->publish(); + } catch( PublisherException $e ) { + $this->addErrorFor( $this->page,Messages::PUBLISHED_ERROR,[],$e->getMessage() ); + } + $this->page->setPublishedTimestamp(); $this->addNoticeFor( $this->page,Messages::PUBLISHED,[], diff --git a/modules/cms/action/page/PagePubAction.class.php b/modules/cms/action/page/PagePubAction.class.php @@ -11,6 +11,7 @@ use cms\model\Page; use cms\model\Permission; use cms\model\Template; use language\Messages; +use util\exception\PublisherException; use util\Session; class PagePubAction extends PageAction implements Method { @@ -55,13 +56,17 @@ class PagePubAction extends PageAction implements Method { } } - $publisher->publish(); - $this->page->setPublishedTimestamp(); - - $this->addNoticeFor( $this->page, - 'PUBLISHED', - array(), - implode("\n",$publisher->getDestinationFilenames() ) - ); + try { + $publisher->publish(); + $this->page->setPublishedTimestamp(); + + $this->addNoticeFor( $this->page, + 'PUBLISHED', + array(), + implode("\n",$publisher->getDestinationFilenames() ) + ); + } catch( PublisherException $e ) { + $this->addErrorFor( $this->page,Messages::PUBLISHED_ERROR,[],$e->getMessage() ); + } } } diff --git a/modules/cms/action/template/TemplatePubAction.class.php b/modules/cms/action/template/TemplatePubAction.class.php @@ -11,6 +11,7 @@ use cms\model\Permission; use cms\model\Page; use cms\model\Project; use language\Messages; +use util\exception\PublisherException; use util\Session; @@ -50,9 +51,13 @@ class TemplatePubAction extends TemplateAction implements Method { } } - $publisher->publish(); + try { + $publisher->publish(); - $this->addNoticeFor( $this->template,Messages::PUBLISHED,[], - implode("\n",$publisher->getDestinationFilenames() ) ); + $this->addNoticeFor( $this->template,Messages::PUBLISHED,[], + implode("\n",$publisher->getDestinationFilenames() ) ); + } catch( PublisherException $e ) { + $this->addErrorFor( $this->template,Messages::PUBLISHED_ERROR,[],$e->getMessage() ); + } } } diff --git a/modules/cms/generator/target/LocalTarget.class.php b/modules/cms/generator/target/LocalTarget.class.php @@ -68,12 +68,14 @@ class LocalTarget extends BaseTarget * * @param String Quelle * @param String Ziel + * @throws PublisherException */ public function put($source, $dest, $lastChangeDate) { // Is the output directory existent? if ( !is_dir( $this->localDestinationDirectory ) ) - mkdir( $this->localDestinationDirectory ); // try to create this directory. + if ( ! @mkdir( $this->localDestinationDirectory ) ) + throw new PublisherException('cannot create directory: ' . $this->localDestinationDirectory); // Is the output directory writable? if ( !is_writeable( $this->localDestinationDirectory ) )