3 * Deletes fancy captchas from storage
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.
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.
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
21 * @ingroup Maintenance
23 if ( getenv( 'MW_INSTALL_PATH' ) ) {
24 $IP = getenv( 'MW_INSTALL_PATH' );
26 $IP = __DIR__ . '/../../..';
29 require_once "$IP/maintenance/Maintenance.php";
32 * Maintenance script that deletes old fancy captchas from storage
34 * @ingroup Maintenance
36 class DeleteOldFancyCaptchas extends Maintenance {
37 public function __construct() {
38 parent::__construct();
39 $this->mDescription = "Deletes old fancy captchas from storage";
42 'Delete fancy captchas that were created before this date (e.g. 20170101000000)',
46 $this->requireExtension( "FancyCaptcha" );
49 public function execute() {
50 $instance = ConfirmEditHooks::getInstance();
51 if ( !( $instance instanceof FancyCaptcha ) ) {
52 $this->error( "\$wgCaptchaClass is not FancyCaptcha.\n", 1 );
55 $countAct = $instance->getCaptchaCount();
56 $this->output( "Current number of captchas is $countAct.\n" );
58 $backend = $instance->getBackend();
59 $dir = $backend->getRootStoragePath() . '/captcha-render';
62 $deleteDate = $this->getOption( 'date' );
64 $backend->getFileList( [ 'dir' => $dir ] ) as $file
66 $fullPath = $dir . '/' . $file;
67 $timestamp = $backend->getFileTimestamp( [ 'src' => $fullPath ] );
68 if ( $timestamp < $deleteDate ) {
69 $filesToDelete[] = [ 'op' => 'delete', 'src' => $fullPath, ];
73 $count = count( $filesToDelete );
76 $this->output( "No old fancy captchas to delete!\n" );
80 $ret = $backend->doQuickOperations( $filesToDelete );
83 $this->output( "$count old fancy captchas deleted.\n" );
85 $this->output( "Deleting old captchas errored.\n" );
86 $this->output( implode( "\n", $ret->getErrors() ) );
91 $maintClass = "DeleteOldFancyCaptchas";
92 require_once RUN_MAINTENANCE_IF_MAIN;