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 <tinajohnson.1...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits