openrat-cms

OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs

commit a1eda96bc07b26b56d68c31e6b9e63fc96a8808f
parent 7d6e297bae244b6a21cd1f6661d8617432d2ad7e
Author: Jan Dankert <develop@jandankert.de>
Date:   Tue, 29 Sep 2020 23:28:38 +0200

Fix: Only warn, if another (!) user has changed a edited value.

Diffstat:
modules/cms/action/PageelementAction.class.php | 9++++-----
modules/cms/model/Pageelement.class.php | 5+++++
modules/cms/model/Value.class.php | 35++++++++++++++++++++++++++++++++---
3 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/modules/cms/action/PageelementAction.class.php b/modules/cms/action/PageelementAction.class.php @@ -2,6 +2,7 @@ namespace cms\action; +use cms\base\Language as L; use cms\generator\PageContext; use cms\generator\PageGenerator; use cms\generator\Producer; @@ -914,11 +915,9 @@ class PageelementAction extends BaseAction $value->publish = false; // Up-To-Date-Check - $lastChangeTime = $value->getLastChangeTime(); - if ( $lastChangeTime > $this->getRequestVar('value_time') ) - { - $this->addNotice('pageelement',$value->element->name,'CONCURRENT_VALUE_CHANGE',Action::NOTICE_WARN,array('last_change_time'=>date(\cms\base\Language::lang('DATE_FORMAT'),$lastChangeTime))); - } + $lastChangeTime = $value->getLastChangeSinceByAnotherUser( $this->getRequestVar('value_time'), Session::getUser()->userid ); + if ( $lastChangeTime ) + $this->addWarningFor( $this->value,Messages::CONCURRENT_VALUE_CHANGE, array('last_change_time'=>date(L::lang('DATE_FORMAT'),$lastChangeTime))); // Inhalt speichern diff --git a/modules/cms/model/Pageelement.class.php b/modules/cms/model/Pageelement.class.php @@ -51,5 +51,10 @@ class Pageelement extends ModelBase $e->load(); return $e->getName(); } + + public function delete() + { + + } } diff --git a/modules/cms/model/Value.class.php b/modules/cms/model/Value.class.php @@ -361,9 +361,38 @@ SQL return $sql->getOne(); } - - - + + + /** + * Gets the last change date by another user since a specific date. + * @param $date + * @param $userid + * @return String + */ + public function getLastChangeSinceByAnotherUser( $date, $userid ) + { + $sql = Db::sql( +<<<SQL + SELECT lastchange_date FROM {{value}} + WHERE elementid ={elementid} + AND pageid ={pageid} + AND languageid={languageid} + AND lastchange_date > {date} + AND lastchange_userid != {userid} + ORDER BY id DESC +SQL + ); + $sql->setInt( 'elementid' ,$this->element->elementid ); + $sql->setInt( 'pageid' ,$this->pageid ); + $sql->setInt( 'languageid',$this->languageid); + $sql->setInt( 'date' ,$date ); + $sql->setInt( 'userid' ,$userid); + + return $sql->getOne(); + } + + + /** * Inhalt freigeben */