Filip has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/328494 )
Change subject: Added Main page unassign after deteling newsletter
......................................................................
Added Main page unassign after deteling newsletter
Main page's are now unassigned after newsletter deletion.
Bug: T153690
Change-Id: I3ce5df266e2b1edfd571a0708c72a25881b71578
---
M Newsletter.hooks.php
M i18n/en.json
M i18n/qqq.json
M includes/NewsletterDb.php
M includes/NewsletterEditPage.php
M includes/NewsletterStore.php
M includes/specials/SpecialNewsletterCreate.php
A maintenance/deleteUniqueIndex.php
M sql/nl_newsletters.sql
9 files changed, 50 insertions(+), 10 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Newsletter
refs/changes/94/328494/1
diff --git a/Newsletter.hooks.php b/Newsletter.hooks.php
index 79da03f..2d7e22d 100755
--- a/Newsletter.hooks.php
+++ b/Newsletter.hooks.php
@@ -222,7 +222,15 @@
if ( !$newsletter->canRestore( $user ) ) {
throw new PermissionsError(
'newsletter-restore' );
}
- $success =
NewsletterStore::getDefaultInstance()->restoreNewsletter( $newsletterName );
+ $store = NewsletterStore::getDefaultInstance();
+ $rows = $store->newsletterExistsForMainPage(
$newsletter->getPageId() );
+
+ foreach ( $rows as $row ) {
+ if ( (int)$row->nl_main_page_id ===
$newsletter->getPageId() && (int)$row->nl_active === 1 ) {
+ throw new ErrorPageError(
'newsletter-mainpage-in-use','newsletter-mainpage-in-use' );
+ }
+ }
+ $success = $store->restoreNewsletter( $newsletterName );
if ( $success ) {
return true;
}
diff --git a/i18n/en.json b/i18n/en.json
index 21a59d1..5e3c298 100755
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -22,6 +22,7 @@
"newsletter-create-mainpage-error": "Invalid newsletter main page
entered. Please try again.",
"newsletter-mainpage-non-existent": "The newsletter main page does not
exist. Please enter a valid existing page.",
"newsletter-mainpage-in-use": "An existing newsletter has the same main
page. Please enter another title.",
+ "newsletter-mainpage-in-use-title": "An existing newsletter has the
same main page.",
"newsletter-create-short-description-error": "The description is too
short (less than 30 characters). Please try again.",
"newsletter-subtitlelinks-list": "List of newsletters",
"newsletter-subtitlelinks-create": "Create a new newsletter",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 6e2da62..820ca56 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -29,6 +29,7 @@
"newsletter-create-mainpage-error": "Error message shown on
[[Special:CreateNewsletter]] if the page entered on main page field does not
exist.",
"newsletter-mainpage-non-existent": "Error message shown if the
newsletter main page doesn't exist.",
"newsletter-mainpage-in-use": "Error message shown if the newsletter's
main page is already in use by another newsletter.",
+ "newsletter-mainpage-in-use-title": "Title for
\"newsletter-mainpage-in-use\"",
"newsletter-create-short-description-error": "Error message shown on
[[Special:CreateNewsletter]] if the text entered in the description field is
too short.",
"newsletter-subtitlelinks-list": "Label for link to
[[Special:Newsletters]] shown under the header on Newsletter special
pages.\n\nSee also:\n* {{msg-mw|newsletter-subtitlelinks-create}}",
"newsletter-subtitlelinks-create": "Label for link to
[[Special:CreateNewsletter]] shown under the header on Newsletter special
pages.\n\nSee also:\n* {{msg-mw|newsletter-subtitlelinks-list}}",
diff --git a/includes/NewsletterDb.php b/includes/NewsletterDb.php
index 3564ac3..3faf358 100644
--- a/includes/NewsletterDb.php
+++ b/includes/NewsletterDb.php
@@ -444,7 +444,7 @@
$res = $dbr->select(
'nl_newsletters',
- array( 'nl_main_page_id' ),
+ array( 'nl_main_page_id', 'nl_active' ),
array( 'nl_main_page_id' => $mainPageId )
);
diff --git a/includes/NewsletterEditPage.php b/includes/NewsletterEditPage.php
index 6c51d7f..624bc35 100644
--- a/includes/NewsletterEditPage.php
+++ b/includes/NewsletterEditPage.php
@@ -208,11 +208,12 @@
$dbr = wfGetDB( DB_SLAVE );
$rows = $dbr->select(
'nl_newsletters',
- array( 'nl_name', 'nl_main_page_id' ),
+ array( 'nl_name', 'nl_main_page_id', 'nl_active' ),
$dbr->makeList(
array(
'nl_name' => $data['Name'],
'nl_main_page_id' => $mainPageId,
+ 'nl_active' => 1
),
LIST_OR
)
@@ -221,7 +222,7 @@
foreach ( $rows as $row ) {
if ( $row->nl_name === $data['Name'] ) {
return Status::newFatal(
'newsletter-exist-error', $data['Name'] );
- } elseif ( (int)$row->nl_main_page_id === $mainPageId )
{
+ } elseif ( (int)$row->nl_main_page_id === $mainPageId
&& (int)$row->nl_active === 1 ) {
return Status::newFatal(
'newsletter-mainpage-in-use' );
}
}
@@ -315,7 +316,7 @@
if ( $oldMainPage != $mainPageId ) {
$rows = $store->newsletterExistsForMainPage(
$mainPageId );
foreach ( $rows as $row ) {
- if ( (int)$row->nl_main_page_id === $mainPageId
) {
+ if ( (int)$row->nl_main_page_id === $mainPageId
&& (int)$row->nl_active === 1 ) {
return Status::newFatal(
'newsletter-mainpage-in-use' );
}
}
@@ -423,4 +424,4 @@
return $ids;
}
-}
\ No newline at end of file
+}
diff --git a/includes/NewsletterStore.php b/includes/NewsletterStore.php
index 1605601..51b5936 100644
--- a/includes/NewsletterStore.php
+++ b/includes/NewsletterStore.php
@@ -249,7 +249,7 @@
* @throws MWException
*/
public function newsletterExistsForMainPage( $mainPageId ) {
- return $this->db->newsletterExistsWithName( $mainPageId );
+ return $this->db->newsletterExistsForMainPage( $mainPageId );
}
/**
diff --git a/includes/specials/SpecialNewsletterCreate.php
b/includes/specials/SpecialNewsletterCreate.php
index f6419d5..f6f4441 100644
--- a/includes/specials/SpecialNewsletterCreate.php
+++ b/includes/specials/SpecialNewsletterCreate.php
@@ -90,11 +90,12 @@
$dbr = wfGetDB( DB_SLAVE );
$rows = $dbr->select(
'nl_newsletters',
- array( 'nl_name', 'nl_main_page_id' ),
+ array( 'nl_name', 'nl_main_page_id', 'nl_active' ),
$dbr->makeList(
array(
'nl_name' => $data['Name'],
'nl_main_page_id' => $mainPageId,
+ 'nl_active' => 1
),
LIST_OR
)
@@ -103,7 +104,7 @@
foreach ( $rows as $row ) {
if ( $row->nl_name === $data['Name'] ) {
return Status::newFatal(
'newsletter-exist-error', $data['Name'] );
- } elseif ( (int)$row->nl_main_page_id === $mainPageId )
{
+ } elseif ( (int)$row->nl_main_page_id === $mainPageId
&& (int)$row->nl_active === 1 ) {
return Status::newFatal(
'newsletter-mainpage-in-use' );
}
}
diff --git a/maintenance/deleteUniqueIndex.php
b/maintenance/deleteUniqueIndex.php
new file mode 100644
index 0000000..5c33e5f
--- /dev/null
+++ b/maintenance/deleteUniqueIndex.php
@@ -0,0 +1,28 @@
+<?php
+
+$basePath = getenv( 'MW_INSTALL_PATH' ) !== false ? getenv( 'MW_INSTALL_PATH'
) : __DIR__ . '/../../..';
+
+require_once $basePath . '/maintenance/Maintenance.php';
+
+/**
+ * @author Filip
+ */
+class DeleteUniqueIndex extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->addDescription(
+ "Removes UNIQUE index from nl_main_page_id" );
+
+ $this->requireExtension( 'Newsletter' );
+ }
+
+ public function execute() {
+ $dbw = $this->getDB( DB_MASTER );
+ $dbw->execute('DROP INDEX nl_main_page_id ON nl_newsletters',
__METHOD__);
+ $this->output( "Done!\n" );
+ }
+}
+
+$maintClass = "DeleteUniqueIndex";
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/sql/nl_newsletters.sql b/sql/nl_newsletters.sql
index 8e54a55..c7ed2d0 100644
--- a/sql/nl_newsletters.sql
+++ b/sql/nl_newsletters.sql
@@ -5,7 +5,7 @@
nl_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
nl_name varchar(64) NOT NULL,
nl_desc blob,
- nl_main_page_id int unsigned NOT NULL UNIQUE,
+ nl_main_page_id int unsigned NOT NULL,
nl_active boolean NOT NULL DEFAULT 1
)/*$wgDBTableOptions*/;
--
To view, visit https://gerrit.wikimedia.org/r/328494
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3ce5df266e2b1edfd571a0708c72a25881b71578
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: Filip <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits