MediaWiki  1.34.0
DeleteOldFancyCaptchas.php
Go to the documentation of this file.
1 <?php
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 
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->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  $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;
93 require_once RUN_MAINTENANCE_IF_MAIN;
RUN_MAINTENANCE_IF_MAIN
const RUN_MAINTENANCE_IF_MAIN
Definition: Maintenance.php:39
Maintenance\addDescription
addDescription( $text)
Set the description text.
Definition: Maintenance.php:348
$file
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.
Definition: router.php:42
Maintenance
Abstract maintenance class for quickly writing and churning out maintenance scripts with minimal effo...
Definition: Maintenance.php:82
ConfirmEditHooks\getInstance
static getInstance()
Get the global Captcha instance.
Definition: ConfirmEditHooks.php:13
DeleteOldFancyCaptchas\execute
execute()
Do the actual work.
Definition: DeleteOldFancyCaptchas.php:49
Status\wrap
static wrap( $sv)
Succinct helper method to wrap a StatusValue.
Definition: Status.php:55
Maintenance\addOption
addOption( $name, $description, $required=false, $withArg=false, $shortName=false, $multiOccurrence=false)
Add a parameter to the script.
Definition: Maintenance.php:267
$IP
$IP
Definition: update.php:3
Maintenance\requireExtension
requireExtension( $name)
Indicate that the specified extension must be loaded before the script can run.
Definition: Maintenance.php:638
FancyCaptcha
FancyCaptcha for displaying captchas precomputed by captcha.py.
Definition: FancyCaptcha.php:9
DeleteOldFancyCaptchas\__construct
__construct()
Default constructor.
Definition: DeleteOldFancyCaptchas.php:37
$status
return $status
Definition: SyntaxHighlight.php:347
Maintenance\getOption
getOption( $name, $default=null)
Get an option, or return the default.
Definition: Maintenance.php:302
DeleteOldFancyCaptchas
Maintenance script that deletes old fancy captchas from storage.
Definition: DeleteOldFancyCaptchas.php:36
Maintenance\error
error( $err, $die=0)
Throw an error to the user.
Definition: Maintenance.php:481
Maintenance\output
output( $out, $channel=null)
Throw some output to the user.
Definition: Maintenance.php:453
$maintClass
$maintClass
Definition: DeleteOldFancyCaptchas.php:92