Jeroen De Dauw has submitted this change and it was merged.
Change subject: Make ChangeRow work with new ORMTable.
......................................................................
Make ChangeRow work with new ORMTable.
This is in preparation for core change I86368821.
Note that this change makes ChangeRow work with the
old and new version of ORMTable, so it can and should be
merged before the core change.
Change-Id: I98a67ae7e5473528399954d2750ba82539826e9d
---
M lib/includes/ChangesTable.php
M lib/includes/changes/ChangeRow.php
M lib/includes/changes/DiffChange.php
M lib/includes/changes/EntityChange.php
4 files changed, 32 insertions(+), 5 deletions(-)
Approvals:
Jeroen De Dauw: Verified; Looks good to me, approved
jenkins-bot: Checked
diff --git a/lib/includes/ChangesTable.php b/lib/includes/ChangesTable.php
index 8c8aa58..54291cb 100644
--- a/lib/includes/ChangesTable.php
+++ b/lib/includes/ChangesTable.php
@@ -127,4 +127,26 @@
return new $class( $this, $data, $loadDefaults );
}
+ /**
+ * @see ORMTable::getWriteValues()
+ *
+ * @since 0.4
+ *
+ * @param \IORMRow $row
+ *
+ * @return array
+ */
+ protected function getWriteValues( \IORMRow $row ) {
+ $values = parent::getWriteValues( $row );
+
+ if ( $row instanceof ChangeRow ) {
+ $infoField = $this->getPrefixedField( 'info' );
+
+ if ( isset( $values[$infoField] ) ) {
+ $values[$infoField] = $row->serializeInfo(
$values[$infoField] );
+ }
+ }
+
+ return $values;
+ }
}
diff --git a/lib/includes/changes/ChangeRow.php
b/lib/includes/changes/ChangeRow.php
index 3c243ef..58c05b2 100644
--- a/lib/includes/changes/ChangeRow.php
+++ b/lib/includes/changes/ChangeRow.php
@@ -166,6 +166,9 @@
/**
* @see ORMRow::getWriteValues()
*
+ * @todo: remove this once core no longer uses ORMRow::getWriteValues().
+ * Use ChangesTable::getWriteValues() instead.
+ *
* @since 0.4
*
* @return array
@@ -190,9 +193,10 @@
*
* @param array $info
*
+ * @throws \MWException
* @return string
*/
- protected function serializeInfo( array $info ) {
+ public function serializeInfo( array $info ) {
if ( Settings::get( "changesAsJson" ) === true ) {
// Make sure we never serialize objects.
// This is a lot of overhead, so we only do it during
testing.
@@ -227,7 +231,7 @@
*
* @return array the info array
*/
- protected function unserializeInfo( $str ) {
+ public function unserializeInfo( $str ) {
if ( $str[0] === '{' ) { // json
$info = json_decode( $str, true );
} else {
diff --git a/lib/includes/changes/DiffChange.php
b/lib/includes/changes/DiffChange.php
index c59266c..3a6d46f 100644
--- a/lib/includes/changes/DiffChange.php
+++ b/lib/includes/changes/DiffChange.php
@@ -121,7 +121,7 @@
* @param array $info
* @return string
*/
- protected function serializeInfo( array $info ) {
+ public function serializeInfo( array $info ) {
if ( isset( $info['diff'] ) && $info['diff'] instanceof
\Diff\DiffOp ) {
if ( Settings::get( "changesAsJson" ) === true ) {
/* @var \Diff\DiffOp $op */
@@ -142,7 +142,7 @@
* @param string $str
* @return array the info array
*/
- protected function unserializeInfo( $str ) {
+ public function unserializeInfo( $str ) {
static $factory = null;
if ( $factory == null ) {
diff --git a/lib/includes/changes/EntityChange.php
b/lib/includes/changes/EntityChange.php
index 8059173..c12acc9 100644
--- a/lib/includes/changes/EntityChange.php
+++ b/lib/includes/changes/EntityChange.php
@@ -405,6 +405,7 @@
return $data;
}
+
/**
* @see ChangeRow::serializeInfo()
*
@@ -414,7 +415,7 @@
* @param array $info
* @return string
*/
- protected function serializeInfo( array $info ) {
+ public function serializeInfo( array $info ) {
if ( isset( $info['entity'] ) ) {
// never serialize full entity data in a change, it's
huge.
unset( $info['entity'] );
--
To view, visit https://gerrit.wikimedia.org/r/56384
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I98a67ae7e5473528399954d2750ba82539826e9d
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Jeroen De Dauw <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits