]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - extensions/ConfirmEdit/maintenance/DeleteOldFancyCaptchas.php
MediaWiki 1.30.2-scripts
[autoinstallsdev/mediawiki.git] / extensions / ConfirmEdit / maintenance / DeleteOldFancyCaptchas.php
1 <?php
2 /**
3  * Deletes fancy captchas from storage
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  * http://www.gnu.org/copyleft/gpl.html
19  *
20  * @file
21  * @ingroup Maintenance
22  */
23 if ( getenv( 'MW_INSTALL_PATH' ) ) {
24         $IP = getenv( 'MW_INSTALL_PATH' );
25 } else {
26         $IP = __DIR__ . '/../../..';
27 }
28
29 require_once "$IP/maintenance/Maintenance.php";
30
31 /**
32  * Maintenance script that deletes old fancy captchas from storage
33  *
34  * @ingroup Maintenance
35  */
36 class DeleteOldFancyCaptchas extends Maintenance {
37         public function __construct() {
38                 parent::__construct();
39                 $this->mDescription = "Deletes old fancy captchas from storage";
40                 $this->addOption(
41                         "date",
42                         'Delete fancy captchas that were created before this date (e.g. 20170101000000)',
43                         true,
44                         true
45                 );
46                 $this->requireExtension( "FancyCaptcha" );
47         }
48
49         public function execute() {
50                 $instance = ConfirmEditHooks::getInstance();
51                 if ( !( $instance instanceof FancyCaptcha ) ) {
52                         $this->error( "\$wgCaptchaClass is not FancyCaptcha.\n", 1 );
53                 }
54
55                 $countAct = $instance->getCaptchaCount();
56                 $this->output( "Current number of captchas is $countAct.\n" );
57
58                 $backend = $instance->getBackend();
59                 $dir = $backend->getRootStoragePath() . '/captcha-render';
60
61                 $filesToDelete = [];
62                 $deleteDate = $this->getOption( 'date' );
63                 foreach (
64                         $backend->getFileList( [ 'dir' => $dir ] ) as $file
65                 ) {
66                         $fullPath = $dir . '/' . $file;
67                         $timestamp = $backend->getFileTimestamp( [ 'src' => $fullPath ] );
68                         if ( $timestamp < $deleteDate ) {
69                                 $filesToDelete[] = [ 'op' => 'delete', 'src' => $fullPath, ];
70                         }
71                 }
72
73                 $count = count( $filesToDelete );
74
75                 if ( !$count ) {
76                         $this->output( "No old fancy captchas to delete!\n" );
77                         return;
78                 }
79
80                 $ret = $backend->doQuickOperations( $filesToDelete );
81
82                 if ( $ret->isOK() ) {
83                         $this->output( "$count old fancy captchas deleted.\n" );
84                 } else {
85                         $this->output( "Deleting old captchas errored.\n" );
86                         $this->output( implode( "\n", $ret->getErrors() ) );
87                 }
88         }
89 }
90
91 $maintClass = "DeleteOldFancyCaptchas";
92 require_once RUN_MAINTENANCE_IF_MAIN;