MediaWiki REL1_34
DeleteOldFancyCaptchas.php
Go to the documentation of this file.
1<?php
23if ( getenv( 'MW_INSTALL_PATH' ) ) {
24 $IP = getenv( 'MW_INSTALL_PATH' );
25} else {
26 $IP = __DIR__ . '/../../..';
27}
28
29require_once "$IP/maintenance/Maintenance.php";
30
37 public function __construct() {
38 parent::__construct();
39 $this->addDescription( "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->fatalError( "\$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 $status = Status::wrap( $ret );
86 $this->output( "Deleting old captchas errored.\n" );
87 $this->output( $status->getWikiText( false, false, 'en' ) );
88 }
89 }
90}
91
92$maintClass = DeleteOldFancyCaptchas::class;
93require_once RUN_MAINTENANCE_IF_MAIN;
const RUN_MAINTENANCE_IF_MAIN
Maintenance script that deletes old fancy captchas from storage.
__construct()
Default constructor.
FancyCaptcha for displaying captchas precomputed by captcha.py.
Abstract maintenance class for quickly writing and churning out maintenance scripts with minimal effo...
requireExtension( $name)
Indicate that the specified extension must be loaded before the script can run.
output( $out, $channel=null)
Throw some output to the user.
addDescription( $text)
Set the description text.
addOption( $name, $description, $required=false, $withArg=false, $shortName=false, $multiOccurrence=false)
Add a parameter to the script.
getOption( $name, $default=null)
Get an option, or return the default.
fatalError( $msg, $exitCode=1)
Output a message and terminate the current script.
$IP
Definition update.php:3
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.
Definition router.php:42