Tinaj1234 has uploaded a new change for review.
https://gerrit.wikimedia.org/r/247843
Change subject: Add filters to customize the search of newsletters
......................................................................
Add filters to customize the search of newsletters
To-be done
* Find an easier way to do the same (optimize code)
* Add qqq entries
Bug: T107557
Change-Id: I78529be036ec58646dab14d6e638356b110f696f
---
M i18n/en.json
M includes/specials/SpecialNewsletters.php
M includes/specials/pagers/NewsletterTablePager.php
3 files changed, 46 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Newsletter
refs/changes/43/247843/1
diff --git a/i18n/en.json b/i18n/en.json
index b533160..34831c9 100755
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -103,5 +103,11 @@
"apihelp-newslettersubscribe-param-id": "ID of the newsletter for which
the subscription should be changed.",
"apihelp-newslettersubscribe-param-do": "Action to do. Should be either
<kbd>subscribe</kbd> or <kbd>unsubscribe</kbd>.",
"apihelp-newslettersubscribe-example-1": "Subscribe to newsletter with
id 1.",
- "apihelp-newslettersubscribe-example-2": "Unsubscribe from newsletter
with id 2."
+ "apihelp-newslettersubscribe-example-2": "Unsubscribe from newsletter
with id 2.",
+ "newsletter-filter-table": "Filter table by: ",
+ "newsletter-filtertableform-filter-section": "Search for Newsletters",
+ "newsletter-filtertable-option-1": "All newsletters",
+ "newsletter-filtertable-option-2": "Newsletters I'm subscribed to",
+ "newsletter-filtertable-option-3": "Newsletters I'm not subscribed to",
+ "newsletter-go-button": "Go"
}
diff --git a/includes/specials/SpecialNewsletters.php
b/includes/specials/SpecialNewsletters.php
index 17ead7c..fd2ddfe 100644
--- a/includes/specials/SpecialNewsletters.php
+++ b/includes/specials/SpecialNewsletters.php
@@ -8,6 +8,8 @@
*/
class SpecialNewsletters extends SpecialPage {
+ private $option = null;
+
public function __construct() {
parent::__construct( 'Newsletters' );
}
@@ -23,7 +25,19 @@
}
$out->setSubtitle( LinksGenerator::getSubtitleLinks() );
+ $filterTableForm = new HTMLForm(
+ $this->getFormFields(),
+ $this->getContexT(),
+ 'newsletter-filtertableform'
+ );
+ $filterTableForm->setSubmitText( $this->msg(
'newsletter-go-button' ) );
+ $filterTableForm->setSubmitCallback( array( $this, 'onSubmit')
);
+ $filterTableForm->setWrapperLegendMsg(
'newsletter-filtertableform-filter-section' );
+ $filterTableForm->show();
+
$pager = new NewsletterTablePager();
+ $pager->getUserOption( $this->option );
+
if ( $pager->getNumRows() > 0 ) {
$out->addParserOutput( $pager->getFullOutput() );
} else {
@@ -31,4 +45,21 @@
}
}
+ public function getFormFields() {
+ return array(
+ 'filter' => array(
+ 'type' => 'select',
+ 'label-message' => 'newsletter-filter-table',
+ 'options' => array(
+ $this->msg(
'newsletter-filtertable-option-1' )->parse() => 0,
+ $this->msg(
'newsletter-filtertable-option-2' )->parse() => 1,
+ $this->msg(
'newsletter-filtertable-option-3' )->parse() => 2
+ ),
+ ),
+ );
+ }
+
+ public function onSubmit( array $formData ) {
+ $this->option = $formData['filter'];
+ }
}
diff --git a/includes/specials/pagers/NewsletterTablePager.php
b/includes/specials/pagers/NewsletterTablePager.php
index 2b3a315..4208481 100644
--- a/includes/specials/pagers/NewsletterTablePager.php
+++ b/includes/specials/pagers/NewsletterTablePager.php
@@ -11,6 +11,7 @@
* @var null|string[]
*/
private $fieldNames = null;
+ private $option = null;
public function __construct( IContextSource $context = null, IDatabase
$readDb = null ) {
if ( $readDb !== null ) {
@@ -48,6 +49,10 @@
'nl_frequency',
'subscribers' => ( '( SELECT COUNT(*) FROM
nl_subscriptions WHERE nls_newsletter_id = nl_id )' ),
),
+ 'conds' => ( $this->option == 1 ) ? array(
$this->mDb->addQuotes( $this->getUser()->getId() ) .
+ ' IN (SELECT nls_subscriber_id FROM
nl_subscriptions WHERE nls_newsletter_id = nl_id )' ) :
+ ( ( $this->option == 2 ) ? array(
$this->mDb->addQuotes( $this->getUser()->getId() ) .
+ ' NOT IN (SELECT nls_subscriber_id FROM
nl_subscriptions WHERE nls_newsletter_id = nl_id )' ) : null ),
'options' => array( 'DISTINCT nl_id' ),
);
@@ -138,4 +143,7 @@
return false;
}
+ public function getUserOption( $value ) {
+ $this->option = $value;
+ }
}
--
To view, visit https://gerrit.wikimedia.org/r/247843
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I78529be036ec58646dab14d6e638356b110f696f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: Tinaj1234 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits