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:
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
*/