Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 61
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
DeleteInactiveNewsletters
0.00% covered (danger)
0.00%
0 / 56
0.00% covered (danger)
0.00%
0 / 2
20
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 execute
0.00% covered (danger)
0.00%
0 / 51
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3$basePath = getenv( 'MW_INSTALL_PATH' ) !== false ?
4    getenv( 'MW_INSTALL_PATH' ) : __DIR__ . '/../../..';
5
6require_once $basePath . '/maintenance/Maintenance.php';
7
8/**
9 * @author Addshore
10 */
11class DeleteInactiveNewsletters extends Maintenance {
12
13    public function __construct() {
14        parent::__construct();
15        $this->addDescription(
16            "Deletes all inactive newsletters\nThese newsletters will no longer be restorable" );
17        $this->addOption( 'delete', 'Performs the deletion' );
18        $this->requireExtension( 'Newsletter' );
19    }
20
21    public function execute() {
22        $dbw = $this->getDB( DB_PRIMARY );
23
24        if ( !$this->hasOption( 'delete' ) ) {
25            $count = $dbw->selectField(
26                'nl_newsletters',
27                'COUNT(*)',
28                [ 'nl_active' => 0 ],
29                __METHOD__
30            );
31            $this->output( "Found $count inactive newsletters to delete.\n" );
32            $this->output( "Please run the script again with the --delete option "
33                . "to really delete the revisions.\n" );
34            return;
35        }
36
37        $this->output( "Getting inactive newsletters...\n" );
38        $idsToDelete = $dbw->selectFieldValues(
39            'nl_newsletters',
40            'nl_id',
41            [ 'nl_active' => 0 ],
42            __METHOD__
43        );
44
45        if ( !$idsToDelete ) {
46            $this->output( "No newsletters found to be deleted" );
47            return;
48        }
49
50        $dbw->newDeleteQueryBuilder()
51            ->deleteFrom( 'nl_newsletters' )
52            ->where( [ 'nl_id' => $idsToDelete ] )
53            ->caller( __METHOD__ )
54            ->execute();
55        $count = $dbw->affectedRows();
56        $this->output( "Deleted $count inactive newsletters.\n" );
57
58        $dbw->newDeleteQueryBuilder()
59            ->deleteFrom( 'nl_issues' )
60            ->where( [ 'nli_newsletter_id' => $idsToDelete ] )
61            ->caller( __METHOD__ )
62            ->execute();
63        $count = $dbw->affectedRows();
64        $this->output( "Deleted $count inactive newsletter issues.\n" );
65
66        $dbw->newDeleteQueryBuilder()
67            ->deleteFrom( 'nl_publishers' )
68            ->where( [ 'nlp_newsletter_id' => $idsToDelete ] )
69            ->caller( __METHOD__ )
70            ->execute();
71        $count = $dbw->affectedRows();
72        $this->output( "Deleted $count inactive newsletter publishers.\n" );
73
74        $dbw->newDeleteQueryBuilder()
75            ->deleteFrom( 'nl_subscriptions' )
76            ->where( [ 'nls_newsletter_id' => $idsToDelete ] )
77            ->caller( __METHOD__ )
78            ->execute();
79        $count = $dbw->affectedRows();
80        $this->output( "Deleted $count inactive newsletter subscriptions.\n" );
81
82        $this->output( "Done!\n" );
83    }
84
85}
86
87$maintClass = DeleteInactiveNewsletters::class;
88require_once RUN_MAINTENANCE_IF_MAIN;