MediaWiki master
EditConstraintRunner.php
Go to the documentation of this file.
1<?php
8
11use Psr\Log\LoggerInterface;
12
23
24 private LoggerInterface $logger;
25
31 private $constraints = [];
32
36 public function __construct( EditConstraint ...$constraints ) {
37 // TODO consider injecting this?
38 $this->logger = LoggerFactory::getInstance( 'EditConstraintRunner' );
39 $this->addConstraints( ...$constraints );
40 }
41
50 public function addConstraint( EditConstraint $constraint ) {
51 $this->constraints[] = $constraint;
52 }
53
58 public function addConstraints( EditConstraint ...$constraints ) {
59 foreach ( $constraints as $constraint ) {
60 $this->addConstraint( $constraint );
61 }
62 }
63
69 public function checkConstraints(): EditPageStatus {
70 foreach ( $this->constraints as $constraint ) {
71 $status = $constraint->checkConstraint();
72 $this->logConstraintCheck( $constraint, $status );
73
74 if ( !$status->isOK() ) {
75 $status->setFailedConstraint( $constraint );
76 return $status;
77 }
78 }
79
81 }
82
91 $statusValue = EditPageStatus::newGood();
92
93 foreach ( $this->constraints as $constraint ) {
94 $constraintStatus = $constraint->checkConstraint();
95 $this->logConstraintCheck( $constraint, $constraintStatus );
96 $statusValue->merge( $constraintStatus );
97 }
98
99 return $statusValue;
100 }
101
106 private function logConstraintCheck( EditConstraint $constraint, EditPageStatus $status ): void {
107 if ( $status->isOK() ) {
108 $this->logger->debug(
109 'Check for {name} succeeded',
110 [
111 'name' => $constraint->getName(),
112 ]
113 );
114 } else {
115 $this->logger->info(
116 'Check for {name} failed',
117 [
118 'name' => $constraint->getName(),
119 ]
120 );
121 }
122 }
123
124}
if(!defined('MW_SETUP_CALLBACK'))
Definition WebStart.php:69
Back end to process the edit constraints.
addConstraint(EditConstraint $constraint)
Add a constraint to check.
checkAllConstraints()
Run all constraint checks and merge the returned statuses.
addConstraints(EditConstraint ... $constraints)
Add multiple edit constraints to check.
checkConstraints()
Run constraint checks until one fails.
__construct(EditConstraint ... $constraints)
Create a new runner.
Abstract class for all constraints that can prevent edits.
Status returned by edit constraints and other page editing checks.
Create PSR-3 logger objects.
static newGood( $value=null)
Factory function for good results.